fujin-cli 0.1.0__tar.gz → 0.3.0__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


This version of fujin-cli might be problematic. Click here for more details.

Files changed (82) hide show
  1. fujin_cli-0.3.0/.github/workflows/publish.yml +36 -0
  2. fujin_cli-0.3.0/.gitignore +152 -0
  3. fujin_cli-0.3.0/.pre-commit-config.yaml +30 -0
  4. fujin_cli-0.3.0/.readthedocs.yaml +24 -0
  5. fujin_cli-0.3.0/PKG-INFO +66 -0
  6. fujin_cli-0.3.0/README.md +38 -0
  7. fujin_cli-0.3.0/Vagrantfile +79 -0
  8. fujin_cli-0.3.0/docs/changelog.rst +2 -0
  9. fujin_cli-0.3.0/docs/commands/app.rst +6 -0
  10. fujin_cli-0.3.0/docs/commands/config.rst +6 -0
  11. fujin_cli-0.3.0/docs/commands/deploy.rst +7 -0
  12. fujin_cli-0.3.0/docs/commands/docs.rst +6 -0
  13. fujin_cli-0.3.0/docs/commands/down.rst +6 -0
  14. fujin_cli-0.3.0/docs/commands/index.rst +24 -0
  15. fujin_cli-0.3.0/docs/commands/init.rst +6 -0
  16. fujin_cli-0.3.0/docs/commands/proxy.rst +7 -0
  17. fujin_cli-0.3.0/docs/commands/prune.rst +7 -0
  18. fujin_cli-0.3.0/docs/commands/redeploy.rst +6 -0
  19. fujin_cli-0.3.0/docs/commands/rollback.rst +7 -0
  20. fujin_cli-0.3.0/docs/commands/secrets.rst +7 -0
  21. fujin_cli-0.3.0/docs/commands/server.rst +16 -0
  22. fujin_cli-0.3.0/docs/commands/up.rst +6 -0
  23. fujin_cli-0.3.0/docs/conf.py +42 -0
  24. fujin_cli-0.3.0/docs/configuration.rst +18 -0
  25. fujin_cli-0.3.0/docs/hooks.rst +2 -0
  26. fujin_cli-0.3.0/docs/index.rst +29 -0
  27. fujin_cli-0.3.0/docs/installation.rst +16 -0
  28. fujin_cli-0.3.0/docs/requirements.txt +6 -0
  29. fujin_cli-0.3.0/docs/tutorial.rst +2 -0
  30. fujin_cli-0.3.0/examples/django/bookstore/README.md +200 -0
  31. fujin_cli-0.3.0/examples/django/bookstore/bookstore/__init__.py +0 -0
  32. fujin_cli-0.3.0/examples/django/bookstore/bookstore/__main__.py +23 -0
  33. fujin_cli-0.3.0/examples/django/bookstore/bookstore/asgi.py +16 -0
  34. fujin_cli-0.3.0/examples/django/bookstore/bookstore/settings.py +125 -0
  35. fujin_cli-0.3.0/examples/django/bookstore/bookstore/urls.py +23 -0
  36. fujin_cli-0.3.0/examples/django/bookstore/bookstore/wsgi.py +16 -0
  37. fujin_cli-0.3.0/examples/django/bookstore/fujin.toml +37 -0
  38. fujin_cli-0.3.0/examples/django/bookstore/manage.py +0 -0
  39. fujin_cli-0.3.0/examples/django/bookstore/pyproject.toml +18 -0
  40. fujin_cli-0.3.0/examples/django/bookstore/requirements.txt +23 -0
  41. fujin_cli-0.3.0/justfile +79 -0
  42. fujin_cli-0.3.0/pyproject.toml +259 -0
  43. fujin_cli-0.3.0/src/fujin/__init__.py +0 -0
  44. fujin_cli-0.3.0/src/fujin/__main__.py +71 -0
  45. fujin_cli-0.3.0/src/fujin/commands/__init__.py +2 -0
  46. fujin_cli-0.3.0/src/fujin/commands/_base.py +76 -0
  47. fujin_cli-0.3.0/src/fujin/commands/app.py +138 -0
  48. fujin_cli-0.3.0/src/fujin/commands/config.py +65 -0
  49. fujin_cli-0.3.0/src/fujin/commands/deploy.py +116 -0
  50. fujin_cli-0.3.0/src/fujin/commands/docs.py +16 -0
  51. fujin_cli-0.3.0/src/fujin/commands/down.py +48 -0
  52. fujin_cli-0.3.0/src/fujin/commands/init.py +82 -0
  53. fujin_cli-0.3.0/src/fujin/commands/proxy.py +71 -0
  54. fujin_cli-0.3.0/src/fujin/commands/prune.py +42 -0
  55. fujin_cli-0.3.0/src/fujin/commands/redeploy.py +48 -0
  56. fujin_cli-0.3.0/src/fujin/commands/rollback.py +49 -0
  57. fujin_cli-0.3.0/src/fujin/commands/secrets.py +11 -0
  58. fujin_cli-0.3.0/src/fujin/commands/server.py +92 -0
  59. fujin_cli-0.3.0/src/fujin/commands/up.py +15 -0
  60. fujin_cli-0.3.0/src/fujin/config.py +290 -0
  61. fujin_cli-0.3.0/src/fujin/connection.py +75 -0
  62. fujin_cli-0.3.0/src/fujin/errors.py +5 -0
  63. fujin_cli-0.3.0/src/fujin/hooks.py +55 -0
  64. fujin_cli-0.3.0/src/fujin/process_managers/__init__.py +40 -0
  65. fujin_cli-0.3.0/src/fujin/process_managers/systemd.py +155 -0
  66. fujin_cli-0.3.0/src/fujin/proxies/__init__.py +35 -0
  67. fujin_cli-0.3.0/src/fujin/proxies/caddy.py +214 -0
  68. fujin_cli-0.3.0/src/fujin/proxies/dummy.py +29 -0
  69. fujin_cli-0.3.0/src/fujin/proxies/nginx.py +132 -0
  70. fujin_cli-0.3.0/src/fujin/templates/simple.service +14 -0
  71. fujin_cli-0.3.0/src/fujin/templates/web.service +25 -0
  72. fujin_cli-0.3.0/src/fujin/templates/web.socket +11 -0
  73. fujin_cli-0.3.0/uv.lock +2337 -0
  74. fujin_cli-0.1.0/.gitignore +0 -10
  75. fujin_cli-0.1.0/.python-version +0 -1
  76. fujin_cli-0.1.0/PKG-INFO +0 -41
  77. fujin_cli-0.1.0/README.md +0 -26
  78. fujin_cli-0.1.0/pyproject.toml +0 -26
  79. fujin_cli-0.1.0/src/fujin/__init__.py +0 -2
  80. fujin_cli-0.1.0/src/fujin/fabfile.py +0 -202
  81. fujin_cli-0.1.0/src/fujin/utils.py +0 -60
  82. {fujin_cli-0.1.0 → fujin_cli-0.3.0}/LICENSE.txt +0 -0
