diff options
Diffstat (limited to 'bundles/svtree/items.py')
| -rw-r--r-- | bundles/svtree/items.py | 77 |
1 files changed, 77 insertions, 0 deletions
diff --git a/bundles/svtree/items.py b/bundles/svtree/items.py new file mode 100644 index 0000000..809f869 --- /dev/null +++ b/bundles/svtree/items.py @@ -0,0 +1,77 @@ +if node.os != "alpine": + raise BundleError(f"{node.name}: OS {node.os} is not supported.") + +git_deploy = { + "/opt/svtree": { + 'repo': "https://git.sr.ht/~robertgzr/svtree", + 'rev': "master", + }, +} + +symlinks = { + "/etc/init.d/svtree": { + 'target': "/opt/svtree/openrc.service", + 'needs': {"git_deploy:/opt/svtree"}, + }, + "/etc/s6-rc/templates/service": { + 'target': "/opt/svtree/templates/service", + 'needs': {"git_deploy:/opt/svtree"}, + }, + "/usr/bin/sv": { + 'target': "/opt/svtree/bin/sv", + 'needs': {"git_deploy:/opt/svtree"}, + }, +} + +directories = { + "/opt/svtree": {}, + + "/etc/s6-rc/src": { 'purge': True }, + "/etc/s6-rc/templates": { 'purge': True }, + '/etc/s6-rc/generate': { 'purge': True }, + + "/etc/s6-rc/src/default/contents.d": { 'purge': True }, + + "/etc/s6-rc/src/services/contents.d": { 'purge': True }, + "/etc/s6-rc/services": { 'purge': True }, +} + +files = { + "/etc/s6-rc/src/default/type": { + "content_type": "text", + "content": "bundle", + "triggers": { + "svc_openrc:svtree:reload", + }, + }, + + "/etc/s6-rc/src/services/type": { + "content_type": "text", + "content": "bundle", + "triggers": { + "svc_openrc:svtree:reload", + }, + }, + "/etc/s6-rc/src/default/contents.d/services": { + "content_type": "text", + "content": "", + "triggers": { + "svc_openrc:svtree:reload", + }, + }, +} + +svc_openrc = { + "svtree": { + 'enabled': True, + 'running': True, + 'needs': {"symlink:/etc/init.d/svtree"}, + }, +} + +for service, _ in node.metadata.get("services", {}).items(): + svc_s6rc[service] = { + 'runlevel': "default", + 'bundle': "services", + 'generate': "service", + } |