Files
git.taskfile.build/docs/library.md
T

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=== -->