diff --git a/ape/gh.hoon b/ape/gh.hoon index 6af53da08..f77f45a00 100644 --- a/ape/gh.hoon +++ b/ape/gh.hoon @@ -2,25 +2,25 @@ :: :: You can interact with this in a few different ways: :: -:: - .^(%gx /=gh=/read-unauth{/endpoint}) or subscribe to -:: /scry/x/read-unauth{/endpoint} for unauthenticated reads. -:: -:: - .^(%gx /=gh=/read-auth{/endpoint}) or subscribe to -:: /scry/x/read-auth{/endpoint} for authenticated reads. +:: - .^(%gx /=gh=/read{/endpoint}) or subscribe to +:: /scry/x/read{/endpoint} for authenticated reads. :: :: - subscribe to /scry/x/listen/{owner}/{repo}/{events...} :: for webhook-powered event notifications. For event list, :: see https://developer.github.com/webhooks/. :: :: See the %github app for example usage. +:: /? 314 /- gh => |% ++ move (pair bone card) ++ sub-result - $% [%json json] + $% [%arch arch] [%gh-issues issues:gh] [%gh-issue-comment issue-comment:gh] + [%json json] + [%null ~] == ++ card $% [%diff sub-result] @@ -38,44 +38,45 @@ :: This core manages everything related to a particular request. :: :: Each request has a particular 'style', which is currently -:: one of 'read-auth', 'read-unauth', or 'listen'. ++scry -:: handles all three types of requests. +:: one of 'read', or 'listen'. ++scry handles all three types +:: of requests. +:: ++ help - |= [style=@tas pax=path] + |= [ren=care style=@tas pax=path arg=path] =| mow=(list move) |% :: Resolve core. + :: ++ abet ^- [(list move) _+>.$] [(flop mow) +>.$] :: :: Append path to api.github.com and parse to a purl. + :: ++ real-pax (scan "https://api.github.com{<`path`pax>}" auri:epur) :: - :: Send a hiss with the correct authentication + :: Send a hiss + :: ++ send-hiss - |= [aut=? hiz=hiss] + |= hiz=hiss ^+ +> - =+ wir=`wire`[%x (scot %ud cnt) pax] - =+ ^= new-move - ?. aut [ost.hid %them wir ~ hiz] - [ost.hid %hiss wir `~ %httr [%hiss hiz]] + =+ wir=`wire`[ren (scot %ud cnt) (scot %uv (jam arg)) style pax] + =+ new-move=[ost.hid %hiss wir `~ %httr [%hiss hiz]] +>.$(mow [new-move mow]) :: :: Decide how to handle a request based on its style. + :: ++ scry ^+ . - =- ~& [%requesting -] - ?+ style ~|(%invalid-style !!) - %read-unauth read-unauth - %read-auth read-auth - %listen listen + %read read + %listen listen == :: - ++ read-unauth (send-hiss | real-pax %get ~ ~) - ++ read-auth (send-hiss & real-pax %get ~ ~) + ++ read (send-hiss real-pax %get ~ ~) :: :: Create or update a webhook to listen for a set of events. + :: ++ listen ^+ . ?> ?=([@ @ *] pax) @@ -90,6 +91,7 @@ $(events t.events) :: :: Set up a webhook. + :: ++ create-hook |= event=@t ^+ +> @@ -102,8 +104,7 @@ *[id=@t listeners=(set bone)] [id (~(put in listeners) ost.hid)] %- send-hiss - :* & - %+ scan + :* %+ scan =+ [(trip i.pax) (trip i.t.pax)] "https://api.github.com/repos/{-<}/{->}/hooks" auri:epur @@ -123,6 +124,7 @@ == :: :: Add current bone to the list of subscribers for this event. + :: ++ update-hook |= event=@t ^+ +> @@ -140,6 +142,7 @@ :: mark that we shouldn't get from a webhook, we reject it. :: Otherwise, we spam out the event to everyone who's listening :: for that event. +:: ++ poke |= response=hook-response ^- [(list move) _+>.$] @@ -159,33 +162,71 @@ :: :: After some sanity checking we hand control to ++scry in :: ++help. -++ peer-scry-x +:: +++ peer-scry |= pax=path ^- [(list move) _+>.$] - ?> ?=(^ pax) - =- ~& [%peered -] - - [abet(cnt now.hid)]:scry:(help i.pax t.pax) + ?> ?=([care ^] pax) + :: =- ~& [%peered -] - + [abet(cnt now.hid)]:scry:(help i.pax i.t.pax t.t.pax ~) :: :: HTTP response. We make sure the response is good, then :: produce the result (as JSON) to whoever sent the request. -++ sigh-httr-x thou-x -++ thou-x +:: +++ sigh-httr |= [way=wire res=httr] ^- [(list move) _+>.$] - ?> ?=([@ *] way) - :_ +>.$ :_ ~ - :^ ost.hid %diff %json - ?~ r.res - (jobe err/s/%empty-response code/(jone p.res) ~) - =+ (rush q.u.r.res apex:poja) - ?~ - - (jobe err/s/%bad-json code/(jone p.res) body/s/q.u.r.res ~) - ?. =(2 (div p.res 100)) - (jobe err/s/%request-rejected code/(jone p.res) msg/u.- ~) - u.- + ?> ?=([care @ @ @ *] way) + =+ arg=(path (cue (slav %uv i.t.t.way))) + =- ?: ?=(%& -<) + [[ost.hid %diff p]~ +>.$] + ?~ t.t.t.t.way + [[ost.hid %diff p]~ +>.$] + =+ len=(lent t.t.t.t.way) + =+ pax=`path`(scag (dec len) `path`t.t.t.t.way) + =+ new-arg=`path`(slag (dec len) `path`t.t.t.t.way) + =- ~& [%giving -] - + [abet(cnt now.hid)]:scry:(help i.way i.t.t.t.way pax new-arg) + ^- (each sub-result sub-result) + ?+ i.way `null/~ + %x + ?~ r.res + [%| %json (jobe err/s/%empty-response code/(jone p.res) ~)] + =+ jon=(rush q.u.r.res apex:poja) + ?~ jon + [%| %json (jobe err/s/%bad-json code/(jone p.res) body/s/q.u.r.res ~)] + ?. =(2 (div p.res 100)) + [%| %json (jobe err/s/%request-rejected code/(jone p.res) msg/u.jon ~)] + |- ^- (each sub-result sub-result) + ?~ arg + `json/u.jon + =+ dir=((om:jo some) u.jon) + ?~ dir + [%| %json (jobe err/s/%json-not-object code/(jone p.res) body/u.jon ~)] + =+ new-jon=(~(get by u.dir) i.arg) + $(arg t.arg, u.jon ?~(new-jon ~ u.new-jon)) + :: + %y + ?~ r.res + ~& [err/s/%empty-response code/(jone p.res)] + [%| arch/*arch] + =+ jon=(rush q.u.r.res apex:poja) + ?~ jon + ~& [err/s/%bad-json code/(jone p.res) body/s/q.u.r.res] + [%| arch/*arch] + ?. =(2 (div p.res 100)) + ~& [err/s/%request-rejected code/(jone p.res) msg/u.jon] + [%| arch/*arch] + =+ dir=((om:jo some) u.jon) + ?~ dir + ~& [err/s/%json-not-object code/(jone p.res) body/u.jon] + [%| arch/*arch] + [%& %arch `(shax (jam u.jon)) (~(run by u.dir) ,~)] + == :: :: We can't actually give the response to pretty much anything :: without blocking, so we just block unconditionally. +:: ++ peek |= [ren=@tas tyl=path] ^- (unit (unit (pair mark ,*))) diff --git a/ape/github.hoon b/ape/github.hoon index b327032a8..41fc653b4 100644 --- a/ape/github.hoon +++ b/ape/github.hoon @@ -1,8 +1,7 @@ :: This is a command-line ui for the %gh Github driver. :: :: Usage: -:: :github &path /read-unauth{/endpoint} -:: :github &path /read-auth{/endpoint} +:: :github &path /read{/endpoint} :: :github &path /listen/{owner}/{repo}/{events...} :: /- gh diff --git a/gen/cat.hoon b/gen/cat.hoon index b59e13c51..597b994f7 100644 --- a/gen/cat.hoon +++ b/gen/cat.hoon @@ -8,16 +8,16 @@ :::: :: :- %say -|= [^ [arg=(list path)] ~] +|= [^ [arg=(list path)] vane=?(%c %g)] =- tang/(flop `tang`(zing -)) %+ turn arg |= pax=path ^- tang -=+ ark=;;(arch .^(%cy pax)) +=+ ark=;;(arch .^((cat 3 vane %y) pax)) ?^ fil.ark ?: =(%sched -:(flop pax)) - [>;;((map ,@da cord) .^(%cx pax))<]~ - [leaf/(spud pax) (pretty-file .^(%cx pax))] + [>;;((map ,@da cord) .^((cat 3 vane %x) pax))<]~ + [leaf/(spud pax) (pretty-file .^((cat 3 vane %x) pax))] ?- dir.ark :: handle ambiguity ~ [rose/[" " `~]^~[leaf/"~" (smyt pax)]]~ @@ -26,6 +26,6 @@ * =- [palm/[": " ``~]^-]~ :~ rose/[" " `~]^~[leaf/"*" (smyt pax)] - `tank`(subdir pax dir.ark) + `tank`(subdir vane pax dir.ark) == == diff --git a/gen/ls.hoon b/gen/ls.hoon index f5e57f2b1..227c590a3 100644 --- a/gen/ls.hoon +++ b/gen/ls.hoon @@ -7,6 +7,6 @@ :::: :: :- %say -|= [^ [arg=path ~] ~] -=+ lon=((hard arch) .^(%cy arg)) -tang/[?~(dir.lon leaf/"~" (subdir arg dir.lon))]~ +|= [^ [arg=path ~] vane=?(%c %g)] +=+ lon=((hard arch) .^((cat 3 vane %y) arg)) +tang/[?~(dir.lon leaf/"~" (subdir vane arg dir.lon))]~ diff --git a/gen/ls/subdir.hoon b/gen/ls/subdir.hoon index 1bdd6f279..a90fa1cd2 100644 --- a/gen/ls/subdir.hoon +++ b/gen/ls/subdir.hoon @@ -1,6 +1,6 @@ |% ++ subdir - |= [pax=path des=(map ,@t ,~)] + |= [vane=?(%c %g) pax=path des=(map ,@t ,~)] ^- tank :+ %rose [" " `~] %+ turn (sort (~(tap by des)) aor) @@ -9,7 +9,7 @@ =- :+ %rose ["/" ~ ?:(dir "/" ~)] (turn paf |=(a=span leaf/(trip a))) |- ^- [dir=? paf=path] - =+ arf=;;(arch .^(%cy (weld pax paf))) + =+ arf=;;(arch .^((cat 3 vane %y) (weld pax paf))) ?^ fil.arf [| paf] ?~ dir.arf diff --git a/pub/test.sched b/pub/test.sched deleted file mode 100644 index 799b47707..000000000 --- a/pub/test.sched +++ /dev/null @@ -1,3 +0,0 @@ -~1970.1.1 Hello world -~1970.1.2 Reordered for goo reason -~1970.2.1 Hallo world? diff --git a/pub/work/test.work-task b/pub/work/test.work-task deleted file mode 100644 index fcf9438a3..000000000 --- a/pub/work/test.work-task +++ /dev/null @@ -1,8 +0,0 @@ -0v0_~1999.1.1 2~1999.1.2 ~1999.5.20 - Tagged! -Yoooo -~fyr>~zod - Testin -~doznec ~2015.1.3 - how long has - this been around?