90 lines
1.6 KiB
Markdown
90 lines
1.6 KiB
Markdown
# 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.
|
|
|