@@ -1,3 +1,4 @@
2=* dude dude:gall
3=* dude dude:gall
@@ -16,144 +17,192 @@
17+$ sync-state [nun=@ta kid=(unit desk) let=@ud]
18+$ sync-state [nun=@ta kid=(unit desk) let=@ud]
18+$ sink (unit [her=@p sud=desk kid=(unit desk) let=@ud])
19+$ sink (unit [her=@p sud=desk kid=(unit desk) let=@ud])
20+:: +truncate-hash: get last 5 digits of hash and convert to tape
25+ (slag 2 <`@uv`(mod hash 0v1.00000)>)
26+:: +report-prep: get data required for reports
31+ =/ wen (scot %da now)
32+ :* .^(rock:tire %cx /[ego]//[wen]/tire)
33+ .^(=cone %cx /[ego]//[wen]/domes)
34+ .^((map desk [ship desk]) %gx /[ego]/hood/[wen]/kiln/sources/noun)
35+ .^ (map [desk ship desk] sync-state) %gx
36+ /[ego]/hood/[wen]/kiln/syncs/noun
39+:: +report-vats: report on all desk installations
19++ report-vats
41++ report-vats
20− =| $: =cone
42+ |= [our=@p now=@da desks=(list desk) filt=@tas verb=?]
21− sor=(map desk [ship desk])
43+ ^- tang
22− zyn=(map [desk ship desk] sync-state)
44+ =/ ego (scot %p our)
23− desks=(set desk)
45+ =/ wen (scot %da now)
24− =pikes
46+ =/ prep (report-prep our now)
25− =rock:tire:clay
47+ ?~ filt
50+ |=(syd=@tas (report-vat prep our now syd verb))
54+ (sort ~(tap in -.prep) |=([[a=@ *] b=@ *] !(aor a b)))
55+ |=([[a=@ *] [b=@ *]] ?|(=(a %kids) =(b %base)))
56+ %+ skip ~(tap in -.prep)
57+ |=([syd=@tas *] =(~ (find ~[syd] desks)))
60+ %+ sort ~(tap by wic:(~(got by -.prep) %base))
61+ |=([[* a=@ud] [* b=@ud]] (gth a b))
62+ ?~ base-wic ~[leaf+"%base already up-to-date"]
63+ =/ blockers=(list desk)
65+ %+ skip ~(tap in -.prep)
66+ |= [* [zest=@tas wic=(set weft)]]
68+ (~(has in wic) i.base-wic)
70+ ?~ blockers ~[leaf+"No desks blocking upgrade, run |bump to apply"]
71+ :- [%rose [" %" "To unblock upgrade run |suspend %" ""] blockers]
73+ %+ turn (flop blockers)
74+ |=(syd=desk (report-vat prep our now syd verb))
82+ |=([syd=desk *] =(ud:.^(cass %cw /[ego]/[syd]/[wen]) 0))
86+ |=([* [zest=@tas *]] =(zest %live))
90+ |= [syd=@tas [zest=@tas *]]
93+ =(ud:.^(cass %cw /[ego]/[syd]/[wen]) 0)
28− |_ [our=@p now=@da]
95+ ::
29− +* ego (scot %p our)
96+ %exists-not
30− wen (scot %da now)
97+ %+ skim deks
31− ++ $
98+ |=([syd=desk *] =(ud:.^(cass %cw /[ego]/[syd]/[wen]) 0))
33− (report-vats:abed +<)
36− cone .^(^cone %cx /[ego]//[wen]/domes)
37− sor .^((map desk [ship desk]) %gx /[ego]/hood/[wen]/kiln/sources/noun)
38− zyn .^ (map [desk ship desk] sync-state) %gx
39− /[ego]/hood/[wen]/kiln/syncs/noun
41− desks .^((set desk) %cd /[ego]/base/[wen])
42− pikes .^(^pikes %gx /[ego]/hood/[wen]/kiln/pikes/kiln-pikes)
43− rock .^(rock:tire:clay %cx /[ego]//[wen]/tire)
44− kel (weft .^(* cx/(en-beam [our %base da+now] /sys/kelvin)))
46− ++ vat-info
100+ |=([syd=desk *] (report-vat prep our now syd verb))
47− |= desk=_`desk`%base
101+:: +report-vat: report on a single desk installation
48− =/ pike (~(got by pikes) desk)
102+::
49− =/ zest -:(~(got by rock) desk)
103+++ report-vat
50− =/ kel-path /[ego]/[desk]/[wen]/sys/kelvin
104+ |= $: $: tyr=rock:tire =cone sor=(map desk [ship desk])
51− =/ sink=sink
105+ zyn=(map [desk ship desk] sync-state)
52− ?~ s=(~(get by sor) desk)
54− ?~ z=(~(get by zyn) desk u.s)
57− =/ hash .^(@uv %cz /[ego]/[desk]/[wen])
58− =/ dek (~(got by rock) desk)
59− =/ =dome (~(got by cone) our desk)
60− =+ .^(=waft %cx kel-path)
61− :* &1 &2 &3 &4 &5 &6 &7 &8
63− ^= running =(%live zest)
64− ^= suspended =(%dead zest)
65− ^= exists !=(ud.cass 0):.^(=cass %cw /[ego]/[desk]/[wen])
66− ^= bad-desk ?!(.^(? %cu kel-path))
67− ^= meb :: =(list @uv)
69− (mergebase-hashes our desk now her.u.sink sud.u.sink)
70− ^- [on=(list [@tas ?]) of=(list [@tas ?])]
71− (skid ~(tap by ren.dome) |=([* ?] +<+))
76− %held "suspended until next update"
78− ^- kul=tape
107+ our=ship now=@da syd=desk verb=?
81− ~(tap in (waft-to-wefts:clay waft))
87− (welp " {<[lal num]:weft>}" tape)
91− !(~(has in wic.pike) kel)
102− %+ turn ~(tap in desks)
103− |= =desk (vat-info desk)
105− :: just unconditionally show "bad" desks, whatever that means
107− &(suspended show-suspended)
108− &(running show-running)
109− &(blocking show-blocking)
110− &(!exists show-nonexistent)
112− |= =vat-info
109+ ^- tang
113− :+ %rose [" " " " "::"]
110+ =- :: hack to force wrapped rendering
114− :- leaf+"{<desk.vat-info>}"
111+ ::
115− %- flop
112+ :: edg=6 empirically prevents dedent
116− %- report-vat
113+ ::
117− [verb vat-info]
114+ %+ roll
118− ++ report-vat
115+ (~(win re -) [0 6])
119− |= [verb=? vat-info]
116+ |=([a=tape b=(list @t)] [(crip a) b])
121− ?: !exists
118+ ^- tank
119+ =/ ego (scot %p our)
120+ =/ wen (scot %da now)
121+ =+ .^(=cass %cw /[ego]/[syd]/[wen])
122− ~[leaf+"desk does not yet exist: {<desk>}"]
123+ leaf+"desk does not yet exist: {<syd>}"
123− ?: =(%kids desk)
124+ ?: =(%kids syd)
125+ =+ .^(hash=@uv %cz /[ego]/[syd]/[wen])
124− ~[leaf+"%kids %cz hash: {<hash>}"]
126+ leaf+"%kids %cz hash: {<hash>}"
125− ?: bad-desk
127+ =/ kel-path
126− ~[leaf+"bad desk: {<desk>}"]
129− :~ leaf/"/sys/kelvin: {kul}"
128+ /[ego]/[syd]/[wen]/sys/kelvin
130− leaf/"app status: {sat}"
129+ ?. .^(? %cu kel-path)
131− leaf/"publishing ship: {?~(sink <~> <(get-publisher our desk now)>)}"
130+ leaf+"bad desk: {<syd>}"
132− leaf/"pending updates: {<`(list [@tas @ud])`~(tap in wic.dek)>}"
131+ =+ .^(=waft %cx kel-path)
133− ==
132+ :+ %rose ["" "{<syd>}" "::"]
134− :~ leaf/"/sys/kelvin: {kul}"
133+ ^- tang
135− leaf/"base hash: {?.(=(1 (lent meb)) <meb> <(head meb)>)}"
134+ =/ hash .^(@uv %cz /[ego]/[syd]/[wen])
136− leaf/"%cz hash: {<hash>}"
135+ =/ =sink
137− ::
136+ ?~ s=(~(get by sor) syd)
138− leaf/"app status: {sat}"
137+ ~
139− leaf/"force on: {?:(=(~ on) "~" <on>)}"
138+ ?~ z=(~(get by zyn) syd u.s)
140− leaf/"force off: {?:(=(~ of) "~" <of>)}"
139+ ~
141− ::
140+ `[-.u.s +.u.s +.u.z]
142− leaf/"publishing ship: {?~(sink <~> <(get-publisher our desk now)>)}"
141+ =/ meb=(list @uv)
143− leaf/"updates: {?~(sink "local" "remote")}"
142+ ?~ sink [hash]~
144− leaf/"source ship: {?~(sink <~> <her.u.sink>)}"
143+ (mergebase-hashes our syd now her.u.sink sud.u.sink)
145− leaf/"source desk: {?~(sink <~> <sud.u.sink>)}"
144+ =/ dek (~(got by tyr) syd)
146− leaf/"source aeon: {?~(sink <~> <let.u.sink>)}"
145+ =/ sat
147− leaf/"kids desk: {?~(sink <~> ?~(kid.u.sink <~> <u.kid.u.sink>))}"
146+ ?- zest.dek
148− leaf/"pending updates: {<`(list [@tas @ud])`~(tap in wic.dek)>}"
147+ %live "running"
149+ %held "suspended until next update"
154+ ~(tap in (waft-to-wefts:clay waft))
160+ (welp " {<[lal num]:weft>}" tape)
162+ =/ cut=(list tape) (turn meb truncate-hash)
166+ ?: =(1 len) (head cut)
167+ "~[{`tape`(zing (join " " `(list tape)`cut))}]"
168+ :~ leaf/"/sys/kelvin: {kul}"
169+ leaf/"base hash ends in: {base-hash}"
170+ leaf/"%cz hash ends in: {(truncate-hash hash)}"
171+ leaf/"app status: {sat}"
172+ leaf/"pending updates: {<`(list [@tas @ud])`~(tap in wic.dek)>}"
175+ =/ [on=(list [@tas ?]) of=(list [@tas ?])]
176+ =/ =dome (~(got by cone) our syd)
177+ (skid ~(tap by ren.dome) |=([* ?] +<+))
178+ :~ leaf/"/sys/kelvin: {kul}"
179+ leaf/"base hash: {?.(=(1 (lent meb)) <meb> <(head meb)>)}"
180+ leaf/"%cz hash: {<hash>}"
182+ leaf/"app status: {sat}"
183+ leaf/"force on: {<(sort (turn on head) aor)>}"
184+ leaf/"force off: {<(sort (turn of head) aor)>}"
186+ leaf/"publishing ship: {?~(sink <~> <(get-publisher our syd now)>)}"
187+ leaf/"updates: {?~(sink "local" "remote")}"
188+ leaf/"source ship: {?~(sink <~> <her.u.sink>)}"
189+ leaf/"source desk: {?~(sink <~> <sud.u.sink>)}"
190+ leaf/"source aeon: {?~(sink <~> <let.u.sink>)}"
191+ leaf/"kids desk: {?~(sink <~> ?~(kid.u.sink <~> <u.kid.u.sink>))}"
192+ leaf/"pending updates: {<`(list [@tas @ud])`~(tap in wic.dek)>}"
194+:: +report-kids: non-vat cz hash report for kids desk
150− ++ report-kids
196+++ report-kids
197+ |= [our=ship now=@da]
200+ =/ ego (scot %p our)
201+ =/ wen (scot %da now)
152− ?. (~(has in .^((set desk) %cd /[ego]//[wen])) %kids)
202+ ?. (~(has in .^((set desk) %cd /[ego]//[wen])) syd)
153− leaf/"no %kids desk"
203+ leaf/"no %kids desk"
154− =+ .^(hash=@uv %cz /[ego]/kids/[wen])
204+ =+ .^(hash=@uv %cz /[ego]/[syd]/[wen])
155− leaf/"%kids %cz hash: {<hash>}"
205+ leaf/"%kids %cz hash: {<hash>}"
157:: +read-bill-foreign: read /desk/bill from a foreign desk
206:: +read-bill-foreign: read /desk/bill from a foreign desk
159++ read-bill-foreign
208++ read-bill-foreign
@@ -206,7 +255,7 @@
206 |= [our=ship =desk now=@da]
255 |= [our=ship =desk now=@da]
207 ^- (list [=dude live=?])
256 ^- (list [=dude live=?])
208 %~ tap in
257 %~ tap in
209− .^((set [=dude live=?]) ge+/(scot %p our)/[desk]/(scot %da now))
258+ .^((set [=dude live=?]) ge+/(scot %p our)/[desk]/(scot %da now)/$)
211++ mergebase-hashes
260++ mergebase-hashes
212 |= [our=@p syd=desk now=@da her=ship sud=desk]
261 |= [our=@p syd=desk now=@da her=ship sud=desk]