fujin-cli 0.2.0__tar.gz → 0.4.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 (98) hide show
  1. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/.gitignore +3 -1
  2. fujin_cli-0.4.0/.pre-commit-config.yaml +30 -0
  3. fujin_cli-0.4.0/.readthedocs.yaml +24 -0
  4. fujin_cli-0.4.0/PKG-INFO +66 -0
  5. fujin_cli-0.4.0/README.md +38 -0
  6. fujin_cli-0.4.0/Vagrantfile +79 -0
  7. fujin_cli-0.4.0/docs/changelog.rst +2 -0
  8. fujin_cli-0.4.0/docs/commands/app.rst +6 -0
  9. fujin_cli-0.4.0/docs/commands/config.rst +6 -0
  10. fujin_cli-0.4.0/docs/commands/deploy.rst +7 -0
  11. fujin_cli-0.4.0/docs/commands/docs.rst +6 -0
  12. fujin_cli-0.4.0/docs/commands/down.rst +6 -0
  13. fujin_cli-0.4.0/docs/commands/index.rst +24 -0
  14. fujin_cli-0.4.0/docs/commands/init.rst +6 -0
  15. fujin_cli-0.4.0/docs/commands/proxy.rst +7 -0
  16. fujin_cli-0.4.0/docs/commands/prune.rst +7 -0
  17. fujin_cli-0.4.0/docs/commands/redeploy.rst +6 -0
  18. fujin_cli-0.4.0/docs/commands/rollback.rst +7 -0
  19. fujin_cli-0.4.0/docs/commands/secrets.rst +7 -0
  20. fujin_cli-0.4.0/docs/commands/server.rst +16 -0
  21. fujin_cli-0.4.0/docs/commands/up.rst +6 -0
  22. fujin_cli-0.4.0/docs/conf.py +42 -0
  23. fujin_cli-0.4.0/docs/configuration.rst +18 -0
  24. fujin_cli-0.4.0/docs/hooks.rst +2 -0
  25. fujin_cli-0.4.0/docs/index.rst +29 -0
  26. fujin_cli-0.4.0/docs/installation.rst +16 -0
  27. fujin_cli-0.4.0/docs/requirements.txt +6 -0
  28. fujin_cli-0.4.0/docs/tutorial.rst +2 -0
  29. fujin_cli-0.4.0/examples/django/bookstore/README.md +200 -0
  30. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/examples/django/bookstore/bookstore/__main__.py +1 -0
  31. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/examples/django/bookstore/bookstore/settings.py +11 -9
  32. fujin_cli-0.4.0/examples/django/bookstore/fujin.toml +37 -0
  33. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/examples/django/bookstore/pyproject.toml +3 -1
  34. fujin_cli-0.4.0/examples/django/bookstore/requirements.txt +23 -0
  35. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/justfile +25 -19
  36. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/pyproject.toml +151 -24
  37. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/src/fujin/__main__.py +22 -4
  38. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/src/fujin/commands/__init__.py +1 -2
  39. fujin_cli-0.4.0/src/fujin/commands/_base.py +76 -0
  40. fujin_cli-0.4.0/src/fujin/commands/app.py +138 -0
  41. fujin_cli-0.4.0/src/fujin/commands/config.py +65 -0
  42. fujin_cli-0.4.0/src/fujin/commands/deploy.py +116 -0
  43. fujin_cli-0.4.0/src/fujin/commands/docs.py +16 -0
  44. fujin_cli-0.4.0/src/fujin/commands/down.py +48 -0
  45. fujin_cli-0.4.0/src/fujin/commands/init.py +82 -0
  46. fujin_cli-0.4.0/src/fujin/commands/proxy.py +71 -0
  47. fujin_cli-0.4.0/src/fujin/commands/prune.py +42 -0
  48. fujin_cli-0.4.0/src/fujin/commands/redeploy.py +48 -0
  49. fujin_cli-0.4.0/src/fujin/commands/rollback.py +49 -0
  50. fujin_cli-0.4.0/src/fujin/commands/secrets.py +11 -0
  51. fujin_cli-0.4.0/src/fujin/commands/server.py +92 -0
  52. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/src/fujin/commands/up.py +4 -5
  53. fujin_cli-0.4.0/src/fujin/config.py +290 -0
  54. fujin_cli-0.4.0/src/fujin/connection.py +75 -0
  55. fujin_cli-0.4.0/src/fujin/hooks.py +55 -0
  56. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/src/fujin/process_managers/__init__.py +16 -5
  57. fujin_cli-0.4.0/src/fujin/process_managers/systemd.py +155 -0
  58. fujin_cli-0.4.0/src/fujin/proxies/__init__.py +35 -0
  59. fujin_cli-0.4.0/src/fujin/proxies/caddy.py +217 -0
  60. fujin_cli-0.4.0/src/fujin/proxies/dummy.py +29 -0
  61. fujin_cli-0.4.0/src/fujin/proxies/nginx.py +132 -0
  62. fujin_cli-0.4.0/src/fujin/templates/simple.service +14 -0
  63. fujin_cli-0.4.0/src/fujin/templates/web.service +25 -0
  64. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/src/fujin/templates/web.socket +2 -2
  65. fujin_cli-0.4.0/uv.lock +2337 -0
  66. fujin_cli-0.2.0/Dockerfile +0 -39
  67. fujin_cli-0.2.0/PKG-INFO +0 -52
  68. fujin_cli-0.2.0/README.md +0 -26
  69. fujin_cli-0.2.0/examples/django/bookstore/README.md +0 -0
  70. fujin_cli-0.2.0/examples/django/bookstore/fujin.toml +0 -29
  71. fujin_cli-0.2.0/examples/django/bookstore/requirements.txt +0 -8
  72. fujin_cli-0.2.0/src/fujin/commands/_base.py +0 -83
  73. fujin_cli-0.2.0/src/fujin/commands/app.py +0 -70
  74. fujin_cli-0.2.0/src/fujin/commands/config.py +0 -174
  75. fujin_cli-0.2.0/src/fujin/commands/deploy.py +0 -54
  76. fujin_cli-0.2.0/src/fujin/commands/down.py +0 -30
  77. fujin_cli-0.2.0/src/fujin/commands/redeploy.py +0 -19
  78. fujin_cli-0.2.0/src/fujin/commands/server.py +0 -57
  79. fujin_cli-0.2.0/src/fujin/config.py +0 -131
  80. fujin_cli-0.2.0/src/fujin/hooks.py +0 -15
  81. fujin_cli-0.2.0/src/fujin/host.py +0 -85
  82. fujin_cli-0.2.0/src/fujin/process_managers/systemd.py +0 -105
  83. fujin_cli-0.2.0/src/fujin/proxies/__init__.py +0 -18
  84. fujin_cli-0.2.0/src/fujin/proxies/caddy.py +0 -52
  85. fujin_cli-0.2.0/src/fujin/proxies/dummy.py +0 -16
  86. fujin_cli-0.2.0/src/fujin/proxies/nginx.py +0 -59
  87. fujin_cli-0.2.0/src/fujin/templates/other.service +0 -15
  88. fujin_cli-0.2.0/src/fujin/templates/web.service +0 -24
  89. fujin_cli-0.2.0/uv.lock +0 -1031
  90. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/.github/workflows/publish.yml +0 -0
  91. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/LICENSE.txt +0 -0
  92. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/examples/django/bookstore/bookstore/__init__.py +0 -0
  93. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/examples/django/bookstore/bookstore/asgi.py +0 -0
  94. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/examples/django/bookstore/bookstore/urls.py +0 -0
  95. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/examples/django/bookstore/bookstore/wsgi.py +0 -0
  96. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/examples/django/bookstore/manage.py +0 -0
  97. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/src/fujin/__init__.py +0 -0
  98. {fujin_cli-0.2.0 → fujin_cli-0.4.0}/src/fujin/errors.py +0 -0
@@ -147,4 +147,6 @@ dmypy.json
147
147
  .DS_Store
148
148
 
149
149
  id_rsa
150
- id_rsa.pub
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.4.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
+
@@ -0,0 +1,16 @@
1
+ Installation
2
+ ============
3
+
4
+
5
+ .. code-block:: shell
6
+
7
+ uv tool install fujin-cli
8
+
9
+ .. note::
10
+
11
+ Checkout the `uv docs <https://docs.astral.sh/uv/getting-started/installation/>`_ on how to install it.
12
+ for linux and macos users, run this
13
+
14
+ .. code-block:: bash
15
+
16
+ https://docs.astral.sh/uv/getting-started/installation/
@@ -0,0 +1,6 @@
1
+ myst-parser
2
+ shibuya
3
+ sphinx-copybutton
4
+ sphinx-design
5
+ jupyter-sphinx
6
+ .
@@ -0,0 +1,2 @@
1
+ Tutorial
2
+ ========