Files
git.taskfile.build/library.md
T
Janik von Rotz c1f97636cf feat(bin): add git folder management utilities and enhance task command parsing
- Introduce new git folder management functions: `clean-git-folder`, `commit-git-folder`, `ls-git-folder`, `push-git-folder`, `reset-git-folder`, `stage-git-folder`, `status-git-folder`
- Add `.prompt/update-switch-case-for-all-task-files` script to update task files with comma-separated command support
- Enhance task command parsing to support comma-separated commands with whitespace trimming and error handling
- Document all new git folder functions in `library.md` under Git section
- Add all new git folder functions to help table in `task.template`
- Update `library.md` to include folder structure overview and fix typos
- Maintain consistent formatting and structure with existing code
2025-12-03 09:22:46 +01:00

6.9 KiB

layout
layout
layouts/base.njk

Library

The repository of this website provides a library of reusable functions.

Clone the repository into your home folder and ensure it is updated regularly.

clone-taskfile(){
    if [[ ! -d "$HOME/taskfile.build" ]]; then
        echo -e '\033[38;5;214mGit\033[0m: Clone taskfile repo'
        git clone https://git.taskfile.build "$HOME/taskfile.build"
    else
        echo -e '\033[38;5;214mGit\033[0m: Pull taskfile repo'
        git -C "$HOME/taskfile.build" pull
    fi
}

In your task file import all commands from the taskfile library.

if [[ -d "$HOME/taskfile.build/bin" ]]; then
    for file in "$HOME/taskfile.build/bin/"*; do
        if [[ -f "$file" ]]; then
            source "$file"
        fi
    done
fi

These commands create folder in the directory of the task file and the home directory. Here is an overview of these folders:

  • $PWD/tmp: Temporary directory for the task commands.
  • $PWD/.prompt: LLM prompts stored as markdown files.
  • $HOME/.config/taskfile.build: Default path for storing dotenv files.
  • $HOME/.docker/$CONTAINER_REGISTRY: Default path for storing container registry credentials.

Task

Configure the task enviroment.

OPEN_BROWSER=False # Default: True
TASK_DOTENV_DIR="$HOME/Odoo-Build/config" # Default: "$HOME/.config/taskfile.build"

init-config-dir

printf "$column" 'init-dotenv-dir' '' 'Setup task dotenv dir.'

template-dotenv

printf "$column" 'template-dotenv' '' 'Generate .env from .env.template.'

open-with-os

printf "$column" 'open-with-os' '' 'Open file or url with default application.'

open-url-with-delay

printf "$column" 'open-url-with-delay' '[url][delay]' 'Open url after n seconds.'

Files

Managing files and directories.

ensure-directory

printf "$column" 'ensure-directory' '[path]' 'Ensure directory path exists.'
printf "$column" 'create-symlink' '[source][target]' 'Remove existing file/directory and create symlink.'
printf "$column" 'create-symlink-files' '[source][target]' 'Create symlink for files in source pattern.'

Python

Setup Python virtual enviroment.

activate-venv

printf "$column" 'activate-venv' '' 'Activate or initialize Python virtual env.'

remove-venv

printf "$column" 'remove-venv' '' 'Remove the Python virtual env.'

Environment

Manage .env files in the task config folder.

TASK_DOTENV_DIR="$HOME/Odoo-Build/config" # Default: "$HOME/.config/taskfile.build"

create-env

printf "$column" 'create-env' '[env][type]' 'Create env file of type nextcloud, odoo, upgrade.'

list-env

printf "$column" 'list-env' '' 'List env files.'

show-env

printf "$column" 'show-env' '[env]' 'Output content of the env file.'

copy-env

printf "$column" 'copy-env' '[env][env]' 'Copy env file.'

edit-env

printf "$column" 'edit-env' '[env]' 'Open env file in default editor.'

load-env

printf "$column" 'load-env' '[env]' 'Load and export env file.'

