753 lines
13 KiB
Markdown
753 lines
13 KiB
Markdown
# Library
|
|
|
|
In your Taskfile source commands from the taskfile.build library by adding:
|
|
|
|
```bash
|
|
if [[ -d "$HOME/taskfile.build/bin" ]]; then
|
|
for file in "$HOME/taskfile.build/bin/"*; do
|
|
if [[ -f "$file" ]]; then
|
|
source "$file"
|
|
fi
|
|
done
|
|
fi
|
|
```
|
|
|
|
With these instructions you have access to all commands documented on this page.
|
|
|
|
## Aliases
|
|
|
|
Every command in the library also set an alias derived from the first letters of each word. For example, `commit-with-llm` can also be invoked as `cwl`.
|
|
|
|
Aliases are appended to each script and pass through arguments:
|
|
|
|
```bash
|
|
cwl() {
|
|
commit-with-llm "$@"
|
|
}
|
|
```
|
|
|
|
If two commands would map to the same alias, the alias is extended with additional letters from the first conflicting word until it is unique. Aliases that would shadow standard shell commands (e.g. `cd`, `ls`, `cp`) are also extended to avoid collisions.
|
|
|
|
Run `task list-taskfile-aliases` to list all aliases.
|
|
|
|
```bash
|
|
av='activate-venv'
|
|
agf='add-git-folder'
|
|
agm='add-git-merge'
|
|
agr='add-git-remote'
|
|
aggf='aggregate-git-folders'
|
|
```
|
|
|
|
## Task
|
|
|
|
Most commands can be configured by setting enviroment vars.
|
|
|
|
```bash
|
|
OPEN_BROWSER=False # Default: True
|
|
TASK_DOTENV_DIR="$HOME/Odoo-Build/config" # Default: "$HOME/.config/taskfile.build"
|
|
```
|
|
|
|
<!-- ===Task=== -->
|
|
|
|
### clone-taskfile
|
|
|
|
```bash
|
|
rows+=("clone-taskfile||Clone the taskfile.build repo.")
|
|
```
|
|
|
|
### init-project
|
|
|
|
```bash
|
|
rows+=("init-project||Setup a taskfile project in the current directory.")
|
|
```
|
|
|
|
### template-dotenv
|
|
|
|
```bash
|
|
rows+=("template-dotenv||Generate .env from .env.template.")
|
|
```
|
|
|
|
### open-with-os
|
|
|
|
```bash
|
|
rows+=("open-with-os|<path>|Open file or url with default application.")
|
|
```
|
|
|
|
### open-url
|
|
|
|
```bash
|
|
rows+=("open-url|<url>|Open url.")
|
|
```
|
|
|
|
### show-dotenv-setup
|
|
|
|
```bash
|
|
rows+=("show-dotenv-setup||Show info about the dotenv setup.")
|
|
```
|
|
|
|
### setup-completion
|
|
|
|
```bash
|
|
rows+=("setup-completion|[shell]|Show shell completion instructions.")
|
|
```
|
|
|
|
### list-taskfile-aliases
|
|
|
|
```bash
|
|
rows+=("list-taskfile-aliases||List all library command aliases.")
|
|
```
|
|
|
|
<!-- ===Task=== -->
|
|
|
|
## Files
|
|
|
|
Managing files and directories.
|
|
|
|
<!-- ===Files=== -->
|
|
|
|
### ensure-directory
|
|
|
|
```bash
|
|
rows+=("ensure-directory|<path>|Ensure directory path exists.")
|
|
```
|
|
|
|
### create-symlink
|
|
|
|
```bash
|
|
rows+=("create-symlink|<source><target>|Remove existing file/directory and create symlink.")
|
|
```
|
|
|
|
### create-symlink-files
|
|
|
|
```bash
|
|
rows+=("create-symlink-files|<source><target>|Create symlink for files in source pattern.")
|
|
```
|
|
|
|
<!-- ===Files=== -->
|
|
|
|
## Python
|
|
|
|
Setup Python virtual enviroment.
|
|
|
|
<!-- ===Python=== -->
|
|
|
|
### activate-venv
|
|
|
|
```bash
|
|
rows+=("activate-venv||Activate or initialize Python virtual env.")
|
|
```
|
|
|
|
### remove-venv
|
|
|
|
```bash
|
|
rows+=("remove-venv||Remove the Python virtual env.")
|
|
```
|
|
|
|
<!-- ===Python=== -->
|
|
|
|
## Jupyter
|
|
|
|
Setup and run Jupyter notebooks.
|
|
|
|
<!-- ===Jupyter=== -->
|
|
|
|
### start-jupyter-lab
|
|
|
|
```bash
|
|
rows+=("start-jupyter-lab|[env]|Start Jupyter Lab server.")
|
|
```
|
|
|
|
### install-jupyter-lab
|
|
|
|
```bash
|
|
rows+=("install-jupyter-lab||Install Jupyter Lab and dependencies.")
|
|
```
|
|
|
|
### run-jupyter-notebook
|
|
|
|
```bash
|
|
rows+=("run-jupyter-notebook|<path>[env]|Execute notebook with papermill.")
|
|
```
|
|
|
|
<!-- ===Jupyter=== -->
|
|
|
|
## Environment
|
|
|
|
Manage `.env` files in the task dotenv dir.
|
|
|
|
```bash
|
|
TASK_DOTENV_DIR="$HOME/Odoo-Build/config" # Default: "$HOME/.config/taskfile.build"
|
|
```
|
|
|
|
<!-- ===Enviroment=== -->
|
|
|
|
### create-dotenv
|
|
|
|
```bash
|
|
rows+=("create-dotenv|<env><type>|Create .env file of type nextcloud, odoo, upgrade.")
|
|
```
|
|
|
|
### list-dotenv
|
|
|
|
```bash
|
|
rows+=("list-dotenv||List dotenv files.")
|
|
```
|
|
|
|
### show-dotenv
|
|
|
|
```bash
|
|
rows+=("show-dotenv|<env>|Output content of the .env file.")
|
|
```
|
|
|
|
### copy-dotenv
|
|
|
|
```bash
|
|
rows+=("copy-dotenv|<env><env>|dotenv dotenv file.")
|
|
```
|
|
|
|
### edit-dotenv
|
|
|
|
```bash
|
|
rows+=("edit-dotenv|<env>|Open .env file in default editor.")
|
|
```
|
|
|
|
### load-dotenv
|
|
|
|
```bash
|
|
rows+=("load-dotenv|<env>|Load and export .env file.")
|
|
```
|
|
|
|
### rename-dotenv
|
|
|
|
```bash
|
|
rows+=("rename-dotenv|<env><env>|Rename .env file.")
|
|
```
|
|
|
|
### remove-dotenv
|
|
|
|
```bash
|
|
rows+=("remove-dotenv|<env>|Remove .env file.")
|
|
```
|
|
|
|
### backup-dotenv-files
|
|
|
|
```bash
|
|
rows+=("backup-dotenv-files|<path>|Archive and copy .env files to target location.")
|
|
```
|
|
|
|
### restore-dotenv-files
|
|
|
|
```bash
|
|
rows+=("restore-dotenv-files|<path>|Extract and copy .env files from backup file.")
|
|
```
|
|
|
|
<!-- ===Enviroment=== -->
|
|
|
|
## LLM
|
|
|
|
Commands that integrate the [llm](https://llm.datasette.io) cli.
|
|
|
|
<!-- ===LLM=== -->
|
|
|
|
### commit-with-llm
|
|
|
|
```bash
|
|
rows+=("commit-with-llm||Commit with llm generated commit message.")
|
|
```
|
|
|
|
### update-with-llm
|
|
|
|
```bash
|
|
rows+=("update-with-llm|<glob><prompt>|Feed files matching glob to LLM and apply changes.")
|
|
```
|
|
|
|
The last parameter can be either a direct prompt string or a path to a text file containing the prompt.
|
|
|
|
### update-changelog-with-llm
|
|
|
|
```bash
|
|
rows+=("update-changelog-with-llm|[num_lines]|Update CHANGELOG.md with changes from staged git diff using LLM.")
|
|
```
|
|
|
|
<!-- ===LLM=== -->
|
|
|
|
## Prompt
|
|
|
|
Create and track `prompt.md` files.
|
|
|
|
<!-- ===Prompt=== -->
|
|
|
|
### init-prompt-log
|
|
|
|
```bash
|
|
rows+=("init-prompt-log||Initialize prompt-log branch and worktree.")
|
|
```
|
|
|
|
### create-prompt
|
|
|
|
```bash
|
|
rows+=("create-prompt|<title>[repo-path]|Create prompt.md from template.")
|
|
```
|
|
|
|
### prompt-with-pi
|
|
|
|
```bash
|
|
rows+=("prompt-with-pi|[path]|Run pi with prompt.md.")
|
|
```
|
|
|
|
### commit-prompt
|
|
|
|
```bash
|
|
rows+=("commit-prompt|[repo-path]|Commit prompt.md to prompt-log branch.")
|
|
```
|
|
|
|
### list-prompts
|
|
|
|
```bash
|
|
rows+=("list-prompts|[repo-path]|List prompts from prompt-log branch.")
|
|
```
|
|
|
|
### edit-prompt
|
|
|
|
```bash
|
|
rows+=("edit-prompt|[commit][repo-path]|Edit prompt directly in prompt-log worktree.")
|
|
```
|
|
|
|
### show-prompt
|
|
|
|
```bash
|
|
rows+=("show-prompt|[commit][repo-path]|Show prompt content from prompt-log.")
|
|
```
|
|
|
|
### delete-prompt
|
|
|
|
```bash
|
|
rows+=("delete-prompt|[commit][repo-path]|Delete prompt from prompt-log.")
|
|
```
|
|
|
|
### convert-prompts-folder-to-prompt-log
|
|
|
|
```bash
|
|
rows+=("convert-prompts-folder-to-prompt-log|[repo-path]|Convert prompts folder to prompt-log branch.")
|
|
```
|
|
|
|
<!-- ===Prompt=== -->
|
|
|
|
## Logging
|
|
|
|
Colorful logging in task commands.
|
|
|
|
<!-- ===Logging=== -->
|
|
|
|
### log-error
|
|
|
|
```bash
|
|
rows+=("log-error||Colored output for errors.")
|
|
```
|
|
|
|
### log-success
|
|
|
|
```bash
|
|
rows+=("log-success||Colored output for success.")
|
|
```
|
|
|
|
### log-warning
|
|
|
|
```bash
|
|
rows+=("log-warning||Colored output for warnings.")
|
|
```
|
|
|
|
<!-- ===Logging=== -->
|
|
|
|
## Git
|
|
|
|
These commands replace the `git submodule` command. The commands store and retrieve additional information from the `.gitmodules` file.
|
|
|
|
<!-- ===Git=== -->
|
|
|
|
### add-git-folder
|
|
|
|
```bash
|
|
rows+=("add-git-folder|<url><branch><path>|Add git folder to .gitmodules.")
|
|
```
|
|
|
|
### add-git-merge
|
|
|
|
```bash
|
|
rows+=("add-git-merge|<remote><merge><path>|Add git merge ref to git folder in .gitmodules.")
|
|
```
|
|
|
|
### add-git-remote
|
|
|
|
```bash
|
|
rows+=("add-git-remote|<remote><url><path>|Add git remote to git folder.")
|
|
```
|
|
|
|
### merge-git-remote
|
|
|
|
```bash
|
|
rows+=("merge-git-remote||Merge all remotes and refs defined in .gitmodules.")
|
|
```
|
|
|
|
### aggregate-git-folders
|
|
|
|
```bash
|
|
rows+=("aggregate-git-folders|<path>|Run gitaggregate for the repos.yaml.")
|
|
```
|
|
|
|
### commit-git-folder
|
|
|
|
```bash
|
|
rows+=("commit-git-folder|<path><message>|Commit all changes of git folders from .gitmodules file.")
|
|
```
|
|
|
|
### clean-git-folder
|
|
|
|
```bash
|
|
rows+=("clean-git-folder|<path>|Clean git folder.")
|
|
```
|
|
|
|
### checkout-git-folder
|
|
|
|
```bash
|
|
rows+=("checkout-git-folder|<branch><path>|Checkout git commit from .gitmodules files.")
|
|
```
|
|
|
|
### clone-git-folder
|
|
|
|
```bash
|
|
rows+=("clone-git-folder|<path>|Clone git folder from .gitmodules file.")
|
|
```
|
|
|
|
### download-git-folder
|
|
|
|
```bash
|
|
rows+=("download-git-folder|<path>|Download git folder from .gitmodules file.")
|
|
```
|
|
|
|
### find-git-folder
|
|
|
|
```bash
|
|
rows+=("find-git-folder|<path>|Find all .git folders in path.")
|
|
```
|
|
|
|
### generate-ssh-key
|
|
|
|
```bash
|
|
rows+=("generate-ssh-key||Generate ssh key pair.")
|
|
```
|
|
|
|
### list-git-folder
|
|
|
|
```bash
|
|
rows+=("list-git-folder|<path>|List path and url of git folders from .gitmodules file.")
|
|
```
|
|
|
|
### ls-git-folder
|
|
|
|
```bash
|
|
rows+=("ls-git-folder|<path>|Space separated list of git folders from .gitmodules file.")
|
|
```
|
|
|
|
### pull-git-folder
|
|
|
|
```bash
|
|
rows+=("pull-git-folder|<branch><path>|Pull all git folders from .gitmodules file.")
|
|
```
|
|
|
|
### switch-git-folder
|
|
|
|
```bash
|
|
rows+=("switch-git-folder|<branch><path>|Switch branch for all git folders from .gitmodules file.")
|
|
```
|
|
|
|
### sync-git-folder
|
|
|
|
```bash
|
|
rows+=("sync-git-folder|<branch><path>|Switch, stash and pull all git folders from .gitmodules file.")
|
|
```
|
|
|
|
### push-git-folder
|
|
|
|
```bash
|
|
rows+=("push-git-folder|<path>|Push all git folders from .gitmodules file.")
|
|
```
|
|
|
|
### remove-git-folder
|
|
|
|
```bash
|
|
rows+=("remove-git-folder|<path>|Remove git folders in path from .gitmodules file.")
|
|
```
|
|
|
|
### reset-git-folder
|
|
|
|
```bash
|
|
rows+=("reset-git-folder|<path>|Abort, rebase and reset git folders from .gitmodules file.")
|
|
```
|
|
|
|
### run-pre-commit
|
|
|
|
```bash
|
|
rows+=("run-pre-commit|<path>|Run pre-commit in path.")
|
|
```
|
|
|
|
### stage-git-folder
|
|
|
|
```bash
|
|
rows+=("stage-git-folder|<path>|Stage all files in git folders from .gitmodules file.")
|
|
```
|
|
|
|
### status-git-folder
|
|
|
|
```bash
|
|
rows+=("status-git-folder|<path>|Show status of git folders from .gitmodules file.")
|
|
```
|
|
|
|
### save-git-folder
|
|
|
|
```bash
|
|
rows+=("save-git-folder||Save commit refs to .gitmodules.")
|
|
```
|
|
|
|
### update-submodule
|
|
|
|
```bash
|
|
rows+=("update-submodule||Update git submodules.")
|
|
```
|
|
|
|
<!-- ===Git=== -->
|
|
|
|
## Pass
|
|
|
|
Load and store secrets from pass.
|
|
The name of the entry will resolve dynamically depending on the current directory / project. Use `show-dotenv` to show info about the dotenv setup.
|
|
|
|
<!-- ===Pass=== -->
|
|
|
|
### save-dotenv-to-pass
|
|
|
|
```bash
|
|
rows+=("save-dotenv-to-pass|[file]|Store content of .env in pass entry.")
|
|
```
|
|
|
|
### load-dotenv-from-pass
|
|
|
|
```bash
|
|
rows+=("load-dotenv-from-pass|[file]|Restore content to .env from pass entry.")
|
|
```
|
|
|
|
<!-- ===Pass=== -->
|
|
|
|
## KeePass
|
|
|
|
Load and store secrets from KeePassXC.
|
|
Set path to KeePassXC database and entry:
|
|
|
|
```bash
|
|
KEEPASS_DATABASE_FILE="/path/to/database.kdbx"
|
|
KEEPASS_DATABASE_KEY_FILE="/path/to/keepass.key"
|
|
```
|
|
|
|
The name of the entry will resolve dynamically depending on the current directory / project. Use `show-dotenv` to show info about the dotenv setup.
|
|
|
|
<!-- ===KeePass=== -->
|
|
|
|
### save-pass-to-keepass
|
|
|
|
```bash
|
|
rows+=("save-pass-to-keepass|<pass><entry>|Store password to KeePass entry.")
|
|
```
|
|
|
|
### get-pass-from-keepass
|
|
|
|
```bash
|
|
rows+=("get-pass-from-keepass|<entry>|Get password from KeePass entry.")
|
|
```
|
|
|
|
### save-dotenv-to-keepass
|
|
|
|
```bash
|
|
rows+=("save-dotenv-to-keepass|[file]|Store content of .env in KeePass entry.")
|
|
```
|
|
|
|
### load-dotenv-from-keepass
|
|
|
|
```bash
|
|
rows+=("load-dotenv-from-keepass|[file]|Restore content to .env from KeePass entry.")
|
|
```
|
|
|
|
<!-- ===KeePass=== -->
|
|
|
|
## Kubernetes
|
|
|
|
Manage kube config files.
|
|
|
|
<!-- ===Kubernetes=== -->
|
|
|
|
### save-kubeconfig-to-pass
|
|
|
|
```bash
|
|
rows+=("save-kubeconfig-to-pass|[ctx]|Save kubeconfig file in pass.")
|
|
```
|
|
|
|
### save-kubeconfig-to-keepass
|
|
|
|
```bash
|
|
rows+=("save-kubeconfig-to-keepass|[ctx]|Save kubeconfig file in KeePass.")
|
|
```
|
|
|
|
### load-kubeconfig-from-pass
|
|
|
|
```bash
|
|
rows+=("load-kubeconfig-from-pass|[ctx]|Load kubeconfig file from pass.")
|
|
```
|
|
|
|
### load-kubeconfig-from-keepass
|
|
|
|
```bash
|
|
rows+=("load-kubeconfig-from-keepass|[ctx]|Load kubeconfig file from KeePass.")
|
|
```
|
|
|
|
<!-- ===Kubernetes=== -->
|
|
|
|
## Docker
|
|
|
|
Build and push Docker images.
|
|
Set Docker env vars.
|
|
|
|
```bash
|
|
BUILDX_PLATFORM="linux/amd64"
|
|
CONTAINER_REGISTRY="mintsystem"
|
|
CONTAINER_TAG="taskfile.build:latest"
|
|
DOCKERFILE="image/Dockerfile"
|
|
DOCKER_CONFIG="$HOME/.docker/$CONTAINER_REGISTRY/"
|
|
```
|
|
|
|
<!-- ===Docker=== -->
|
|
|
|
### login-docker
|
|
|
|
```bash
|
|
rows+=("login-docker|[user][token]|Run Docker login and create docker config.")
|
|
```
|
|
|
|
### build-image
|
|
|
|
```bash
|
|
rows+=("build-image|[output]|Build Docker image with buildx.")
|
|
```
|
|
|
|
<!-- ===Docker=== -->
|
|
|
|
## Ansible
|
|
|
|
Install scripts from the Ansible Build project.
|
|
|
|
The available roles with scripts are listed here: <https://ansible.build/scripts.html>
|
|
|
|
<!-- ===Ansible=== -->
|
|
|
|
### install-ansible-build-scripts
|
|
|
|
```bash
|
|
rows+=("install-ansible-build-scripts|<role>|Install scripts of the specified Ansbile role.")
|
|
```
|
|
|
|
<!-- ===Ansible=== -->
|
|
|
|
## 11ty
|
|
|
|
Build static sites with 11ty.
|
|
|
|
<!-- ===11ty=== -->
|
|
|
|
### init-11ty-docs
|
|
|
|
```bash
|
|
rows+=("init-11ty-docs||Install 11ty with pnpm.")
|
|
```
|
|
|
|
### dev-11ty-docs
|
|
|
|
```bash
|
|
rows+=("dev-11ty-docs||Run 11ty development server.")
|
|
```
|
|
|
|
### build-11ty-docs
|
|
|
|
```bash
|
|
rows+=("build-11ty-docs||Build the 11ty website.")
|
|
```
|
|
|
|
### serve-11ty-docs
|
|
|
|
```bash
|
|
rows+=("serve-11ty-docs||Serve the 11ty output folder.")
|
|
```
|
|
|
|
<!-- ===11ty=== -->
|
|
|
|
## Zensical
|
|
|
|
Build static sites with Zensical.
|
|
|
|
<!-- ===Zensical=== -->
|
|
|
|
### init-zensical-docs
|
|
|
|
```bash
|
|
rows+=("init-zensical-docs||Initialize Zensical documentation build dependencies.")
|
|
```
|
|
|
|
### dev-zensical-docs
|
|
|
|
```bash
|
|
rows+=("dev-zensical-docs||Run Zensical development server.")
|
|
```
|
|
|
|
### build-zensical-docs
|
|
|
|
```bash
|
|
rows+=("build-zensical-docs||Build the Zensical documentation website.")
|
|
```
|
|
|
|
### serve-zensical-docs
|
|
|
|
```bash
|
|
rows+=("serve-zensical-docs||Serve the Zensical documentation build folder.")
|
|
```
|
|
|
|
<!-- ===Zensical=== -->
|
|
|
|
## Vuepress
|
|
|
|
Build static sites with Vuepress.
|
|
|
|
<!-- ===Vuepress=== -->
|
|
|
|
### init-vuepress-docs
|
|
|
|
```bash
|
|
rows+=("init-vuepress-docs||Install Vuepress build dependencies.")
|
|
```
|
|
|
|
### dev-vuepress-docs
|
|
|
|
```bash
|
|
rows+=("dev-vuepress-docs||Start Vuepress development server.")
|
|
```
|
|
|
|
### build-vuepress-docs
|
|
|
|
```bash
|
|
rows+=("build-vuepress-docs||Create Vuepress build.")
|
|
```
|
|
|
|
### serve-vuepress-docs
|
|
|
|
```bash
|
|
rows+=("serve-vuepress-docs||Serve Vuepress build.")
|
|
```
|
|
|
|
<!-- ===Vuepress=== -->
|