diff --git a/.forgejo/workflows/main.yaml b/.forgejo/workflows/main.yaml new file mode 100644 index 0000000..78facd9 --- /dev/null +++ b/.forgejo/workflows/main.yaml @@ -0,0 +1,18 @@ +on: [push] +jobs: + job: + container: + image: ${{vars.DOCKER}}debian:bookworm + steps: + - name: spcd + env: + SPCD: ${{vars.SPCD}} + SPCD_SSH_HOSTS: ${{vars.SPCD_SSH_HOSTS}} + SPCD_SSH_KEY: ${{secrets.SPCD_SSH_KEY}} + SPCD_TXT_LOCALE: ${{vars.SPCD_TXT_LOCALE}} + run: ${{vars.SPCD}} + + - run: spcd-check-project + - run: spcd-build-project + - run: spcd-browse-workspace + - run: spcd-synchronize diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..e2e7327 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +/out diff --git a/build.py b/build.py new file mode 100755 index 0000000..0c30abb --- /dev/null +++ b/build.py @@ -0,0 +1,41 @@ +#! /usr/bin/env python3 +"""Build web.""" + +from pathlib import Path + +from rwx.fs import make_directory, read_file_text, write +from rwx.ps import run + +if __name__ == "__main__": + root = Path(__file__).parent + out = root / "out" / "web" + gv = root / "index.gv" + svg = out / "index.svg" + make_directory(out) + run("dot", str(gv), "-Kcirco", "-Tsvg", "-o", str(svg)) + text = read_file_text(svg) + write( + out / "index.css", + """\ +html { +background-color: #202020; +} +""", + ) + write( + out / "index.html", + f"""\ + + + + + +todo.rwx.work + + + +{text} + + +""", + ) diff --git a/index.gv b/index.gv new file mode 100644 index 0000000..7b65b83 --- /dev/null +++ b/index.gv @@ -0,0 +1,258 @@ +# ╭───────╮ +# │ Graph │ +# ╰───────╯ +digraph "index" { +bgcolor="transparent" +color="#C0C000" +fontcolor="#FF8000" +fontname="DejaVu Sans" +penwidth="2" +rankdir="RL" + +# ╭───────┬──────╮ +# │ Graph │ Edge │ +# ╰───────┴──────╯ +edge [ +fontcolor="#FF4040" +fontname="DejaVu Sans" +style="filled" +] + +# ╭───────┬──────╮ +# │ Graph │ Edge │ +# ╰───────┴──────╯ +node [ +color="#C0C0C0" +fontcolor="#FFFFFF" +fontname="DejaVu Sans" +penwidth="2" +shape="record" +style="filled" +] + +{ rank="max" +"" [style="invis"] +} + +edge [color="#008000"] +node [fillcolor="#408040"] + +# ╭────────╮ +# │ DevOps │ +# ╰────────╯ + +subgraph cluster_devops { +label="DevOps" + +devops_dev_plan -> devops_ops_release [style="invis"] +devops_dev_test -> devops_ops_monitor [style="invis"] + +# ╭────────┬─────╮ +# │ DevOps │ Dev │ +# ╰────────┴─────╯ + +subgraph cluster_devops_dev { +label="Dev" + +devops_dev_plan [label="Plan"] +devops_dev_code [label="Code"] +devops_dev_build [label="Build"] +devops_dev_test [label="Test"] + +} + +devops_dev_plan -> devops_dev_code -> devops_dev_build -> devops_dev_test -> devops_dev_plan + +# ╭────────┬─────╮ +# │ DevOps │ Ops │ +# ╰────────┴─────╯ + +subgraph cluster_devops_ops { +label="Ops" + +devops_ops_release [label="Release"] +devops_ops_deploy [label="Deploy"] +devops_ops_operate [label="Operate"] +devops_ops_monitor [label="Monitor"] + +} + +devops_ops_release -> devops_ops_deploy -> devops_ops_operate -> devops_ops_monitor -> devops_ops_deploy + +# ╭────────╮ +# │ DevOps │ +# ╰────────╯ + +devops_dev_test -> devops_ops_release +devops_ops_monitor -> devops_dev_plan + +} + +node [fillcolor="#303030"] +edge [color="#FF0000"] + +rwx_forge -> devops_dev_code +rwx_todo -> devops_dev_plan + +# ╭─────╮ +# │ RWX │ +# ╰─────╯ + +subgraph cluster_rwx { +label="rwx.work" +URL="https://rwx.work" + +rwx_blog [ +fontcolor="#8080FF" +label="Blog" +URL="https://blog.rwx.work" +] + +rwx_forge [ +fontcolor="#8080FF" +label="Forge" +URL="https://forge.rwx.work" +] + +rwx_ilos [ +fontcolor="#8080FF" +label="ILOS:\nIncremental Live\nOperating System" +URL="https://ilos.rwx.work" +] + +subgraph cluster_rwx_lsgm { +label="LSGM:\nLive Scan Grub Menu" +URL="https://lsgm.rwx.work" + +rwx_lsgm_python [label="Python"] +rwx_lsgm_shell [label="Shell"] + +} + +rwx_ofsp [ +fontcolor="#8080FF" +label="OFSP:\nOperating File\nSystem Profile" +URL="https://ofsp.rwx.work" +] + +rwx_prj [ +fontcolor="#8080FF" +label="PRJ:\nPRJ" +URL="https://prj.rwx.work" +] + +rwx_rtfd [ +fontcolor="#8080FF" +label="RTFD:\nRead The\nFancy Docs" +URL="https://rtfd.rwx.work" +] + +subgraph cluster_rwx_rwx { +label="RWX:\nRead Write eXecute" +URL="https://rwx.rwx.work" + +rwx_rwx_dev [label="Proper\ndev branch"] +rwx_rwx_python [label="Python"] +rwx_rwx_shell [label="Shell"] + +} + +rwx_spcd [ +fontcolor="#8080FF" +label="SPCD:\nShell to Python\nContinuous Deployment" +URL="https://spcd.rwx.work" +] + +rwx_srmp [ +fontcolor="#8080FF" +label="SRMP:\nSoftware Repositories\nMirror Profile" +URL="https://srmp.rwx.work" +] + +rwx_todo [ +fontcolor="#8080FF" +label="TODO:\nTO\nDO" +URL="https://todo.rwx.work" +] + +} + +# ╭─────┬───────╮ +# │ RWX │ Forge │ +# ╰─────┴───────╯ + +rwx_forge_marc [ +fontcolor="#8080FF" +label="Marc" +URL="https://forge.rwx.work/marc.beninca" +] + +rwx_forge_marc -> rwx_forge + +# ╭─────┬──────╮ +# │ RWX │ OFSP │ +# ╰─────┴──────╯ + +{ +rwx_ofsp_python [label="Python"] +rwx_ofsp_shell [label="Shell"] +} -> rwx_ofsp + +# ╭─────┬──────╮ +# │ RWX │ RTFD │ +# ╰─────┴──────╯ + +{ +rwx_rtfd_forgejo [label="Forgejo"] +} -> rwx_rtfd + +# ╭─────┬─────┬────────╮ +# │ RWX │ RWX │ Python │ +# ╰─────┴─────┴────────╯ +{ +rwx_rwx_python_codium [label="Codium"] +rwx_rwx_python_ffmpeg [label="FFMPEG"] +rwx_rwx_python_freetube [label="FreeTube"] +rwx_rwx_python_gource [label="Gource"] +rwx_rwx_python_logo [label="Logo"] +rwx_rwx_python_venvs [label="Build VEnvs"] +} -> rwx_rwx_python +# ╭─────┬─────┬───────╮ +# │ RWX │ RWX │ Shell │ +# ╰─────┴─────┴───────╯ +{ +rwx_rwx_shell_cs [label="CryptSetup"] +rwx_rwx_shell_ffmpeg [label="FFMPEG"] +rwx_rwx_shell_git [label="Git"] +rwx_rwx_shell_venv [label="Use VEnv"] +} -> rwx_rwx_shell + +# ╭─────┬──────╮ +# │ RWX │ SRMP │ +# ╰─────┴──────╯ +{ +rwx_srmp_alma [label="Alma"] +rwx_srmp_debian [label="Debian"] +rwx_srmp_docker [label="Docker"] +rwx_srmp_msys [label="MSys"] +rwx_srmp_pypi [label="PyPI"] +rwx_srmp_python [label="Python"] +} -> rwx_srmp + +# ╭─────┬──────┬────────╮ +# │ RWX │ SRMP │ Debian │ +# ╰─────┴──────┴────────╯ +{ +rwx_srmp_debian_codium [label="Codium"] +rwx_srmp_debian_incus [label="Incus"] +} -> rwx_srmp_debian + +# ╭─────┬──────╮ +# │ RWX │ TODO │ +# ╰─────┴──────╯ +{ +rwx_todo_name [label="Name"] +rwx_todo_subdomain [label="Subdomain"] +} -> rwx_todo + +} diff --git a/readme.md b/readme.md new file mode 100644 index 0000000..2c784a4 --- /dev/null +++ b/readme.md @@ -0,0 +1,49 @@ +# Track Ongoing DevOps + +A graph to track things to do. + +--- + +## Why + +Dependencies between tasks of projects. + +--- + +## How + +A tree to identify leafs. + +--- + +## What + +Generate: + +* [X] SVG with GraphViz +* [X] HTML including SVG + +--- + +## Authors + +* [Marc Beninca](https://marc.beninca.link) + +--- + +## Where + +### Chat + +* [Discord](https://discord.com/channels/983145051985154108/1315476519325274112) +* [IRC](ircs://irc.libera.chat/#todo) + +### Forge + +* [Repository](https://forge.rwx.work/rwx.work/todo) +* [RSS](https://forge.rwx.work/rwx.work/todo.rss) +* [Workflows](https://forge.rwx.work/rwx.work/todo/actions) + +### Deployment + +* [Site](https://todo.rwx.work)