urbit/pkg/base-dev/lib/pill.hoon

133 lines
2.9 KiB
Plaintext
Raw Normal View History

:: |pill: helper functions for making pills
::
2018-12-12 00:27:33 +03:00
^?
|%
::
2019-08-06 03:44:52 +03:00
+$ pill
2020-12-07 05:35:24 +03:00
$% [%ivory p=(list)]
$: %pill
nam=term
boot-ova=(list)
kernel-ova=(list unix-event)
userspace-ova=(list unix-event)
== ==
2019-08-06 03:44:52 +03:00
::
+$ unix-event
%+ pair wire
$% [%wack p=@]
2020-11-19 10:44:28 +03:00
[%what p=(list (pair path (cask)))]
2019-08-06 03:44:52 +03:00
[%whom p=ship]
2020-12-08 03:47:06 +03:00
[%boot ? $%($>(%fake task:jael) $>(%dawn task:jael))]
2021-06-17 09:49:56 +03:00
[%wyrd p=vere]
[%verb p=(unit ?)]
2019-08-06 03:44:52 +03:00
unix-task
==
2020-12-07 05:35:24 +03:00
:: +boot-ovum: boostrap kernel filesystem load
::
++ boot-ovum
|= [hoon=cord arvo=cord]
:~ //arvo
%what
[/sys/hoon hoon/hoon]
[/sys/arvo hoon/arvo]
==
:: +file-ovum: userspace filesystem load
::
2020-05-09 15:09:26 +03:00
:: bas: full path to / directory
::
++ file-ovum
2020-05-09 15:09:26 +03:00
=/ directories=(list path)
:~ /app :: %gall applications
/gen :: :dojo generators
/lib :: libraries
/mar :: mark definitions
/sur :: structures
/sys :: system files
/ted :: :spider strands
/tests :: unit tests
/web :: %eyre web content
/desk :: desk manifest
2020-05-09 15:09:26 +03:00
==
2021-09-20 20:35:51 +03:00
|= [des=desk bas=path]
2019-08-07 23:37:57 +03:00
^- unix-event
2019-05-23 00:39:12 +03:00
%. directories
|= :: sal: all spurs to load from
::
sal=(list spur)
2019-08-07 23:37:57 +03:00
^- unix-event
::
:: hav: all user files
::
=; hav ~& user-files+(lent hav)
=/ =yuki:clay
:- *(list tako:clay)
%- ~(gas by *(map path (each page:clay lobe:clay)))
(turn hav |=([=path =page:clay] [path &+page]))
2021-09-20 20:35:51 +03:00
[/c/sync [%park des &+yuki *rang:clay]]
=| hav=(list [path page:clay])
|- ^+ hav
?~ sal ~
=. hav $(sal t.sal)
::
:: tyl: spur
::
=/ tyl i.sal
|- ^+ hav
::
:: pax: full path at `tyl`
:: lon: directory at `tyl`
::
=/ lyt (flop tyl)
=/ pax (weld bas lyt)
=/ lon .^(arch %cy pax)
=? hav ?=(^ fil.lon)
:_(hav [lyt mark=;;(@tas (head tyl)) noun=.^(* %cx pax)])
=/ all ~(tap by dir.lon)
|- ^+ hav
?~ all hav
$(all t.all, hav ^$(tyl [p.i.all tyl]))
2020-11-19 10:44:28 +03:00
::
:: +file-ovum2: electric boogaloo
::
++ file-ovum2 |=(p=path `unix-event`[//arvo what/(user-files p)])
::
:: +user-files: all userspace hoon files
::
++ user-files
|= bas=path
%. directories:file-ovum
|= sal=(list spur)
^- (list (pair path (cask)))
::
:: hav: all user files
::
=| hav=(list (pair path (cask)))
|- ^+ hav
?~ sal ~
=. hav $(sal t.sal)
::
:: tyl: spur
::
=/ tyl i.sal
|- ^+ hav
::
:: pax: full path at `tyl`
:: lon: directory at `tyl`
::
=/ pax (weld bas (flop tyl))
=/ lon .^(arch %cy pax)
=? hav ?=(^ fil.lon)
::
:: install only hoon files for now
::
?. ?=([%hoon *] tyl)
hav
:_ hav
[(flop `path`t.tyl) hoon/.^(@t %cx pax)]
::
=/ all ~(tap by dir.lon)
|- ^+ hav
?~ all hav
$(all t.all, hav ^$(tyl [p.i.all tyl]))
--