mirror of
https://github.com/ilyakooo0/urbit.git
synced 2024-11-14 04:19:22 +03:00
commit
e094ca44de
@ -133,6 +133,7 @@
|
||||
++ coup-kiln-spam (wrap take-coup-spam):from-kiln
|
||||
++ diff-sole-effect-drum-phat (wrap diff-sole-effect-phat):from-drum
|
||||
++ init-helm |=({way/wire *} [~ +>])
|
||||
++ mack-kiln (wrap mack):from-kiln
|
||||
++ made-write (wrap made):from-write
|
||||
++ made-kiln (wrap take-made):from-kiln
|
||||
++ mere-kiln (wrap take-mere):from-kiln
|
||||
@ -186,6 +187,7 @@
|
||||
++ poke-kiln-overload (wrap poke-overload):from-kiln
|
||||
++ poke-kiln-unmount (wrap poke-unmount):from-kiln
|
||||
++ poke-kiln-unsync (wrap poke-unsync):from-kiln
|
||||
++ poke-kiln-permission (wrap poke-permission):from-kiln
|
||||
++ poke-womb-invite (wrap poke-invite):from-womb
|
||||
++ poke-womb-save (wrap poke-save):from-womb
|
||||
++ poke-womb-obey (wrap poke-obey):from-womb
|
||||
|
10
gen/hood/private.hoon
Normal file
10
gen/hood/private.hoon
Normal file
@ -0,0 +1,10 @@
|
||||
:: Kiln: make (subtree in) desk privately readable.
|
||||
::
|
||||
:::: /gen/hood/private/hoon
|
||||
::
|
||||
:- %say
|
||||
|= $: {now/@da eny/@uvJ bec/beak}
|
||||
{arg/{des/desk may/?($~ {pax/path $~})} $~}
|
||||
==
|
||||
:- %kiln-permission
|
||||
[des ?~(may / pax.may) |]:arg
|
10
gen/hood/public.hoon
Normal file
10
gen/hood/public.hoon
Normal file
@ -0,0 +1,10 @@
|
||||
:: Kiln: make (subtree in) desk publicly readable.
|
||||
::
|
||||
:::: /gen/hood/public/hoon
|
||||
::
|
||||
:- %say
|
||||
|= $: {now/@da eny/@uvJ bec/beak}
|
||||
{arg/{des/desk may/?($~ {pax/path $~})} $~}
|
||||
==
|
||||
:- %kiln-permission
|
||||
[des ?~(may / pax.may) &]:arg
|
@ -67,6 +67,7 @@
|
||||
{$dirk wire @tas} ::
|
||||
{$ogre wire $@(@tas beam)} ::
|
||||
{$merg wire @p @tas @p @tas case germ} ::
|
||||
{$perm wire ship desk path rite:clay} ::
|
||||
{$poke wire dock pear} ::
|
||||
{$wipe wire @p $~} ::
|
||||
{$wait wire @da} ::
|
||||
@ -79,6 +80,12 @@
|
||||
{$helm-reset $~} ::
|
||||
== ::
|
||||
++ move (pair bone card) :: user-level move
|
||||
++ riot ::tmp up-to-date riot
|
||||
%- unit
|
||||
$: p/{p/?($d $p $u $v $w $x $y $z) q/case r/desk}
|
||||
q/path
|
||||
r/cage
|
||||
==
|
||||
--
|
||||
|_ moz/(list move)
|
||||
++ abet :: resolve
|
||||
@ -185,6 +192,12 @@
|
||||
=+ old=;;((map @da cord) (fall (file where) ~))
|
||||
`(foal where %sched !>((~(put by old) tym eve)))
|
||||
::
|
||||
++ poke-permission
|
||||
|= {syd/desk pax/path pub/?}
|
||||
=< abet
|
||||
%^ emit %perm /kiln/permission
|
||||
[our syd pax %r ~ ?:(pub %black %white) ~]
|
||||
::
|
||||
++ poke-autoload |=(lod/(unit ?) abet:(poke:autoload lod))
|
||||
++ poke-start-autoload |=($~ abet:start:autoload)
|
||||
::
|
||||
@ -267,6 +280,11 @@
|
||||
::
|
||||
++ poke-wipe-ford |=($~ abet:(emit %wipe /kiln our ~))
|
||||
::
|
||||
++ mack
|
||||
|= {way/wire saw/(unit tang)}
|
||||
~? ?=(^ saw) [%kiln-nack u.saw]
|
||||
abet
|
||||
::
|
||||
++ take |=(way/wire ?>(?=({@ $~} way) (work i.way))) :: general handler
|
||||
++ take-mere ::
|
||||
|= {way/wire are/(each (set path) (pair term tang))}
|
||||
|
@ -43,31 +43,33 @@
|
||||
::
|
||||
:: Type of request.
|
||||
::
|
||||
:: %d produces a set of desks, %u checks for existence, %v produces a ++dome of
|
||||
:: all desk data, %w with a time or label case gets the aeon at that case, %w
|
||||
:: with a number case is not recommended, %x gets file contents, %y gets a
|
||||
:: directory listing, and %z gets a recursive hash of the file contents and
|
||||
:: children.
|
||||
:: %d produces a set of desks, %p gets file permissions, %u checks for
|
||||
:: existence, %v produces a ++dome of all desk data, %w with a time or label
|
||||
:: case gets the aeon at that case, %w with a number case is not recommended,
|
||||
:: %x gets file contents, %y gets a directory listing, and %z gets a recursive
|
||||
:: hash of the file contents and children.
|
||||
::
|
||||
:: ++ care ?($d $u $v $w $x $y $z)
|
||||
:: ++ care ?($d $p $u $v $w $x $y $z)
|
||||
::
|
||||
:: Keeps track of subscribers.
|
||||
::
|
||||
:: A map of requests to a set of all the subscribers who should be notified
|
||||
:: when the request is filled/updated.
|
||||
::
|
||||
++ cult (jug rove duct)
|
||||
++ cult (jug wove duct)
|
||||
::
|
||||
:: Domestic desk state.
|
||||
::
|
||||
:: Includes subscriber list, dome (desk content), possible commit state (for
|
||||
:: local changes), and possible merge state (for incoming merges).
|
||||
:: local changes), possible merge state (for incoming merges), and permissions.
|
||||
::
|
||||
++ dojo
|
||||
$: qyx/cult :: subscribers
|
||||
dom/dome :: desk state
|
||||
dok/(unit dork) :: commit state
|
||||
mer/(unit mery) :: merge state
|
||||
per/regs :: read perms per path
|
||||
pew/regs :: write perms per path
|
||||
==
|
||||
::
|
||||
:: Desk state.
|
||||
@ -183,6 +185,7 @@
|
||||
:: -- `mon` is a collection of mount points (mount point name to urbit
|
||||
:: location).
|
||||
:: -- `hez` is the unix duct that %ergo's should be sent to.
|
||||
:: -- `cez` is a collection of named permission groups.
|
||||
::
|
||||
++ raft :: filesystem
|
||||
$: fat/(map ship room) :: domestic
|
||||
@ -190,6 +193,7 @@
|
||||
ran/rang :: hashes
|
||||
mon/(map term beam) :: mount points
|
||||
hez/(unit duct) :: sync duct
|
||||
cez/(map @ta crew) :: permission groups
|
||||
== ::
|
||||
::
|
||||
:: Object store.
|
||||
@ -238,6 +242,8 @@
|
||||
dom/dome :: revision state
|
||||
dok/(unit dork) :: outstanding diffs
|
||||
mer/(unit mery) :: outstanding merges
|
||||
per/regs :: read perms per path
|
||||
pew/regs :: write perms per path
|
||||
== ::
|
||||
::
|
||||
:: Foreign request manager.
|
||||
@ -271,6 +277,7 @@
|
||||
:: Generally used when we store a request in our state somewhere.
|
||||
::
|
||||
++ cach (unit (unit (each cage lobe))) :: cached result
|
||||
++ wove {p/(unit ship) q/rove} :: stored source + req
|
||||
++ rove :: stored request
|
||||
$% {$sing p/mood} :: single request
|
||||
{$next p/mood q/cach} :: next version
|
||||
@ -323,6 +330,7 @@
|
||||
$% {$info p/@p q/@tas r/nori} :: internal edit
|
||||
{$merg p/@p q/@tas r/@p s/@tas t/case u/germ} :: merge desks
|
||||
{$warp p/sock q/riff} ::
|
||||
{$werp p/ship q/sock r/riff} ::
|
||||
== == ::
|
||||
$: $d ::
|
||||
$% {$flog p/{$crud p/@tas q/(list tank)}} :: to %dill
|
||||
@ -346,7 +354,7 @@
|
||||
{$writ p/riot} ::
|
||||
== == ::
|
||||
$: $f ::
|
||||
$% {$made p/@uvH q/gage:ford} ::
|
||||
$% {$made p/@uvH q/gage:ford} ::
|
||||
== == ::
|
||||
$: $t ::
|
||||
$% {$wake $~} :: timer activate
|
||||
@ -421,6 +429,8 @@
|
||||
dom=*dome
|
||||
dok=~
|
||||
mer=~
|
||||
per=~
|
||||
pew=~
|
||||
==
|
||||
:- `hun.u.rom
|
||||
=+ jod=(fall (~(get by dos.u.rom) syd) *dojo)
|
||||
@ -430,6 +440,8 @@
|
||||
dom=dom.jod
|
||||
dok=dok.jod
|
||||
mer=mer.jod
|
||||
per=per.jod
|
||||
pew=pew.jod
|
||||
==
|
||||
=* red ->
|
||||
=| mow/(list move)
|
||||
@ -440,21 +452,21 @@
|
||||
?~ rom
|
||||
=+ rug=(~(put by rus:(fall (~(get by hoy.ruf) her) *rung)) syd red)
|
||||
ruf(hoy (~(put by hoy.ruf) her rug))
|
||||
=+ dos=(~(put by dos.u.rom) syd [qyx dom dok mer])
|
||||
=+ dos=(~(put by dos.u.rom) syd [qyx dom dok mer per pew])
|
||||
ruf(fat (~(put by fat.ruf) her [(need hun) dos]))
|
||||
(flop mow)
|
||||
::
|
||||
:: Handle `%sing` requests
|
||||
::
|
||||
++ aver
|
||||
|= mun/mood
|
||||
|= {for/(unit ship) mun/mood}
|
||||
^- (unit (unit (each cage lobe)))
|
||||
=+ ezy=?~(ref ~ (~(get by haw.u.ref) mun))
|
||||
?^ ezy
|
||||
`(bind u.ezy |=(a/cage [%& a]))
|
||||
=+ nao=(case-to-aeon:ze q.mun)
|
||||
:: ~& [%aver-mun nao [%from syd lim q.mun]]
|
||||
?~(nao ~ (read-at-aeon:ze u.nao mun))
|
||||
?~(nao ~ (read-at-aeon:ze for u.nao mun))
|
||||
::
|
||||
++ ford-fail |=(tan/tang ~|(%ford-fail (mean tan)))
|
||||
::
|
||||
@ -651,14 +663,14 @@
|
||||
:: foreign ship.
|
||||
::
|
||||
++ duce :: produce request
|
||||
|= rov/rove
|
||||
|= wov/wove
|
||||
^+ +>
|
||||
=. rov (dedupe rov)
|
||||
=. qyx (~(put ju qyx) rov hen)
|
||||
=. wov (dedupe wov)
|
||||
=. qyx (~(put ju qyx) wov hen)
|
||||
?~ ref
|
||||
(mabe rov |=(@da (bait hen +<)))
|
||||
(mabe q.wov |=(@da (bait hen +<)))
|
||||
|- ^+ +>+.$
|
||||
=+ rav=(reve rov)
|
||||
=+ rav=(reve q.wov)
|
||||
=+ ^= vaw ^- rave
|
||||
?. ?=({$sing $v *} rav) rav
|
||||
[%many %| [%ud let.dom] `case`q.p.rav r.p.rav]
|
||||
@ -680,17 +692,21 @@
|
||||
:: all get filled at once.
|
||||
::
|
||||
++ dedupe :: find existing alias
|
||||
|= rov/rove ^- rove
|
||||
=; ron/(unit rove) (fall ron rov)
|
||||
|= wov/wove
|
||||
^- wove
|
||||
=; won/(unit wove) (fall won wov)
|
||||
=* rov q.wov
|
||||
?- -.rov
|
||||
$sing ~
|
||||
$next
|
||||
=+ aey=(case-to-aeon:ze q.p.rov)
|
||||
?~ aey ~
|
||||
%+ roll ~(tap in ~(key by qyx))
|
||||
|= {hav/rove res/(unit rove)}
|
||||
%- ~(rep in ~(key by qyx))
|
||||
|= {haw/wove res/(unit wove)}
|
||||
?^ res res
|
||||
=- ?:(- `hav ~)
|
||||
?. =(p.wov p.haw) ~
|
||||
=* hav q.haw
|
||||
=- ?:(- `haw ~)
|
||||
?& ?=($next -.hav)
|
||||
=(p.hav p.rov(q q.p.hav))
|
||||
::
|
||||
@ -703,10 +719,12 @@
|
||||
$mult
|
||||
=+ aey=(case-to-aeon:ze p.p.rov)
|
||||
?~ aey ~
|
||||
%+ roll ~(tap in ~(key by qyx))
|
||||
|= {hav/rove res/(unit rove)}
|
||||
%- ~(rep in ~(key by qyx))
|
||||
|= {haw/wove res/(unit wove)}
|
||||
?^ res res
|
||||
=- ?:(- `hav ~)
|
||||
?. =(p.wov p.haw) ~
|
||||
=* hav q.haw
|
||||
=- ?:(- `haw ~)
|
||||
?& ?=($mult -.hav)
|
||||
=(p.hav p.rov(p p.p.hav))
|
||||
::
|
||||
@ -724,10 +742,12 @@
|
||||
$many
|
||||
=+ aey=(case-to-aeon:ze p.q.rov)
|
||||
?~ aey ~
|
||||
%+ roll ~(tap in ~(key by qyx))
|
||||
|= {hav/rove res/(unit rove)}
|
||||
%- ~(rep in ~(key by qyx))
|
||||
|= {haw/wove res/(unit wove)}
|
||||
?^ res res
|
||||
=- ?:(- `hav ~)
|
||||
?. =(p.wov p.haw) ~
|
||||
=* hav q.haw
|
||||
=- ?:(- `haw ~)
|
||||
?& ?=($many -.hav)
|
||||
=(hav rov(p.q p.q.hav))
|
||||
::
|
||||
@ -781,6 +801,55 @@
|
||||
(lobe-to-silk:ze a p.-)
|
||||
==
|
||||
::
|
||||
:: Set permissions for a node.
|
||||
::
|
||||
++ perm
|
||||
|= {pax/path rit/rite}
|
||||
^+ +>
|
||||
=/ mis/(set @ta)
|
||||
%+ roll
|
||||
=- ~(tap in -)
|
||||
?- -.rit
|
||||
$r who:(fall red.rit *rule)
|
||||
$w who:(fall wit.rit *rule)
|
||||
$rw (~(uni in who:(fall red.rit *rule)) who:(fall wit.rit *rule))
|
||||
==
|
||||
|= {w/whom s/(set @ta)}
|
||||
?: |(?=($& -.w) (~(has by cez) p.w)) s
|
||||
(~(put in s) p.w)
|
||||
?^ mis
|
||||
=- (emit hen %give %mack `[%leaf "No such group(s): {-}"]~)
|
||||
%+ roll ~(tap in `(set @ta)`mis)
|
||||
|= {g/@ta t/tape}
|
||||
?~ t (trip g)
|
||||
:(weld t ", " (trip g))
|
||||
=< (emit hen %give %mack ~)
|
||||
?- -.rit
|
||||
$r wake(per (put-perm per pax red.rit))
|
||||
$w wake(pew (put-perm pew pax wit.rit))
|
||||
$rw wake(per (put-perm per pax red.rit), pew (put-perm pew pax wit.rit))
|
||||
==
|
||||
::
|
||||
++ put-perm
|
||||
|= {pes/regs pax/path new/(unit rule)}
|
||||
?~ new (~(del by pes) pax)
|
||||
(~(put by pes) pax u.new)
|
||||
::
|
||||
:: Remove a group from all rules.
|
||||
::
|
||||
++ forget-crew
|
||||
|= nom/@ta
|
||||
%= +>
|
||||
per (forget-crew-in nom per)
|
||||
pew (forget-crew-in nom pew)
|
||||
==
|
||||
::
|
||||
++ forget-crew-in
|
||||
|= {nom/@ta pes/regs}
|
||||
%- ~(run by pes)
|
||||
|= r/rule
|
||||
r(who (~(del in who.r) |+nom))
|
||||
::
|
||||
:: Cancel a request.
|
||||
::
|
||||
:: For local requests, we just remove it from `qyx`. For foreign requests,
|
||||
@ -788,17 +857,17 @@
|
||||
::
|
||||
++ cancel-request :: release request
|
||||
^+ .
|
||||
=^ ros/(list rove) qyx
|
||||
=^ wos/(list wove) qyx
|
||||
:_ (~(run by qyx) |=(a/(set duct) (~(del in a) hen)))
|
||||
%- ~(rep by qyx)
|
||||
|= {{a/rove b/(set duct)} c/(list rove)}
|
||||
|= {{a/wove b/(set duct)} c/(list wove)}
|
||||
?.((~(has in b) hen) c [a c])
|
||||
?~ ref
|
||||
=> .(ref `(unit rind)`ref) :: XX TMI
|
||||
?: =(~ ros) + :: XX handle?
|
||||
?: =(~ wos) + :: XX handle?
|
||||
|- ^+ +>
|
||||
?~ ros +>
|
||||
$(ros t.ros, +> (mabe i.ros |=(@da (best hen +<))))
|
||||
?~ wos +>
|
||||
$(wos t.wos, +> (mabe q.i.wos |=(@da (best hen +<))))
|
||||
^+ ..cancel-request
|
||||
=+ nux=(~(get by fod.u.ref) hen)
|
||||
?~ nux ..cancel-request
|
||||
@ -816,13 +885,13 @@
|
||||
:: and then waiting if the subscription range extends into the future.
|
||||
::
|
||||
++ start-request
|
||||
|= rav/rave
|
||||
|= {for/(unit ship) rav/rave}
|
||||
^+ +>
|
||||
?- -.rav
|
||||
$sing
|
||||
=+ ver=(aver p.rav)
|
||||
=+ ver=(aver for p.rav)
|
||||
?~ ver
|
||||
(duce rav)
|
||||
(duce for rav)
|
||||
?~ u.ver
|
||||
(blub hen)
|
||||
(blab hen p.rav u.u.ver)
|
||||
@ -875,9 +944,11 @@
|
||||
new/(map (pair care path) cach)
|
||||
==
|
||||
^+ ..start-request
|
||||
%+ duce for
|
||||
^- rove
|
||||
?: ?=($mult -.rav)
|
||||
(duce -.rav p.rav nex old new)
|
||||
%^ duce -.rav p.rav
|
||||
[-.rav p.rav nex old new]
|
||||
:+ -.rav p.rav
|
||||
=+ ole=~(tap by old)
|
||||
?> (lte (lent ole) 1)
|
||||
?~ ole ~
|
||||
@ -901,26 +972,26 @@
|
||||
%+ turn ~(tap by req)
|
||||
|= {c/care p/path}
|
||||
^- (pair (pair care path) cach)
|
||||
[[c p] (aver c cas p)]
|
||||
[[c p] (aver for c cas p)]
|
||||
--
|
||||
::
|
||||
$many
|
||||
=+ nab=(case-to-aeon:ze p.q.rav)
|
||||
?~ nab
|
||||
?> =(~ (case-to-aeon:ze q.q.rav))
|
||||
(duce [- p q ~]:rav)
|
||||
(duce for [- p q ~]:rav)
|
||||
=+ huy=(case-to-aeon:ze q.q.rav)
|
||||
?: &(?=(^ huy) |((lth u.huy u.nab) &(=(0 u.huy) =(0 u.nab))))
|
||||
(blub hen)
|
||||
=+ top=?~(huy let.dom u.huy)
|
||||
=+ ear=(lobes-at-path:ze top r.q.rav)
|
||||
=+ ear=(lobes-at-path:ze for top r.q.rav)
|
||||
=. +>.$
|
||||
(bleb hen u.nab ?:(p.rav ~ `[u.nab top]))
|
||||
?^ huy
|
||||
(blub hen)
|
||||
=+ ^= ptr ^- case
|
||||
[%ud +(let.dom)]
|
||||
(duce `rove`[%many p.rav [ptr q.q.rav r.q.rav] ear])
|
||||
(duce for `rove`[%many p.rav [ptr q.q.rav r.q.rav] ear])
|
||||
==
|
||||
::
|
||||
:: Print a summary of changes to dill.
|
||||
@ -1489,6 +1560,9 @@
|
||||
?- p.p.u.rut
|
||||
$d
|
||||
~| %totally-temporary-error-please-replace-me
|
||||
!!
|
||||
$p
|
||||
~| %requesting-foreign-permissions-is-invalid
|
||||
!!
|
||||
$u
|
||||
~| %im-thinkin-its-prolly-a-bad-idea-to-request-rang-over-the-network
|
||||
@ -1746,32 +1820,34 @@
|
||||
++ wake :: update subscribers
|
||||
^+ .
|
||||
=+ xiq=~(tap by qyx)
|
||||
=| xaq/(list {p/rove q/(set duct)})
|
||||
=| xaq/(list {p/wove q/(set duct)})
|
||||
|- ^+ ..wake
|
||||
?~ xiq
|
||||
..wake(qyx (~(gas by *cult) xaq))
|
||||
?: =(~ q.i.xiq) $(xiq t.xiq, xaq xaq) :: drop forgotten
|
||||
?- -.p.i.xiq
|
||||
=* for p.p.i.xiq
|
||||
=* rov q.p.i.xiq
|
||||
?- -.rov
|
||||
$sing
|
||||
=+ cas=?~(ref ~ (~(get by haw.u.ref) `mood`p.p.i.xiq))
|
||||
=+ cas=?~(ref ~ (~(get by haw.u.ref) `mood`p.rov))
|
||||
?^ cas
|
||||
%= $
|
||||
xiq t.xiq
|
||||
..wake ?~ u.cas (blub-all q.i.xiq ~)
|
||||
(blab-all q.i.xiq p.p.i.xiq %& u.u.cas)
|
||||
(blab-all q.i.xiq p.rov %& u.u.cas)
|
||||
==
|
||||
=+ nao=(case-to-aeon:ze q.p.p.i.xiq)
|
||||
=+ nao=(case-to-aeon:ze q.p.rov)
|
||||
?~ nao $(xiq t.xiq, xaq [i.xiq xaq])
|
||||
:: ~& %reading-at-aeon
|
||||
=+ vid=(read-at-aeon:ze u.nao p.p.i.xiq)
|
||||
=+ vid=(read-at-aeon:ze for u.nao p.rov)
|
||||
:: ~& %red-at-aeon
|
||||
?~ vid
|
||||
:: ?: =(0 u.nao)
|
||||
:: ~& [%oh-poor `path`[syd '0' r.p.p.i.xiq]]
|
||||
:: ~& [%oh-poor `path`[syd '0' r.p.rov]]
|
||||
:: $(xiq t.xiq)
|
||||
:: ~& [%oh-well desk=syd mood=p.p.i.xiq aeon=u.nao]
|
||||
:: ~& [%oh-well desk=syd mood=p.rov aeon=u.nao]
|
||||
$(xiq t.xiq, xaq [i.xiq xaq])
|
||||
$(xiq t.xiq, ..wake (balk-all q.i.xiq u.vid p.p.i.xiq))
|
||||
$(xiq t.xiq, ..wake (balk-all q.i.xiq u.vid p.rov))
|
||||
::
|
||||
:: %next is just %mult with one path, so we pretend %next = %mult here.
|
||||
?($next $mult)
|
||||
@ -1780,7 +1856,7 @@
|
||||
:: {old} is the revision at {(dec yon)}, {new} is the revision at {yon}.
|
||||
:: if we have no {yon} yet, that means it was still unknown last time
|
||||
:: we checked.
|
||||
=* vor p.i.xiq
|
||||
=* vor rov
|
||||
|^
|
||||
=/ rov/rove
|
||||
?: ?=($mult -.vor) vor
|
||||
@ -1846,7 +1922,7 @@
|
||||
++ store :: check again later
|
||||
|= rov/rove
|
||||
^+ ..wake
|
||||
=- ^^$(xiq t.xiq, xaq [i.xiq(p -) xaq])
|
||||
=- ^^$(xiq t.xiq, xaq [i.xiq(p [for -]) xaq])
|
||||
?> ?=($mult -.rov)
|
||||
?: ?=($mult -.vor) rov
|
||||
?> ?=({* $~ $~} r.rov)
|
||||
@ -1873,7 +1949,7 @@
|
||||
++ read-unknown :: fill in the blanks
|
||||
|= {mol/mool hav/(map (pair care path) cach)}
|
||||
%. |= {{c/care p/path} o/cach}
|
||||
?^(o o (aver c p.mol p))
|
||||
?^(o o (aver for c p.mol p))
|
||||
=- ~(urn by -)
|
||||
?^ hav hav
|
||||
%- ~(gas by *(map (pair care path) cach))
|
||||
@ -1881,8 +1957,8 @@
|
||||
--
|
||||
::
|
||||
$many
|
||||
=+ mot=`moat`q.p.i.xiq
|
||||
=* sav r.p.i.xiq
|
||||
=+ mot=`moat`q.rov
|
||||
=* sav r.rov
|
||||
=+ nab=(case-to-aeon:ze p.mot)
|
||||
?~ nab
|
||||
$(xiq t.xiq, xaq [i.xiq xaq])
|
||||
@ -1891,19 +1967,19 @@
|
||||
=. p.mot [%ud +(let.dom)]
|
||||
%= $
|
||||
xiq t.xiq
|
||||
xaq [i.xiq(q.p mot) xaq]
|
||||
xaq [i.xiq(q.q.p mot) xaq]
|
||||
..wake =+ ^= ear
|
||||
(lobes-at-path:ze let.dom r.mot)
|
||||
(lobes-at-path:ze for let.dom r.mot)
|
||||
?: =(sav ear) ..wake
|
||||
(bleb-all q.i.xiq let.dom ?:(p.p.i.xiq ~ `[u.nab let.dom]))
|
||||
(bleb-all q.i.xiq let.dom ?:(p.rov ~ `[u.nab let.dom]))
|
||||
==
|
||||
%= $
|
||||
xiq t.xiq
|
||||
..wake =- (blub-all:- q.i.xiq ~)
|
||||
=+ ^= ear
|
||||
(lobes-at-path:ze u.huy r.mot)
|
||||
(lobes-at-path:ze for u.huy r.mot)
|
||||
?: =(sav ear) (blub-all q.i.xiq ~)
|
||||
(bleb-all q.i.xiq +(u.nab) ?:(p.p.i.xiq ~ `[u.nab u.huy]))
|
||||
(bleb-all q.i.xiq +(u.nab) ?:(p.rov ~ `[u.nab u.huy]))
|
||||
==
|
||||
==
|
||||
++ drop-me
|
||||
@ -1927,7 +2003,7 @@
|
||||
:: and content
|
||||
:: -- creating commits and content and adding them to the tree
|
||||
:: -- finding which data needs to be sent over the network to keep the
|
||||
:: -- other urbit up-to-date
|
||||
:: other urbit up-to-date
|
||||
:: -- reading from the file tree through different `++care` options
|
||||
:: -- the `++me` core for merging.
|
||||
::
|
||||
@ -2193,9 +2269,11 @@
|
||||
:: Gets a map of the data at the given path and all children of it.
|
||||
::
|
||||
++ lobes-at-path
|
||||
|= {yon/aeon pax/path}
|
||||
|= {for/(unit ship) yon/aeon pax/path}
|
||||
^- (map path lobe)
|
||||
?: =(0 yon) ~
|
||||
:: we use %z for the check because it looks at all child paths.
|
||||
?: |(?=($~ for) (may-read u.for %z yon pax)) ~
|
||||
%- malt
|
||||
%+ skim
|
||||
%~ tap by
|
||||
@ -2286,9 +2364,10 @@
|
||||
:: eliminate ++read and ++query
|
||||
::
|
||||
++ query :: query:ze
|
||||
|= ren/$?($u $v $x $y $z) :: endpoint query
|
||||
|= ren/$?($p $u $v $x $y $z) :: endpoint query
|
||||
^- (unit cage)
|
||||
?- ren
|
||||
$p !!
|
||||
$u !! :: [~ %null [%atom %n] ~]
|
||||
$v [~ %dome !>(dom)]
|
||||
$x !! :: ?~(q.ank.dom ~ [~ q.u.q.ank.dom])
|
||||
@ -2314,6 +2393,65 @@
|
||||
?^(r.mun ~ !!) :: [~ %w !>([t.yak (forge-nori yak)])])-all
|
||||
(query(ank.dom ank:(descend-path:(zu ank.dom) r.mun)) p.mun) :: dead code
|
||||
::
|
||||
:: Gets the permissions that apply to a particular node.
|
||||
::
|
||||
:: If the node has no permissions of its own, we use its parent's.
|
||||
:: If no permissions have been set for the entire tree above the node,
|
||||
:: we default to fully private (empty whitelist).
|
||||
::
|
||||
++ read-p
|
||||
|= pax/path
|
||||
^- (unit (unit (each cage lobe)))
|
||||
=- [~ ~ %& %noun !>(-)]
|
||||
:- (read-p-in pax per.red)
|
||||
(read-p-in pax pew.red)
|
||||
::
|
||||
++ read-p-in
|
||||
|= {pax/path pes/regs}
|
||||
^- dict
|
||||
=+ rul=(~(get by pes) pax)
|
||||
?^ rul [pax u.rul]
|
||||
?~ pax [/ %white ~]
|
||||
$(pax (scag (dec (lent pax)) `path`pax))
|
||||
::
|
||||
++ may-read
|
||||
|= {who/ship car/care yon/aeon pax/path}
|
||||
^- ?
|
||||
?+ car
|
||||
(allowed-by who pax per.red)
|
||||
::
|
||||
$p
|
||||
=(who our)
|
||||
::
|
||||
?($y $z)
|
||||
=+ tak=(~(get by hit.dom) yon)
|
||||
?~ tak |
|
||||
=+ yak=(tako-to-yaki u.tak)
|
||||
=+ len=(lent pax)
|
||||
=- (levy ~(tap in -) |=(p/path (allowed-by who p per.red)))
|
||||
%+ roll ~(tap in (~(del in ~(key by q.yak)) pax))
|
||||
|= {p/path s/(set path)}
|
||||
?. =(pax (scag len p)) s
|
||||
%- ~(put in s)
|
||||
?: ?=($z car) p
|
||||
(scag +(len) p)
|
||||
==
|
||||
::
|
||||
++ may-write
|
||||
|= {w/ship p/path}
|
||||
(allowed-by w p pew.red)
|
||||
::
|
||||
++ allowed-by
|
||||
|= {who/ship pax/path pes/regs}
|
||||
^- ?
|
||||
=+ rul=rul:(read-p-in pax pes)
|
||||
=- ?:(?=($black mod.rul) !- -)
|
||||
%- ~(rep in who.rul)
|
||||
|= {w/whom h/_|}
|
||||
?: h &
|
||||
?: ?=($& -.w) =(p.w who)
|
||||
(~(has in (fall (~(get by cez) p.w) ~)) who)
|
||||
::
|
||||
:: Checks for existence of a node at an aeon.
|
||||
::
|
||||
:: This checks for existence of content at the node, and does *not* look
|
||||
@ -2460,8 +2598,10 @@
|
||||
:: Should change last few lines to an explicit ++read-w.
|
||||
::
|
||||
++ read-at-aeon :: read-at-aeon:ze
|
||||
|= {yon/aeon mun/mood} :: seek and read
|
||||
|= {for/(unit ship) yon/aeon mun/mood} :: seek and read
|
||||
^- (unit (unit (each cage lobe)))
|
||||
?. |(?=($~ for) (may-read u.for p.mun yon r.mun))
|
||||
~
|
||||
?: &(?=($w p.mun) !?=($ud -.q.mun)) :: NB only her speed
|
||||
?^(r.mun [~ ~] [~ ~ %& %aeon !>(yon)])
|
||||
?: ?=($d p.mun)
|
||||
@ -2471,6 +2611,8 @@
|
||||
?^ r.mun
|
||||
~&(%no-cd-path [~ ~])
|
||||
[~ ~ %& %noun !>(~(key by dos.u.rom))]
|
||||
?: ?=($p p.mun)
|
||||
(read-p r.mun)
|
||||
?: ?=($u p.mun)
|
||||
(read-u yon r.mun)
|
||||
?: ?=($v p.mun)
|
||||
@ -3429,7 +3571,7 @@
|
||||
::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
=| :: instrument state
|
||||
$: $3 :: vane version
|
||||
$: $4 :: vane version
|
||||
ruf/raft :: revision tree
|
||||
== ::
|
||||
|= {now/@da eny/@ ski/sley} :: activate
|
||||
@ -3439,49 +3581,91 @@
|
||||
|= $: hen/duct
|
||||
hic/(hypo (hobo task:able))
|
||||
==
|
||||
=* req q.hic
|
||||
=> %= . :: XX temporary
|
||||
q.hic
|
||||
req
|
||||
^- task:able
|
||||
?: ?=($soft -.q.hic)
|
||||
?: ?=($soft -.req)
|
||||
=+
|
||||
~|([%bad-soft (@t -.p.q.hic)] ((soft task:able) p.q.hic))
|
||||
~|([%bad-soft (@t -.p.req)] ((soft task:able) p.req))
|
||||
?~ -
|
||||
~& [%bad-softing (@t -.p.q.hic)] !!
|
||||
~& [%bad-softing (@t -.p.req)] !!
|
||||
u.-
|
||||
?: (~(nest ut -:!>(*task:able)) | p.hic) q.hic
|
||||
~& [%clay-call-flub (@tas `*`-.q.hic)]
|
||||
((hard task:able) q.hic)
|
||||
?: (~(nest ut -:!>(*task:able)) | p.hic) req
|
||||
~& [%clay-call-flub (@tas `*`-.req)]
|
||||
((hard task:able) req)
|
||||
==
|
||||
^+ [p=*(list move) q=..^$]
|
||||
?- -.q.hic
|
||||
?- -.req
|
||||
$boat
|
||||
:_ ..^$
|
||||
[hen %give %hill (turn ~(tap by mon.ruf) head)]~
|
||||
::.
|
||||
$cred
|
||||
=. cez.ruf
|
||||
?~ cew.req (~(del by cez.ruf) nom.req)
|
||||
(~(put by cez.ruf) nom.req cew.req)
|
||||
:: wake all desks, a request may have been affected.
|
||||
=| mos/(list move)
|
||||
=+ rom=(fall (~(get by fat.ruf) our.req) *room)
|
||||
=+ des=~(tap in ~(key by dos.rom))
|
||||
|-
|
||||
?~ des [[[hen %give %mack ~] mos] ..^^$]
|
||||
=+ den=((de now hen ruf) [. .]:our.req i.des)
|
||||
=^ mor ruf
|
||||
=< abet:wake
|
||||
?: ?=(^ cew.req) den
|
||||
(forget-crew:den nom.req)
|
||||
$(des t.des, mos (weld mos mor))
|
||||
::
|
||||
$crew
|
||||
[[hen %give %cruz cez.ruf]~ ..^$]
|
||||
::
|
||||
$crow
|
||||
=+ rom=(fall (~(get by fat.ruf) our.req) *room)
|
||||
=+ des=~(tap by dos.rom)
|
||||
=| rus/(map desk {r/regs w/regs})
|
||||
|^
|
||||
?~ des [[hen %give %croz rus]~ ..^^$]
|
||||
=+ per=(filter-rules per.q.i.des)
|
||||
=+ pew=(filter-rules pew.q.i.des)
|
||||
=? rus |(?=(^ per) ?=(^ pew))
|
||||
(~(put by rus) p.i.des per pew)
|
||||
$(des t.des)
|
||||
::
|
||||
++ filter-rules
|
||||
|= pes/regs
|
||||
^+ pes
|
||||
=- (~(gas in *regs) -)
|
||||
%+ skim ~(tap by pes)
|
||||
|= {p/path r/rule}
|
||||
(~(has in who.r) |+nom.req)
|
||||
--
|
||||
::
|
||||
$drop
|
||||
=^ mos ruf
|
||||
=+ den=((de now hen ruf) [. .]:p.q.hic q.q.hic)
|
||||
=+ den=((de now hen ruf) [. .]:our.req des.req)
|
||||
abet:drop-me:den
|
||||
[mos ..^$]
|
||||
::
|
||||
$info
|
||||
?: =(%$ q.q.hic)
|
||||
?: =(%$ des.req)
|
||||
[~ ..^$]
|
||||
=^ mos ruf
|
||||
=+ den=((de now hen ruf) [. .]:p.q.hic q.q.hic)
|
||||
abet:(edit:den now r.q.hic)
|
||||
=+ den=((de now hen ruf) [. .]:our.req des.req)
|
||||
abet:(edit:den now dit.req)
|
||||
[mos ..^$]
|
||||
::
|
||||
$init
|
||||
:_ %_ ..^$
|
||||
fat.ruf
|
||||
?< (~(has by fat.ruf) p.q.hic)
|
||||
(~(put by fat.ruf) p.q.hic [-(hun hen)]:[*room .])
|
||||
?< (~(has by fat.ruf) our.req)
|
||||
(~(put by fat.ruf) our.req [-(hun hen)]:[*room .])
|
||||
==
|
||||
=+ [bos=(sein:title p.q.hic) can=(clan:title p.q.hic)]
|
||||
=+ [bos=(sein:title our.req) can=(clan:title our.req)]
|
||||
%- zing ^- (list (list move))
|
||||
:~ ?: =(bos p.q.hic) ~
|
||||
[hen %pass /init-merge %c %merg p.q.hic %base bos %kids da+now %init]~
|
||||
:~ ?: =(bos our.req) ~
|
||||
[hen %pass /init-merge %c %merg our.req %base bos %kids da+now %init]~
|
||||
::
|
||||
~
|
||||
==
|
||||
@ -3489,9 +3673,9 @@
|
||||
$into
|
||||
=. hez.ruf `hen
|
||||
:_ ..^$
|
||||
=+ bem=(~(get by mon.ruf) p.q.hic)
|
||||
?: &(?=($~ bem) !=(%$ p.q.hic))
|
||||
~|([%bad-mount-point-from-unix p.q.hic] !!)
|
||||
=+ bem=(~(get by mon.ruf) des.req)
|
||||
?: &(?=($~ bem) !=(%$ des.req))
|
||||
~|([%bad-mount-point-from-unix des.req] !!)
|
||||
=+ ^- bem/beam
|
||||
?^ bem
|
||||
u.bem
|
||||
@ -3503,7 +3687,7 @@
|
||||
?~ dos
|
||||
~
|
||||
?: =(0 let.dom.u.dos)
|
||||
=+ cos=(mode-to-soba ~ s.bem q.q.hic r.q.hic)
|
||||
=+ cos=(mode-to-soba ~ s.bem all.req fis.req)
|
||||
=+ ^- {one/(list {path miso}) two/(list {path miso})}
|
||||
%+ skid cos
|
||||
|= {a/path b/miso}
|
||||
@ -3515,80 +3699,91 @@
|
||||
[hen %pass /two %c %info p.bem q.bem %& two]
|
||||
==
|
||||
=+ yak=(~(got by hut.ran.ruf) (~(got by hit.dom.u.dos) let.dom.u.dos))
|
||||
=+ cos=(mode-to-soba q.yak (flop s.bem) q.q.hic r.q.hic)
|
||||
=+ cos=(mode-to-soba q.yak (flop s.bem) all.req fis.req)
|
||||
[hen %pass /both %c %info p.bem q.bem %& cos]~
|
||||
::
|
||||
$merg :: direct state up
|
||||
?: =(%$ q.q.hic)
|
||||
?: =(%$ des.req)
|
||||
[~ ..^$]
|
||||
=^ mos ruf
|
||||
=+ den=((de now hen ruf) [. .]:p.q.hic q.q.hic)
|
||||
abet:abet:(start:(me:ze:den [r.q.hic s.q.hic] ~ &) t.q.hic u.q.hic)
|
||||
=+ den=((de now hen ruf) [. .]:our.req des.req)
|
||||
abet:abet:(start:(me:ze:den [her.req dem.req] ~ &) cas.req how.req)
|
||||
[mos ..^$]
|
||||
::
|
||||
$mont
|
||||
=. hez.ruf ?^(hez.ruf hez.ruf `[[%$ %sync ~] ~])
|
||||
=+ pot=(~(get by mon.ruf) p.q.hic)
|
||||
=+ pot=(~(get by mon.ruf) des.req)
|
||||
?^ pot
|
||||
~& [%already-mounted pot]
|
||||
[~ ..^$]
|
||||
=* bem bem.req
|
||||
=. mon.ruf
|
||||
(~(put by mon.ruf) p.q.hic [p.q.q.hic q.q.q.hic r.q.q.hic] s.q.q.hic)
|
||||
=+ yar=(~(get by fat.ruf) p.q.q.hic)
|
||||
(~(put by mon.ruf) des.req [p.bem q.bem r.bem] s.bem)
|
||||
=+ yar=(~(get by fat.ruf) p.bem)
|
||||
?~ yar
|
||||
[~ ..^$]
|
||||
=+ dos=(~(get by dos.u.yar) q.q.q.hic)
|
||||
=+ dos=(~(get by dos.u.yar) q.bem)
|
||||
?~ dos
|
||||
[~ ..^$]
|
||||
=^ mos ruf
|
||||
=+ den=((de now hen ruf) [. .]:p.q.q.hic q.q.q.hic)
|
||||
abet:(mont:den p.q.hic q.q.hic)
|
||||
=+ den=((de now hen ruf) [. .]:p.bem q.bem)
|
||||
abet:(mont:den des.req bem)
|
||||
[mos ..^$]
|
||||
::
|
||||
$dirk
|
||||
?~ hez.ruf
|
||||
~& %no-sync-duct
|
||||
[~ ..^$]
|
||||
?. (~(has by mon.ruf) p.q.hic)
|
||||
~& [%not-mounted p.q.hic]
|
||||
?. (~(has by mon.ruf) des.req)
|
||||
~& [%not-mounted des.req]
|
||||
[~ ..^$]
|
||||
:- ~[[u.hez.ruf %give %dirk p.q.hic]]
|
||||
:- ~[[u.hez.ruf %give %dirk des.req]]
|
||||
..^$
|
||||
::
|
||||
$ogre
|
||||
?~ hez.ruf
|
||||
~& %no-sync-duct
|
||||
[~ ..^$]
|
||||
?@ p.q.hic
|
||||
?. (~(has by mon.ruf) p.q.hic)
|
||||
~& [%not-mounted p.q.hic]
|
||||
=* pot pot.req
|
||||
?@ pot
|
||||
?. (~(has by mon.ruf) pot)
|
||||
~& [%not-mounted pot]
|
||||
[~ ..^$]
|
||||
:_ ..^$(mon.ruf (~(del by mon.ruf) p.q.hic))
|
||||
[u.hez.ruf %give %ogre p.q.hic]~
|
||||
:_ ..^$(mon.ruf (~(del by mon.ruf) pot))
|
||||
[u.hez.ruf %give %ogre pot]~
|
||||
:_ %_ ..^$
|
||||
mon.ruf
|
||||
%- molt
|
||||
%+ skip ~(tap by mon.ruf)
|
||||
(corl (cury test p.q.hic) tail)
|
||||
(corl (cury test pot) tail)
|
||||
==
|
||||
%+ turn
|
||||
(skim ~(tap by mon.ruf) (corl (cury test p.q.hic) tail))
|
||||
|= {pot/term bem/beam}
|
||||
[u.hez.ruf %give %ogre pot]
|
||||
(skim ~(tap by mon.ruf) (corl (cury test pot) tail))
|
||||
|= {pon/term bem/beam}
|
||||
[u.hez.ruf %give %ogre pon]
|
||||
::
|
||||
$warp
|
||||
$perm
|
||||
=^ mos ruf
|
||||
=+ den=((de now hen ruf) p.q.hic p.q.q.hic)
|
||||
:: =- ~? ?=([~ %sing %w *] q.q.q.hic)
|
||||
:: :* %someones-warping
|
||||
:: rav=u.q.q.q.hic
|
||||
:: mos=-<
|
||||
:: ==
|
||||
:: -
|
||||
::TODO after new boot system, just use our from global.
|
||||
=+ den=((de now hen ruf) [. .]:our.req des.req)
|
||||
abet:(perm:den pax.req rit.req)
|
||||
[mos ..^$]
|
||||
::
|
||||
?($warp $werp)
|
||||
=^ for req
|
||||
?: ?=($warp -.req)
|
||||
[~ req]
|
||||
:_ [%warp wer.req rif.req]
|
||||
?: =(who.req p.wer.req) ~
|
||||
`who.req
|
||||
?> ?=($warp -.req)
|
||||
=* rif rif.req
|
||||
=^ mos ruf
|
||||
=+ den=((de now hen ruf) wer.req p.rif)
|
||||
=< abet
|
||||
?~ q.q.q.hic
|
||||
?~ q.rif
|
||||
cancel-request:den
|
||||
(start-request:den u.q.q.q.hic)
|
||||
(start-request:den for u.q.rif)
|
||||
[mos ..^$]
|
||||
::
|
||||
$went
|
||||
@ -3596,21 +3791,23 @@
|
||||
!!
|
||||
::
|
||||
$west
|
||||
?: ?=({$question *} q.q.hic)
|
||||
=+ ryf=((hard riff) r.q.hic)
|
||||
=* wer wer.req
|
||||
=* pax pax.req
|
||||
?: ?=({$question *} pax)
|
||||
=+ ryf=((hard riff) res.req)
|
||||
:_ ..^$
|
||||
:~ [hen %give %mack ~]
|
||||
:- hen
|
||||
:^ %pass [(scot %p p.p.q.hic) (scot %p q.p.q.hic) t.q.q.hic]
|
||||
:^ %pass [(scot %p p.wer) (scot %p q.wer) t.pax]
|
||||
%c
|
||||
[%warp [p.p.q.hic p.p.q.hic] ryf]
|
||||
[%werp q.wer [p.wer p.wer] ryf]
|
||||
==
|
||||
?> ?=({$answer @ @ $~} q.q.hic)
|
||||
=+ syd=(slav %tas i.t.q.q.hic)
|
||||
=+ inx=(slav %ud i.t.t.q.q.hic)
|
||||
?> ?=({$answer @ @ $~} pax)
|
||||
=+ syd=(slav %tas i.t.pax)
|
||||
=+ inx=(slav %ud i.t.t.pax)
|
||||
=^ mos ruf
|
||||
=+ den=((de now hen ruf) p.q.hic syd)
|
||||
abet:(take-foreign-update:den inx ((hard (unit rand)) r.q.hic))
|
||||
=+ den=((de now hen ruf) wer syd)
|
||||
abet:(take-foreign-update:den inx ((hard (unit rand)) res.req))
|
||||
[[[hen %give %mack ~] mos] ..^$]
|
||||
::
|
||||
$wegh
|
||||
@ -3635,44 +3832,72 @@
|
||||
::
|
||||
++ load
|
||||
=> |%
|
||||
+= rove-2
|
||||
$% {$sing p/mood}
|
||||
{$next p/mood q/(unit (each cage lobe))}
|
||||
{$many p/? q/moat r/(map path lobe)}
|
||||
+= wove-3 rove
|
||||
++ cult-3 (jug wove-3 duct)
|
||||
++ dojo-3
|
||||
$: qyx/cult-3
|
||||
dom/dome
|
||||
dok/(unit dork)
|
||||
mer/(unit mery)
|
||||
==
|
||||
++ cult-2 (jug rove-2 duct)
|
||||
++ dojo-2 (cork dojo |=(a/dojo a(qyx *cult-2)))
|
||||
++ rede-2 (cork rede |=(a/rede a(qyx *cult-2)))
|
||||
++ room-2 (cork room |=(a/room a(dos (~(run by dos.a) dojo-2))))
|
||||
++ rung-2 (cork rung |=(a/rung a(rus (~(run by rus.a) rede-2))))
|
||||
++ raft-2
|
||||
%+ cork raft
|
||||
|=(a/raft a(fat (~(run by fat.a) room-2), hoy (~(run by hoy.a) rung-2)))
|
||||
++ axle $%({$2 ruf/raft-2} {$3 ruf/raft})
|
||||
++ rede-3
|
||||
$: lim/@da
|
||||
ref/(unit rind)
|
||||
qyx/cult-3
|
||||
dom/dome
|
||||
dok/(unit dork)
|
||||
mer/(unit mery)
|
||||
==
|
||||
++ room-3 (cork room |=(a/room a(dos (~(run by dos.a) dojo-3))))
|
||||
++ rung-3 (cork rung |=(a/rung a(rus (~(run by rus.a) rede-3))))
|
||||
++ raft-3
|
||||
$: fat/(map ship room-3)
|
||||
hoy/(map ship rung-3)
|
||||
ran/rang
|
||||
mon/(map term beam)
|
||||
hez/(unit duct)
|
||||
==
|
||||
++ axle $%({$3 ruf/raft-3} {$4 ruf/raft})
|
||||
--
|
||||
|= old/axle
|
||||
^+ ..^$
|
||||
?- -.old
|
||||
$3 ..^$(ruf ruf.old)
|
||||
$2 =/ rov
|
||||
|= a/rove-2 ^- rove
|
||||
?+ -.a a
|
||||
$next
|
||||
?~ q.a a
|
||||
a(q `q.a)
|
||||
$4 ..^$(ruf ruf.old)
|
||||
$3 |^
|
||||
=- ^$(old [%4 -])
|
||||
=+ ruf.old
|
||||
:* (~(run by fat) rom)
|
||||
(~(run by hoy) run)
|
||||
ran mon hez ~
|
||||
==
|
||||
=/ cul
|
||||
|= a/cult-2 ^- cult
|
||||
::
|
||||
++ wov
|
||||
|= a/wove-3 ^- wove
|
||||
[~ a]
|
||||
::
|
||||
++ cul
|
||||
|= a/cult-3 ^- cult
|
||||
%- ~(gas by *cult)
|
||||
(turn ~(tap by a) |=({p/rove-2 q/(set duct)} [(rov p) q]))
|
||||
=/ rom
|
||||
=+ doj=|=(a/dojo-2 a(qyx (cul qyx.a)))
|
||||
|=(a/room-2 a(dos (~(run by dos.a) doj)))
|
||||
=/ run
|
||||
=+ red=|=(a/rede-2 a(qyx (cul qyx.a)))
|
||||
|=(a/rung-2 a(rus (~(run by rus.a) red)))
|
||||
=+ r=ruf.old
|
||||
$(old [%3 r(fat (~(run by fat.r) rom), hoy (~(run by hoy.r) run))])
|
||||
%+ turn ~(tap by a)
|
||||
|= {p/wove-3 q/(set duct)}
|
||||
[(wov p) q]
|
||||
::
|
||||
++ rom
|
||||
|= room-3
|
||||
:- hun
|
||||
%- ~(urn by dos)
|
||||
|= {d/desk dojo-3}
|
||||
=/ n/dojo [(cul qyx) dom dok mer ~ ~]
|
||||
?. =(%kids d) n
|
||||
n(per [[/ %black ~] ~ ~])
|
||||
::
|
||||
++ run
|
||||
=/ red
|
||||
|= rede-3
|
||||
=+ [[/ %black ~] ~ ~]
|
||||
[lim ref (cul qyx) dom dok mer - -]
|
||||
|=(a/rung-3 a(rus (~(run by rus.a) red)))
|
||||
--
|
||||
==
|
||||
::
|
||||
++ scry :: inspect
|
||||
@ -3689,14 +3914,22 @@
|
||||
[~ ~]
|
||||
=+ run=((soft care) ren)
|
||||
?~ run [~ ~]
|
||||
::TODO if it ever gets filled properly, pass in the full fur.
|
||||
=/ for/(unit ship)
|
||||
%- ~(rep in (fall fur ~))
|
||||
|= {m/monk s/(unit ship)}
|
||||
?^ s s
|
||||
?: ?=($| -.m) ~
|
||||
?: =(p.m his) ~
|
||||
`p.m
|
||||
=+ den=((de now [/scryduct ~] ruf) [. .]:his syd)
|
||||
=+ (aver:den u.run u.luk tyl)
|
||||
=+ (aver:den for u.run u.luk tyl)
|
||||
?~ - -
|
||||
?~ u.- -
|
||||
?: ?=($& -.u.u.-) ``p.u.u.-
|
||||
~
|
||||
::
|
||||
++ stay [%3 ruf]
|
||||
++ stay [%4 ruf]
|
||||
++ take :: accept response
|
||||
|= {tea/wire hen/duct hin/(hypo sign)}
|
||||
^+ [p=*(list move) q=..^$]
|
||||
|
@ -47,7 +47,8 @@
|
||||
== ::
|
||||
++ note-clay ::
|
||||
$% {$merg p/@p q/@tas r/@p s/@tas t/case u/germ:clay}:: merge desks
|
||||
{$warp p/sock q/riff:clay} :: wait for clay hack
|
||||
{$warp p/sock q/riff:clay} :: wait for clay hack
|
||||
{$perm p/ship q/desk r/path s/rite:clay} :: change permissions
|
||||
== ::
|
||||
++ note-dill :: note to self, odd
|
||||
$% {$crud p/@tas q/(list tank)} ::
|
||||
@ -79,6 +80,7 @@
|
||||
$% {$mere p/(each (set path) (pair term tang))} ::
|
||||
{$note p/@tD q/tank} ::
|
||||
{$writ p/riot:clay} ::
|
||||
{$mack p/(unit tang)} ::
|
||||
== ::
|
||||
++ sign-dill ::
|
||||
$% {$blit p/(list blit)} ::
|
||||
@ -280,7 +282,8 @@
|
||||
(sync %home our %base)
|
||||
(init-sync %home our %base)
|
||||
=. +> ?. ?=(?($duke $king $czar) can) +>
|
||||
(sync %kids our %base)
|
||||
:: make kids desk publicly readable, so syncs work.
|
||||
(show %kids):(sync %kids our %base)
|
||||
=. +> autoload
|
||||
=. +> peer
|
||||
|- ^+ +>+
|
||||
@ -316,6 +319,16 @@
|
||||
:_(moz [hen %pass ~ %g %deal [our our] ram %peer /drum])
|
||||
==
|
||||
::
|
||||
++ show :: permit reads on desk
|
||||
|= des/desk
|
||||
%_ +>.$
|
||||
moz
|
||||
:_ moz
|
||||
:* hen %pass /show %c %perm our
|
||||
des / r+`[%black ~]
|
||||
==
|
||||
==
|
||||
::
|
||||
++ sync
|
||||
|= syn/{desk ship desk}
|
||||
%_ +>.$
|
||||
@ -396,6 +409,10 @@
|
||||
::
|
||||
{$c $writ *}
|
||||
init
|
||||
::
|
||||
{$c $mack *}
|
||||
?~ p.sih +>.$
|
||||
(mean >%dill-clay-nack< u.p.sih)
|
||||
::
|
||||
{$d $blit *}
|
||||
(done +.sih)
|
||||
|
@ -12,7 +12,7 @@
|
||||
++ move {p/duct q/(wind note gift:able)} :: local move
|
||||
++ note :: out request $->
|
||||
$% $: $c :: to %clay
|
||||
$% {$warp p/sock q/riff:clay} ::
|
||||
$% {$warp p/sock q/riff:clay} ::
|
||||
== == ::
|
||||
$: $f :: to %ford
|
||||
$% {$exec p/@p q/(unit bilk:ford)} ::
|
||||
|
@ -1225,6 +1225,9 @@
|
||||
~
|
||||
$cash `%a
|
||||
$conf `%g
|
||||
$cred `%c
|
||||
$crew `%c
|
||||
$crow `%c
|
||||
$deal `%g
|
||||
$exec `%f
|
||||
$flog `%d
|
||||
@ -1234,6 +1237,7 @@
|
||||
$mont `%c
|
||||
$nuke `%a
|
||||
$ogre `%c
|
||||
$perm `%c
|
||||
$serv `%e
|
||||
$them `%e
|
||||
$wait `%b
|
||||
|
@ -381,7 +381,9 @@
|
||||
++ able ^?
|
||||
|%
|
||||
++ gift :: out result <-$
|
||||
$% {$dirk p/@tas} :: mark mount dirty
|
||||
$% {$croz rus/(map desk {r/regs w/regs})} :: rules for group
|
||||
{$cruz cez/(map @ta crew)} :: permission groups
|
||||
{$dirk p/@tas} :: mark mount dirty
|
||||
{$ergo p/@tas q/mode} :: version update
|
||||
{$hill p/(list @tas)} :: mount points
|
||||
{$mack p/(unit tang)} :: ack
|
||||
@ -389,24 +391,34 @@
|
||||
{$mere p/(each (set path) (pair term tang))} :: merge result
|
||||
{$note p/@tD q/tank} :: debug message
|
||||
{$ogre p/@tas} :: delete mount point
|
||||
{$rule red/dict wit/dict} :: node r+w permissions
|
||||
{$send p/lane:ames q/@} :: transmit packet
|
||||
{$writ p/riot} :: response
|
||||
{$wris p/case p/(set (pair care path))} :: many changes
|
||||
== ::
|
||||
++ task :: in request ->$
|
||||
$% {$boat $~} :: pier rebooted
|
||||
{$drop p/@p q/desk} :: cancel pending merge
|
||||
{$info p/@p q/desk r/nori} :: internal edit
|
||||
{$init p/@p} :: report install
|
||||
{$into p/desk q/? r/mode} :: external edit
|
||||
{$merg p/@p q/desk r/@p s/desk t/case u/germ} :: merge desks
|
||||
{$mont p/desk q/beam} :: mount to unix
|
||||
{$dirk p/desk} :: mark mount dirty
|
||||
{$ogre p/$@(desk beam)} :: delete mount point
|
||||
{$warp p/sock q/riff} :: file request
|
||||
{$cred our/ship nom/@ta cew/crew} :: set permission group
|
||||
{$crew our/ship} :: permission groups
|
||||
{$crow our/ship nom/@ta} :: group usage
|
||||
{$drop our/@p des/desk} :: cancel pending merge
|
||||
{$info our/@p des/desk dit/nori} :: internal edit
|
||||
{$init our/@p} :: report install
|
||||
{$into des/desk all/? fis/mode} :: external edit
|
||||
$: $merg :: merge desks
|
||||
our/@p des/desk :: target
|
||||
her/@p dem/desk cas/case :: source
|
||||
how/germ :: method
|
||||
== ::
|
||||
{$mont des/desk bem/beam} :: mount to unix
|
||||
{$dirk des/desk} :: mark mount dirty
|
||||
{$ogre pot/$@(desk beam)} :: delete mount point
|
||||
{$perm our/ship des/desk pax/path rit/rite} :: change permissions
|
||||
{$warp wer/sock rif/riff} :: internal file req
|
||||
{$werp who/ship wer/sock rif/riff} :: external file req
|
||||
{$wegh $~} :: report memory
|
||||
{$went p/sack q/path r/@ud s/coop} :: response confirm
|
||||
{$west p/sack q/path r/*} :: network request
|
||||
{$went wer/sack pax/path num/@ud ack/coop} :: response confirm
|
||||
{$west wer/sack pax/path res/*} :: network request
|
||||
== ::
|
||||
-- ::able
|
||||
::
|
||||
@ -423,13 +435,15 @@
|
||||
$% {$delta p/lobe q/{p/mark q/lobe} r/page} :: delta on q
|
||||
{$direct p/lobe q/page} :: immediate
|
||||
== ::
|
||||
++ care ?($d $u $v $w $x $y $z) :: clay submode
|
||||
++ care ?($d $p $u $v $w $x $y $z) :: clay submode
|
||||
++ case :: ship desk case spur
|
||||
$% {$da p/@da} :: date
|
||||
{$tas p/@tas} :: label
|
||||
{$ud p/@ud} :: number
|
||||
== ::
|
||||
++ coop (unit ares) :: e2e ack
|
||||
++ crew (set ship) :: permissions group
|
||||
++ dict {src/path rul/rule} :: effective permission
|
||||
++ dome :: project state
|
||||
$: ank/ankh :: state
|
||||
let/@ud :: top id
|
||||
@ -493,8 +507,15 @@
|
||||
{$mult p/mool} :: next version of any
|
||||
{$many p/? q/moat} :: track range
|
||||
== ::
|
||||
++ regs (map path rule) :: rules for paths
|
||||
++ riff {p/desk q/(unit rave)} :: request+desist
|
||||
++ rite :: new permissions
|
||||
$% {$r red/(unit rule)} :: for read
|
||||
{$w wit/(unit rule)} :: for write
|
||||
{$rw red/(unit rule) wit/(unit rule)} :: for read and write
|
||||
== ::
|
||||
++ riot (unit rant) :: response+complete
|
||||
++ rule {mod/?($black $white) who/(set whom)} :: node permission
|
||||
++ rump {p/care q/case r/@tas s/path} :: relative path
|
||||
++ saba {p/ship q/@tas r/moar s/dome} :: patch+merge
|
||||
++ soba (list {p/path q/miso}) :: delta
|
||||
@ -507,6 +528,7 @@
|
||||
{$| p/(list a) q/(list a)} :: p -> q[chunk]
|
||||
== ::
|
||||
++ urge |*(a/mold (list (unce a))) :: list change
|
||||
++ whom (each ship @ta) :: ship or named crew
|
||||
++ yaki :: commit
|
||||
$: p/(list tako) :: parents
|
||||
q/(map path lobe) :: namespace
|
||||
|
Loading…
Reference in New Issue
Block a user