# Template for Knoc plugins ## Entry points It has 4 standard entry points, defined in `pyproject.toml`: * CLI * workflow * api * settings ## CI It has a *Forgejo* CI build action, defined in `.forgejo/actions/build.yaml`. ## Usage Just replace `foo` by the name of the plugin below. With `fish`: ```fish set NAME foo set PNAME knoc_$NAME set DNAME (echo $NAME | tr "_" "-") ``` or with bash: ```bash NAME=foo PNAME=knoc_$NAME DNAME=$(echo $NAME | tr "_" "-") ``` Then: ```fish git clone https://code.philo.ydns.eu/K-Net/knoc-plugin-template.git $DNAME cd $DNAME rm -rf .git mv src/knoc_plugin_template src/$NAME sed "s/plugin_template/$NAME/" -i pyproject.toml sed "s/knoc-plugin-template/$DNAME/" -i pyproject.toml sed "s/plugin_template/$NAME/" -i src/$PNAME/api.py sed "s/plugin_template/$NAME/" -i src/$PNAME/cli.py sed "s/plugin_template/$NAME/" -i src/$PNAME/settings.py sed "s/plugin_template/$NAME/" -i src/$PNAME/workflows.py uv venv git init # Forgejo inits repo with a branch `main`, so it might be a good idea to stick wit this convention git branch -m master main ``` Then, with `fish`: ```fish . .venv/bin/activate.fish uv sync ``` Or `bash`: ```bash . .venv/bin/activate uv sync git add --all git commit -m "Initial commit" ``` => The package is ready. In a *knoc* development environment: ```fish uv pip install -e ../$DNAME knoc # Should display the new plugin's CLI tool ``` ## Develop * Edit *`git commit` *`git tag` (for versioning: `git tag -a v0.1.2 -m "..."`) * `git push` ## Deploy To add the plugin in a production image, add the name to the `PLUGIN` variable of the CI build tool, and deploy.