@@ -0,0 +1,36 @@
1
+ name: Publish package
2
+
3
+ on:
4
+ push:
5
+ tags:
6
+ - "v*.*.*"
7
+
8
+ jobs:
9
+ publish:
10
+ name: Publish to pypi
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - name: Install uv
14
+ uses: astral-sh/setup-uv@v3
15
+ - name: Build Wheel
16
+ run: uv build
17
+ - name: Publish
18
+ uses: pypa/gh-action-pypi-publish@release/v1
19
+
20
+ release:
21
+ name: Create a GitHub release
22
+ runs-on: ubuntu-latest
23
+ permissions:
24
+ contents: write
25
+ steps:
26
+ - name: Checkout code
27
+ uses: actions/checkout@v4
28
+ - name: Generate Changelog
29
+ run: |
30
+ awk '/^## /{if (p) exit; p=1; next} p' ${{ github.workspace }}/CHANGELOG.md | tee ${{ github.workspace }}-CHANGELOG.txt
31
+ - name: Release
32
+ uses: softprops/action-gh-release@v2
33
+ with:
34
+ body_path: ${{ github.workspace }}-CHANGELOG.txt
35
+ files: dist/*
36
+ fail_on_unmatched_files: true
@@ -0,0 +1,152 @@
1
+ # Byte-compiled / optimized / DLL files
2
+ __pycache__/
3
+ *.py[cod]
4
+ *$py.class
5
+
6
+ # C extensions
7
+ *.so
8
+
9
+ # Distribution / packaging
10
+ .Python
11
+ build/
12
+ develop-eggs/
13
+ dist/
14
+ downloads/
15
+ eggs/
16
+ .eggs/
17
+ lib/
18
+ lib64/
19
+ parts/
20
+ sdist/
21
+ var/
22
+ wheels/
23
+ pip-wheel-metadata/
24
+ share/python-wheels/
25
+ *.egg-info/
26
+ .installed.cfg
27
+ *.egg
28
+ MANIFEST
29
+
30
+ # PyInstaller
31
+ # Usually these files are written by a python script from a template
32
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
33
+ *.manifest
34
+ *.spec
35
+
36
+ # Installer logs
37
+ pip-log.txt
38
+ pip-delete-this-directory.txt
39
+
40
+ # Unit test / coverage reports
41
+ htmlcov/
42
+ .tox/
43
+ .nox/
44
+ .coverage
45
+ .coverage.*
46
+ .cache
47
+ nosetests.xml
48
+ coverage.xml
49
+ *.cover
50
+ *.py,cover
51
+ .hypothesis/
52
+ .pytest_cache/
53
+
54
+ # Translations
55
+ *.mo
56
+ *.pot
57
+
58
+ # Django stuff:
59
+ *.log
60
+ local_settings.py
61
+ *.sqlite3
62
+ *.sqlite3-journal
63
+ *.sqlite3-shm
64
+ *.sqlite3-wal
65
+ *.db
66
+ *.db-journal
67
+ *.db-shm
68
+ *.db-wal
69
+ *staticfiles/
70
+ *media
71
+
72
+ # db dumps
73
+ *.dump
74
+
75
+ # Flask stuff:
76
+ instance/
77
+ .webassets-cache
78
+
79
+ # Scrapy stuff:
80
+ .scrapy
81
+
82
+ # Sphinx documentation
83
+ docs/_build/
84
+
85
+ # PyBuilder
86
+ target/
87
+
88
+ # Jupyter Notebook
89
+ .ipynb_checkpoints
90
+
91
+ # IPython
92
+ profile_default/
93
+ ipython_config.py
94
+
95
+ # pyenv
96
+ .python-version
97
+
98
+ # pipenv
99
+ # According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control.
100
+ # However, in case of collaboration, if having platform-specific dependencies or dependencies
101
+ # having no cross-platform support, pipenv may install dependencies that don't work, or not
102
+ # install all needed dependencies.
103
+ #Pipfile.lock
104
+
105
+ # PEP 582; used by e.g. github.com/David-OConnor/pyflow
106
+ __pypackages__/
107
+
108
+ # Celery stuff
109
+ celerybeat-schedule
110
+ celerybeat.pid
111
+
112
+ # SageMath parsed files
113
+ *.sage.py
114
+
115
+ # Environments
116
+ .env
117
+ examples/django/bookstore/.env.prod
118
+ .venv
119
+ env/
120
+ venv/
121
+ ENV/
122
+ env.bak/
123
+ venv.bak/
124
+
125
+ # Spyder project settings
126
+ .spyderproject
127
+ .spyproject
128
+
129
+ # Rope project settings
130
+ .ropeproject
131
+
132
+ # mkdocs documentation
133
+ /site
134
+
135
+ # mypy
136
+ .mypy_cache/
137
+ .dmypy.json
138
+ dmypy.json
139
+
140
+ # Pyre type checker
141
+ .pyre/
142
+
143
+ # Pycharm
144
+ .idea/
145
+
146
+ # MacOs
147
+ .DS_Store
148
+
149
+ id_rsa
150
+ id_rsa.pub
151
+ aws.pem
152
+ .vagrant
@@ -0,0 +1,30 @@
1
+ # See https://pre-commit.com for more information
2
+ # See https://pre-commit.com/hooks.html for more hooks
3
+ repos:
4
+ - repo: local
5
+ hooks:
6
+ - id: fmt
7
+ name: ruff format
8
+ entry: uvx ruff format
9
+ language: system
10
+ files: '\.py$'
11
+
12
+ - repo: https://github.com/myint/autoflake
13
+ rev: v2.3.1
14
+ hooks:
15
+ - id: autoflake
16
+ exclude: .*/__init__.py
17
+ args:
18
+ - --in-place
19
+ - --remove-all-unused-imports
20
+ - --expand-star-imports
21
+ - --remove-duplicate-keys
22
+ - --remove-unused-variables
23
+
24
+
25
+ - repo: https://github.com/tox-dev/pyproject-fmt
26
+ rev: "v2.5.0"
27
+ hooks:
28
+ - id: pyproject-fmt
29
+ args: [ "pyproject.toml" ]
30
+ exclude: ^(examples/)
@@ -0,0 +1,24 @@
1
+ # Read the Docs configuration file
2
+ # See https://docs.readthedocs.io/en/stable/config-file/v2.html for details
3
+
4
+ # Required
5
+ version: 2
6
+
7
+ # Set the OS, Python version, and other tools you might need
8
+ build:
9
+ os: ubuntu-22.04
10
+ tools:
11
+ python: "3.12"
12
+
13
+ # Build documentation in the "docs/" directory with Sphinx
14
+ sphinx:
15
+ configuration: docs/conf.py
16
+
17
+ # Optionally, but recommended,
18
+ # declare the Python requirements required to build your documentation
19
+ # See https://docs.readthedocs.io/en/stable/guides/reproducible-builds.html
20
+ python:
21
+ install:
22
+ - requirements: docs/requirements.txt
23
+
24
+
@@ -0,0 +1,66 @@
1
+ Metadata-Version: 2.3
2
+ Name: fujin-cli
3
+ Version: 0.3.0
4
+ Summary: Add your description here
5
+ Project-URL: Documentation, https://github.com/falcopackages/fujin#readme
6
+ Project-URL: Issues, https://github.com/falcopackages/fujin/issues
7
+ Project-URL: Source, https://github.com/falcopackages/fujin
8
+ Author-email: Tobi DEGNON <tobidegnon@proton.me>
9
+ License-File: LICENSE.txt
10
+ Keywords: caddy,deployment,django,fastapi,litestar,python,systemd
11
+ Classifier: Development Status :: 3 - Alpha
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Natural Language :: English
14
+ Classifier: Programming Language :: Python
15
+ Classifier: Programming Language :: Python :: 3 :: Only
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Programming Language :: Python :: Implementation :: CPython
21
+ Classifier: Programming Language :: Python :: Implementation :: PyPy
22
+ Requires-Python: >=3.10
23
+ Requires-Dist: cappa>=0.24
24
+ Requires-Dist: fabric>=3.2.2
25
+ Requires-Dist: msgspec[toml]>=0.18.6
26
+ Requires-Dist: rich>=13.9.2
27
+ Description-Content-Type: text/markdown
28
+
29
+ # fujin
30
+
31
+ [![PyPI - Version](https://img.shields.io/pypi/v/fujin-cli.svg)](https://pypi.org/project/fujin-cli)
32
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/fujin-cli.svg)](https://pypi.org/project/fujin-cli)
33
+ [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/falcopackages/fujin/blob/main/LICENSE.txt)
34
+ [![Status](https://img.shields.io/pypi/status/fujin-cli.svg)](https://pypi.org/project/fujin-cli)
35
+ -----
36
+
37
+ > [!IMPORTANT]
38
+ > This package currently contains minimal features and is a work-in-progress
39
+
40
+ `fujin` is a simple deployment tool that helps you get your project up and running on a VPS in a few minutes. It manages your app processes using `systemd` and runs your apps behind [caddy](https://caddyserver.com/). For Python projects,
41
+ it expects your app to be a packaged Python application ideally with a CLI entry point defined. For other languages, you need to provide a self-contained single executable file with all necessary dependencies.
42
+ The main job of `fujin` is to bootstrap your server (installing caddy, etc.), copy the files onto the server with a structure that supports rollback, and automatically generate configs for systemd and caddy that you can manually edit if needed.
43
+
44
+ Check out the [documentation📚](https://fujin.readthedocs.io/en/latest/) for installation, features, and usage guides.
45
+
46
+ ## Why?
47
+
48
+ I wanted [kamal](https://kamal-deploy.org/) but without Docker, and I thought the idea was fun. At its core, this project automates versions of this [tutorial](https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu). If you've been a Django beginner
49
+ trying to get your app in production, you probably went through this. I'm using caddy instead of nginx because the configuration file simpler and it's is a no-brainer for SSL certificates. Systemd is the default on most Linux distributions and does a good enough job.
50
+
51
+ Fujin was initially planned to be a Python-only project, but the core concepts can be applied to any language that can produce a single distributable file (e.g., Go, Rust). I wanted to recreate kamal's nice local-to-remote app management API, but I'm skipping Docker to keep things simple.
52
+ I'm currently rocking SQLite in production for my side projects and ths setup is enough for my use case.
53
+
54
+ The goal is to automate deployment while leaving you in full control of your Linux box. It's not a CLI PaaS - it's simple and expects you to be able to SSH into your server and troubleshoot if necessary. For beginners, it makes the initial deployment easier while you get your hands dirty with Linux.
55
+ If you need a never-break, worry-free, set-it-and-forget-it setup that auto-scales and does all the magic, fujin probably isn't for you.
56
+
57
+ ## Inspiration and alternatives
58
+
59
+ Fujin draws inspiration from the following tools for their developer experience. These are better alternatives if you need a more robust, set-and-forget solution
60
+
61
+ - [fly.io](https://fly.io/)
62
+ - [kamal](https://kamal-deploy.org/) (you probably can't just forget this one)
63
+
64
+ ## License
65
+
66
+ `fujin` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
@@ -0,0 +1,38 @@
1
+ # fujin
2
+
3
+ [![PyPI - Version](https://img.shields.io/pypi/v/fujin-cli.svg)](https://pypi.org/project/fujin-cli)
4
+ [![PyPI - Python Version](https://img.shields.io/pypi/pyversions/fujin-cli.svg)](https://pypi.org/project/fujin-cli)
5
+ [![MIT License](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/falcopackages/fujin/blob/main/LICENSE.txt)
6
+ [![Status](https://img.shields.io/pypi/status/fujin-cli.svg)](https://pypi.org/project/fujin-cli)
7
+ -----
8
+
9
+ > [!IMPORTANT]
10
+ > This package currently contains minimal features and is a work-in-progress
11
+
12
+ `fujin` is a simple deployment tool that helps you get your project up and running on a VPS in a few minutes. It manages your app processes using `systemd` and runs your apps behind [caddy](https://caddyserver.com/). For Python projects,
13
+ it expects your app to be a packaged Python application ideally with a CLI entry point defined. For other languages, you need to provide a self-contained single executable file with all necessary dependencies.
14
+ The main job of `fujin` is to bootstrap your server (installing caddy, etc.), copy the files onto the server with a structure that supports rollback, and automatically generate configs for systemd and caddy that you can manually edit if needed.
15
+
16
+ Check out the [documentation📚](https://fujin.readthedocs.io/en/latest/) for installation, features, and usage guides.
17
+
18
+ ## Why?
19
+
20
+ I wanted [kamal](https://kamal-deploy.org/) but without Docker, and I thought the idea was fun. At its core, this project automates versions of this [tutorial](https://www.digitalocean.com/community/tutorials/how-to-set-up-django-with-postgres-nginx-and-gunicorn-on-ubuntu). If you've been a Django beginner
21
+ trying to get your app in production, you probably went through this. I'm using caddy instead of nginx because the configuration file simpler and it's is a no-brainer for SSL certificates. Systemd is the default on most Linux distributions and does a good enough job.
22
+
23
+ Fujin was initially planned to be a Python-only project, but the core concepts can be applied to any language that can produce a single distributable file (e.g., Go, Rust). I wanted to recreate kamal's nice local-to-remote app management API, but I'm skipping Docker to keep things simple.
24
+ I'm currently rocking SQLite in production for my side projects and ths setup is enough for my use case.
25
+
26
+ The goal is to automate deployment while leaving you in full control of your Linux box. It's not a CLI PaaS - it's simple and expects you to be able to SSH into your server and troubleshoot if necessary. For beginners, it makes the initial deployment easier while you get your hands dirty with Linux.
27
+ If you need a never-break, worry-free, set-it-and-forget-it setup that auto-scales and does all the magic, fujin probably isn't for you.
28
+
29
+ ## Inspiration and alternatives
30
+
31
+ Fujin draws inspiration from the following tools for their developer experience. These are better alternatives if you need a more robust, set-and-forget solution
32
+
33
+ - [fly.io](https://fly.io/)
34
+ - [kamal](https://kamal-deploy.org/) (you probably can't just forget this one)
35
+
36
+ ## License
37
+
38
+ `fujin` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
@@ -0,0 +1,79 @@
1
+ # -*- mode: ruby -*-
2
+ # vi: set ft=ruby :
3
+
4
+ # All Vagrant configuration is done below. The "2" in Vagrant.configure
5
+ # configures the configuration version (we support older styles for
6
+ # backwards compatibility). Please don't change it unless you know what
7
+ # you're doing.
8
+ Vagrant.configure("2") do |config|
9
+ # The most common configuration options are documented and commented below.
10
+ # For a complete reference, please see the online documentation at
11
+ # https://docs.vagrantup.com.
12
+
13
+ # Every Vagrant development environment requires a box. You can search for
14
+ # boxes at https://vagrantcloud.com/search.
15
+ config.vm.box = "hashicorp/bionic64"
16
+ # config.vm.box = "alvistack/ubuntu-24.04"
17
+ # config.vm.box_version = "20241002.1.1"
18
+
19
+ # Disable automatic box update checking. If you disable this, then
20
+ # boxes will only be checked for updates when the user runs
21
+ # `vagrant box outdated`. This is not recommended.
22
+ # config.vm.box_check_update = false
23
+
24
+ # Create a forwarded port mapping which allows access to a specific port
25
+ # within the machine from a port on the host machine. In the example below,
26
+ # accessing "localhost:8080" will access port 80 on the guest machine.
27
+ # NOTE: This will enable public access to the opened port
28
+ # config.vm.network "forwarded_port", guest: 80, host: 8080
29
+
30
+ # Create a forwarded port mapping which allows access to a specific port
31
+ # within the machine from a port on the host machine and only allow access
32
+ # via 127.0.0.1 to disable public access
33
+ # config.vm.network "forwarded_port", guest: 80, host: 8080, host_ip: "127.0.0.1"
34
+
35
+ # Create a private network, which allows host-only access to the machine
36
+ # using a specific IP.
37
+ # config.vm.network "private_network", ip: "192.168.33.10"
38
+
39
+ # Create a public network, which generally matched to bridged network.
40
+ # Bridged networks make the machine appear as another physical device on
41
+ # your network.
42
+ # config.vm.network "public_network"
43
+
44
+ # Share an additional folder to the guest VM. The first argument is
45
+ # the path on the host to the actual folder. The second argument is
46
+ # the path on the guest to mount the folder. And the optional third
47
+ # argument is a set of non-required options.
48
+ # config.vm.synced_folder "../data", "/vagrant_data"
49
+
50
+ # Disable the default share of the current code directory. Doing this
51
+ # provides improved isolation between the vagrant box and your host
52
+ # by making sure your Vagrantfile isn't accessible to the vagrant box.
53
+ # If you use this you may want to enable additional shared subfolders as
54
+ # shown above.
55
+ # config.vm.synced_folder ".", "/vagrant", disabled: true
56
+
57
+ # Provider-specific configuration so you can fine-tune various
58
+ # backing providers for Vagrant. These expose provider-specific options.
59
+ # Example for VirtualBox:
60
+ #
61
+ config.vm.provider "virtualbox" do |vb|
62
+ # # Display the VirtualBox GUI when booting the machine
63
+ # vb.gui = true
64
+ #
65
+ # # Customize the amount of memory on the VM:
66
+ vb.memory = "2024"
67
+ end
68
+ #
69
+ # View the documentation for the provider you are using for more
70
+ # information on available options.
71
+
72
+ # Enable provisioning with a shell script. Additional provisioners such as
73
+ # Ansible, Chef, Docker, Puppet and Salt are also available. Please see the
74
+ # documentation for more information about their specific syntax and use.
75
+ # config.vm.provision "shell", inline: <<-SHELL
76
+ # apt-get update
77
+ # apt-get install -y apache2
78
+ # SHELL
79
+ end
@@ -0,0 +1,2 @@
1
+ Changelog
2
+ =========
@@ -0,0 +1,6 @@
1
+ App
2
+ ===
3
+
4
+ .. cappa:: fujin.commands.app.App
5
+ :style: terminal
6
+ :terminal-width: 0
@@ -0,0 +1,6 @@
1
+ Config
2
+ ======
3
+
4
+ .. cappa:: fujin.commands.config.ConfigCMD
5
+ :style: terminal
6
+ :terminal-width: 0
@@ -0,0 +1,7 @@
1
+ Deploy
2
+ ======
3
+
4
+
5
+ .. cappa:: fujin.commands.deploy.Deploy
6
+ :style: terminal
7
+ :terminal-width: 0
@@ -0,0 +1,6 @@
1
+ Docs
2
+ ====
3
+
4
+ .. cappa:: fujin.commands.docs.Docs
5
+ :style: terminal
6
+ :terminal-width: 0
@@ -0,0 +1,6 @@
1
+ Down
2
+ ====
3
+
4
+ .. cappa:: fujin.commands.down.Down
5
+ :style: terminal
6
+ :terminal-width: 0
@@ -0,0 +1,24 @@
1
+ Commands
2
+ ========
3
+
4
+ .. cappa:: fujin.__main__.Fujin
5
+ :style: terminal
6
+ :terminal-width: 0
7
+
8
+ .. toctree::
9
+ :maxdepth: 2
10
+ :hidden:
11
+
12
+ app
13
+ config
14
+ deploy
15
+ docs
16
+ down
17
+ init
18
+ prune
19
+ proxy
20
+ redeploy
21
+ rollback
22
+ secrets
23
+ server
24
+ up
@@ -0,0 +1,6 @@
1
+ Init
2
+ ====
3
+
4
+ .. cappa:: fujin.commands.init.Init
5
+ :style: terminal
6
+ :terminal-width: 0
@@ -0,0 +1,7 @@
1
+ Proxy
2
+ ======
3
+
4
+ .. cappa:: fujin.commands.proxy.Proxy
5
+ :style: terminal
6
+ :terminal-width: 0
7
+
@@ -0,0 +1,7 @@
1
+ Prune
2
+ ======
3
+
4
+ .. cappa:: fujin.commands.prune.Prune
5
+ :style: terminal
6
+ :terminal-width: 0
7
+
@@ -0,0 +1,6 @@
1
+ Redeploy
2
+ ========
3
+
4
+ .. cappa:: fujin.commands.redeploy.Redeploy
5
+ :style: terminal
6
+ :terminal-width: 0
@@ -0,0 +1,7 @@
1
+ Rollback
2
+ ========
3
+
4
+ .. cappa:: fujin.commands.rollback.Rollback
5
+ :style: terminal
6
+ :terminal-width: 0
7
+
@@ -0,0 +1,7 @@
1
+ Secrets
2
+ ======
3
+
4
+ .. cappa:: fujin.commands.secrets.Secrets
5
+ :style: terminal
6
+ :terminal-width: 0
7
+
@@ -0,0 +1,16 @@
1
+ Server
2
+ ======
3
+
4
+ .. cappa:: fujin.commands.up.Server
5
+ :style: terminal
6
+ :terminal-width: 0
7
+
8
+
9
+ bootstrap
10
+ ---------
11
+
12
+ exec
13
+ ----
14
+
15
+ create-user
16
+ -----------
@@ -0,0 +1,6 @@
1
+ Up
2
+ ==
3
+
4
+ .. cappa:: fujin.commands.up.Up
5
+ :style: terminal
6
+ :terminal-width: 0
@@ -0,0 +1,42 @@
1
+ # Configuration file for the Sphinx documentation builder.
2
+ #
3
+ # For the full list of built-in configuration values, see the documentation:
4
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html
5
+ # -- Project information -----------------------------------------------------
6
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#project-information
7
+
8
+ project = "fujin"
9
+ copyright = "2024, Tobi DEGNON"
10
+ author = "Tobi DEGNON"
11
+ release = "2024"
12
+
13
+ # -- General configuration ---------------------------------------------------
14
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#general-configuration
15
+
16
+ extensions = [
17
+ "cappa.ext.docutils",
18
+ "myst_parser",
19
+ "sphinx.ext.todo",
20
+ "sphinx.ext.autodoc",
21
+ "sphinx_design",
22
+ "sphinx_copybutton",
23
+ "jupyter_sphinx",
24
+ ]
25
+
26
+ templates_path = ["_templates"]
27
+ exclude_patterns = ["_build", "Thumbs.db", ".DS_Store"]
28
+
29
+ # -- Options for HTML output -------------------------------------------------
30
+ # https://www.sphinx-doc.org/en/master/usage/configuration.html#options-for-html-output
31
+
32
+ html_theme = "shibuya"
33
+ html_static_path = ["_static"]
34
+
35
+ html_theme_options = {
36
+ "mastodon_url": "https://fosstodon.org/@tobide",
37
+ "github_url": "https://github.com/falcopackages/fujin",
38
+ "twitter_url": "https://twitter.com/tobidegnon",
39
+ "discussion_url": "https://github.com/falcopackages/fujin/discussions",
40
+ "accent_color": "teal",
41
+ "globaltoc_expand_depth": 1,
42
+ }
@@ -0,0 +1,18 @@
1
+ Configuration
2
+ =============
3
+
4
+ .. automodule:: fujin.config
5
+
6
+
7
+ Example
8
+ -------
9
+
10
+ This is a minimal working example.
11
+
12
+ .. jupyter-execute::
13
+ :hide-code:
14
+
15
+ from fujin.commands.init import simple_config
16
+ from tomli_w import dumps
17
+
18
+ print(dumps(simple_config("bookstore")))
@@ -0,0 +1,2 @@
1
+ Hooks
2
+ =====
@@ -0,0 +1,29 @@
1
+ .. fujin documentation master file, created by
2
+ sphinx-quickstart on Tue Oct 29 14:01:13 2024.
3
+ You can adapt this file completely to your liking, but it should at least
4
+ contain the root `toctree` directive.
5
+
6
+ fujin documentation
7
+ ===================
8
+
9
+
10
+ .. important::
11
+
12
+ This a work in progress, not ready for production use yet.
13
+
14
+
15
+ .. .. include:: ../README.md
16
+ :parser: myst_parser.sphinx_
17
+
18
+ .. toctree::
19
+ :maxdepth: 2
20
+ :caption: Contents:
21
+ :hidden:
22
+
23
+ installation
24
+ tutorial
25
+ configuration
26
+ commands/index
27
+ hooks
28
+ changelog
29
+