rename-env

printf "$column" 'rename-env' '[env][env]' 'Rename env file.'

remove-env

printf "$column" 'remove-env' '[env]' 'Remove environment config.'

backup-env-files

printf "$column" 'backup-env-files' '[path]' 'Archive and copy env files to target location.'

restore-env-files

printf "$column" 'restore-env-files' '[path]' 'Extract and copy env files from backup file.'

LLM

Commands that integrate the llm cli.

commit-with-llm

printf "$column" 'commit-with-llm' '' 'Commit with llm generated commit message.'

update-with-llm

printf "$column" 'update-with-llm' '[glob][prompt]' 'Feed files matching glob to LLM and apply changes.'

Logging

Colorful logging in task commands.

log-warning

printf "$column" 'log-warning' '' 'Colored output for warnings.'

Git

Manage git folders and submodules.

commit-git-folder

printf "$column" 'commit-git-folder' '[message][path]' 'Commit all changes in git folders in path.'

commit-git-folder

printf "$column" 'clean-git-folder' '' 'Clean git folder.'

ls-git-folder

printf "$column" 'ls-git-folder' '[path]' 'Space separated list of git folders in path.'

push-git-folder

printf "$column" 'push-git-folder' '' 'Push all git folders in path.'

reset-git-folder

printf "$column" 'reset-git-folder' '' 'Abort, rebase and reset git folder.'

stage-git-folder

printf "$column" 'stage-git-folder' '[path]' 'Stage all files in git folders in path.'

status-git-folder

printf "$column" 'status-git-folder' '[path]' 'Show status of git folders in path.'

update-submodule

printf "$column" 'update-submodule' '' 'Update git submodules.'

Pass

Load and store secrets from pass.

Set path to pass entry.

PASS_ENTRY=$(echo "env/${PWD##*/}" | tr '[:upper:]' '[:lower:]')

save-dotenv-to-pass

printf "$column" 'save-dotenv-to-pass' '' 'Store content of .env in pass entry.'

load-dotenv-from-pass

printf "$column" 'load-dotenv-from-pass' '' 'Restore content to .env from pass entry.'

KeePass

Load and store secrets from KeePassXC.

Set path to KeePassXC database and entry.

KEEPASS_DATABASE_FILE="/path/to/database.kdbx"
KEEPASS_DATABASE_KEY_FILE="/path/to/keepass.key"
KEEPASS_ENTRY=$(echo "env/${PWD##*/}" | tr '[:upper:]' '[:lower:]')

save-pass-to-keepass

printf "$column" 'save-pass-to-keepass' '[pass][entry]' 'Store password to KeePass entry.'

get-pass-from-keepass

printf "$column" 'get-pass-from-keepass' '[entry]' 'Get password from KeePass entry.'

save-dotenv-to-keepass

printf "$column" 'save-dotenv-to-keepass' '' 'Store content of .env in KeePass entry.'

load-dotenv-from-keepass

printf "$column" 'load-dotenv-from-keepass' '' 'Restore content to .env from KeePass entry.'

Docker

Build and push Docker images.

Set Docker env vars.

BUILDX_PLATFORM="linux/amd64"
CONTAINER_REGISTRY="janikvonrotz"
CONTAINER_TAG="python.casa:latest"
DOCKERFILE="image/Dockerfile"
DOCKER_CONFIG="$HOME/.docker/$CONTAINER_REGISTRY/"

login-docker

printf "$column" 'login-docker' '[user][token]' 'Run Docker login and create docker config.'

build-image

printf "$column" 'build-image' '[output]' 'Build Docker image with buildx.'

Ansible

Install scripts from the Ansible Build project.

install-ansible-build-scripts

The available roles with scripts are listed here: https://ansible.build/scripts.html

printf "$column" 'install-ansible-build-scripts' '[role]' 'Install scripts of the specified Ansbile role.'