mirror of
https://github.com/urbit/shrub.git
synced 2024-12-21 09:51:36 +03:00
84 lines
1.6 KiB
Plaintext
84 lines
1.6 KiB
Plaintext
:: metadata-hook [landscape]:
|
|
::
|
|
:: allow syncing foreign metadata
|
|
::
|
|
:: watch paths:
|
|
:: /group/%group-path all updates related to this group
|
|
::
|
|
/- *metadata-store, *metadata-hook
|
|
/+ default-agent, dbug, verb, grpl=group, *migrate, resource
|
|
~% %metadata-hook-top ..part ~
|
|
|%
|
|
+$ card card:agent:gall
|
|
+$ versioned-state
|
|
$% state-zero
|
|
state-one
|
|
state-two
|
|
==
|
|
::
|
|
+$ state-zero
|
|
$: %0
|
|
synced=(map path ship)
|
|
==
|
|
+$ state-one
|
|
$: %1
|
|
synced=(map path ship)
|
|
==
|
|
+$ state-two
|
|
[%2 ~]
|
|
--
|
|
=| state-two
|
|
=* state -
|
|
%- agent:dbug
|
|
%+ verb |
|
|
^- agent:gall
|
|
|_ =bowl:gall
|
|
+* this .
|
|
def ~(. (default-agent this %|) bowl)
|
|
++ on-init on-init:def
|
|
++ on-save !>(state)
|
|
++ on-load
|
|
|= =vase
|
|
=/ m-old=(unit versioned-state)
|
|
(mole |.(!<(versioned-state vase)))
|
|
?~ m-old `this
|
|
=* old u.m-old
|
|
|^
|
|
?: ?=(%2 -.old)
|
|
`this
|
|
:_ this
|
|
%+ murn
|
|
~(tap by synced.old)
|
|
|= [group=path =ship]
|
|
%+ bind
|
|
(de-path-soft:resource group)
|
|
|= rid=resource
|
|
?: =(our.bowl ship)
|
|
(push-metadata rid)
|
|
(pull-metadata rid ship)
|
|
::
|
|
++ poke-our
|
|
|= [app=term =cage]
|
|
^- card
|
|
[%pass / %agent [our.bowl app] %poke cage]
|
|
::
|
|
++ push-metadata
|
|
|= rid=resource
|
|
^- card
|
|
(poke-our %metadata-push-hook push-hook-action+!>([%add rid]))
|
|
::
|
|
++ pull-metadata
|
|
|= [rid=resource =ship]
|
|
^- card
|
|
(poke-our %metadata-pull-hook pull-hook-action+!>([%add ship rid]))
|
|
--
|
|
::
|
|
++ on-poke on-poke:def
|
|
++ on-watch on-watch:def
|
|
++ on-peek on-peek:def
|
|
++ on-leave on-leave:def
|
|
++ on-agent on-agent:def
|
|
++ on-arvo on-arvo:def
|
|
++ on-fail on-fail:def
|
|
--
|