1 - bash-compiler command

Overview of the bash-compiler command for compiling bash scripts into standalone binaries using the bash-compiler framework

1. Usage

The framework works with bash-compiler, a GoLang implementation that generates standalone executables from YAML definitions.

Using bash-compiler binary:

export PATH=$PATH:/home/wsl/fchastanet/bash-compiler/bin
FRAMEWORK_ROOT_DIR=$(pwd) bash-compiler \
  src/_binaries/shellcheckLint/shellcheckLint-binary.yaml

Using Go interpreter (must be executed from bash-compiler folder):

export FRAMEWORK_ROOT_DIR=/home/wsl/fchastanet/bash-dev-env/vendor/bash-tools-framework
go run ./cmd/bash-compiler "${FRAMEWORK_ROOT_DIR}/src/_binaries/shellcheckLint/shellcheckLint-binary.yaml"

Compile all *-binary.yaml files at once:

export FRAMEWORK_ROOT_DIR=/home/wsl/fchastanet/bash-dev-env/vendor/bash-tools-framework
go run ./cmd/bash-compiler $(find "${FRAMEWORK_ROOT_DIR}/src/_binaries" -name '*-binary.yaml' -print)

See Bash Compiler documentation for more information.

2. Example: Creating a Command

To create a new command using the framework:

  1. Create a YAML definition in src/_binaries/myCommand/myCommand-binary.yaml
  2. Define the command’s options and main script
  3. Compile using bash-compiler
  4. The generated binary will be placed in bin/myCommand

See the framework command template for a starting point.

3. More info

2 - buildPushDockerImage command

Overview of the buildPushDockerImage command for building and pushing Docker images with proper tagging and caching

1. Help

Command: bin/buildPushDockerImage --help

SYNOPSIS:
    Lint bash files using shellcheck.

USAGE: buildPushDockerImage [OPTIONS]
USAGE: buildPushDockerImage [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q] [--push] [--vendor <vendor>] [--bash-version <bash-version>]
  [--bash-base-image <bash-base-image>]

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/buildPushDockerImage.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.

OPTIONS:
  --push {single}
    if provided, push the image to the registry
  --vendor <vendor> {single}
    vendor image to use
    Possible values: 
      - alpine: alpine based docker image
      - ubuntu: ubuntu based docker image
    Default value: ubuntu
  --bash-version <bash-version> {single}
    version of bash to use
    Possible values: 
      - 4.4
      - 5.0
      - 5.1
      - 5.2
    Default value: 5.2
  --bash-base-image <bash-base-image> {single}
    bash bash image to use (eg: ubuntu:20.04, amd64/bash:4.4-alpine3.18)
    Default value: ubuntu:20.04


DESCRIPTION:
Pull, build and push docker image:
- pull previous docker image from docker hub if exists
- build new image using previous image as cache
- tag built image
- push it to docker registry

additional docker build options can be passed
  via DOCKER_BUILD_OPTIONS env variable

INTERNAL

VERSION: 3.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/buildPushDockerImage/buildPushDockerImage-binary.yaml

LICENSE: MIT License
Copyright (c) 2023-now François Chastanet

3 - doc command

Overview of the doc command for generating this repository documentation from source code comments and templates

1. Help

Command: bin/doc --help

2. Usage

Generate markdown documentation for the framework from source code comments. This command:

  • Extracts shdoc annotations from .sh files
  • Generates comprehensive documentation
  • Creates function reference pages
SYNOPSIS:
    Generate markdown documentation.

USAGE: doc [OPTIONS]
USAGE: doc [--ci] [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q]

OPTIONS:
  --ci {single}
    Activate continuous integration mode (tmp folder not shared with host)


GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/doc.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.


DESCRIPTION:
INTERNAL TOOL

VERSION: 3.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/doc/doc-binary.yaml

LICENSE: MIT License
Copyright (c) 2022-now François Chastanet

4 - findShebangFiles command

Overview of the findShebangFiles command for finding files with shebang in a directory

1. Help

Command: bin/findShebangFiles --help

Find files with shebang in a directory.

SYNOPSIS:
    find all shebang files of this repository

USAGE: findShebangFiles [OPTIONS]
USAGE: findShebangFiles [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q]

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/findShebangFiles.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.


DESCRIPTION:
Display list of all files having a bash shebang in the current repository.

You can apply a command to all these files by providing arguments

Example: Add execution bit to all files with a bash shebang
findShebangFiles chmod +x

VERSION: 3.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/findShebangFiles/findShebangFiles-binary.yaml

LICENSE: MIT License
Copyright (c) 2023-now François Chastanet

5 - hugoUpdateLastmod command

Overview of the hugoUpdateLastmod command for updating Hugo frontmatter lastmod fields

1. Help

Command: bin/hugoUpdateLastmod --help

SYNOPSIS:
    Updates lastmod field in Hugo frontmatter
    based on git modification date or current date.


USAGE: hugoUpdateLastmod [OPTIONS]
USAGE: hugoUpdateLastmod [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q] [--init] [--commit]

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/hugoUpdateLastmod.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.

OPTIONS:
  --init {single}
    Run in migration mode to update all git-tracked markdown files
    in content/ directory

    Incompatible with the option --commit

    Updates all git-tracked ".md" files in "content/" directory
    - Migrates "creationDate" → "date"
    - Migrates "lastUpdated" → "lastmod" - Removes old field names
    - Adds "version: "1.0"" if version field doesn't exist
    - Uses git history for dates if old fields don't exist
    - Places "date", "lastmod", and "version" at the end of frontmatter

  --commit {single}
    Run in commit mode to update staged markdown files in git.
    Automatically detects staged "content/**/*.md" files and updates
    their frontmatter metadata.

    Incompatible with the option --init

    Updates specific files that are staged in git (for pre-commit hooks)
    - Automatically detects staged "content/**/*.md" files
    - Adds "date" if missing (current timestamp)
    - Updates "lastmod" (current timestamp) with smart detection
      to prevent unnecessary updates
    - Increments "version" with smart detection
    - Places "date", "lastmod", and "version" at the end of frontmatter



DESCRIPTION:
Update "date", "lastmod", and "version" frontmatter fields in
markdown files.
Integrates with pre-commit hooks to automatically manage Hugo
frontmatter metadata.

Two explicit modes:

1. Migration mode ("--init")

2. Commit mode ("--commit")

Smart update detection in commit mode (two complementary checks):

1. Date check: Skip if "lastmod" already has today's date
  - Prevents repeated updates on multiple commits the same day

  - Use case: You commit → stage changes → commit again → no update

2. Git check: Skip if file has no actual content changes
  - Prevents updates when running "pre-commit run -a" on unchanged files

  - Checks git diff to detect real changes vs. reformatting

CHANGELOG:

1.0: Initial version

1.1: make md files at content/ root directory to be updated as well

VERSION: 1.1

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/hugoUpdateLastmod/hugoUpdateLastmod-binary.yaml

LICENSE: MIT License
Copyright (c) 2026-now François Chastanet

2. Usage

Update lastmod field in Hugo frontmatter based on git modification dates or the current date. It can be run in two modes: migration mode (using --init) to update all git-tracked markdown files in the content/ directory, and commit mode (using --commit) to update only staged files. The hook includes smart update detection to prevent unnecessary changes, making it ideal for use in pre-commit hooks to ensure that your Hugo content is always up-to-date with the latest modification dates.

6 - installRequirements command

Overview of the installRequirements command for installing required libraries and tools for the Bash Tools Framework

1. Help

Command: bin/installRequirements --help

2. Usage

bin/installRequirements script will install the following libraries inside vendor folder:

bin/doc script will install:

Dependencies are automatically installed when first used. To avoid checking for libraries update and have an impact on performance, a file is created in vendor dir.

  • vendor/.shdocInstalled
  • vendor/.batsInstalled

You can remove these files to force the update of the libraries, or just wait 24 hours for the timeout to expire 😉

7 - test.sh command

Overview of the test.sh command for running unit tests using bats inside Docker containers with needed dependencies

1. Usage

Run unit tests using bats inside Docker container with needed dependencies.

# Run all tests on Ubuntu Bash 5.3
./test.sh scrasnups/build:bash-tools-ubuntu-5.3 -r src -j 30

# Run specific test file
./test.sh scrasnups/build:bash-tools-ubuntu-5.3 src/Array/contains.bats

# Run on different environments
./test.sh scrasnups/build:bash-tools-ubuntu-4.4 -r src -j 30
./test.sh scrasnups/build:bash-tools-ubuntu-5.0 -r src -j 30
./test.sh scrasnups/build:bash-tools-ubuntu-5.3 -r src -j 30
./test.sh scrasnups/build:bash-tools-alpine-4.4 -r src -j 30
./test.sh scrasnups/build:bash-tools-alpine-5.0 -r src -j 30
./test.sh scrasnups/build:bash-tools-alpine-5.3 -r src -j 30

8 - awkLint command

Overview of the awkLint command for linting AWK scripts

1. Help

Command: bin/awkLint --help

Lint all files with .awk extension in specified folder.

SYNOPSIS:
    lint awk files

USAGE: awkLint [OPTIONS]
USAGE: awkLint [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q]

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/awkLint.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.


DESCRIPTION:
Lint awk files

Lint all files with .awk extension in current git folder.
Result in checkstyle format.

VERSION: 3.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/awkLint/awkLint-binary.yaml

LICENSE: MIT License
Copyright (c) 2022-now François Chastanet

9 - cspellForbidden command

Overview of the cspellForbidden command for checking forbidden words in code using cspell

1. Help

Ensure .cspell/forbidden.txt exists and is used by cspell and launch cspell only on git files.

Command: bin/cspellForbidden --help

SYNOPSIS:

    Lint all git (staged or not) files with cspell using the forbidden.txt file

USAGE: cspellForbidden [OPTIONS]
USAGE: cspellForbidden [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q]

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/cspellForbidden.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.


DESCRIPTION:
Lint all git (staged or not) files with cspell using the forbidden.txt file
Ensure .cspell/forbidden.txt exists and is used by cspell
Ensure this dictionary is configured in cspell.json

VERSION: 1.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/cspellForbidden/cspellForbidden-binary.yaml

LICENSE: MIT License
Copyright (c) 2026-now François Chastanet

10 - definitionLint command

Overview of the definitionLint command for linting binary definition files (YAML)

1. Help

Command: bin/definitionLint --help

Lint binary definition files (YAML).

SYNOPSIS:
    Lint files of the given directory.

USAGE: definitionLint [OPTIONS] [ARGUMENTS]
USAGE: definitionLint [--format <format>] [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q]

ARGUMENTS:
  folder {single} (mandatory)    the folder to recursively lint

OPTIONS:
  --format <format> {single}
    Define output format of this command.
    Possible values: 
      - plain
      - checkstyle
    Default value: plain

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/definitionLint.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.


DESCRIPTION:

For each definition file:

- check that all mandatory methods are existing
  installScripts_<fileName>_helpDescription
  installScripts_<fileName>_helpVariables
  installScripts_<fileName>_listVariables
  installScripts_<fileName>_defaultVariables
  installScripts_<fileName>_checkVariables
  installScripts_<fileName>_fortunes
  installScripts_<fileName>_dependencies
  installScripts_<fileName>_breakOnConfigFailure
  installScripts_<fileName>_breakOnTestFailure
  installScripts_<fileName>_install
  installScripts_<fileName>_configure
  installScripts_<fileName>_test

- check if other definitions files functions are defined by currently
  linted definition file it would mean that another file has defined
  the same methods

- check if each dependency exists

INTERNAL

VERSION: 3.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/definitionLint/definitionLint-binary.yaml

LICENSE: MIT License
Copyright (c) 2023-now François Chastanet

11 - dockerLint command

Overview of the dockerLint command for linting Dockerfile files using Hadolint

1. Help

Command: bin/dockerLint --help

Hadolint wrapper with automatic installation of Hadolint.

SYNOPSIS:
    Lint docker files of the given directory using hadolint.

USAGE: dockerLint [OPTIONS] [ARGUMENTS]
USAGE: dockerLint [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q]

ARGUMENTS:
  [hadolintArguments {list} (optional)]    hadolint arguments

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/dockerLint.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.


DESCRIPTION:
- installs new hadolint version(>2.12.0) automatically
- lint this project files using default files filter

HADOLINT HELP:

hadolint - Dockerfile Linter written in Haskell

Usage: hadolint [-v|--version] [-c|--config FILENAME] [DOCKERFILE...] 
                [--file-path-in-report FILEPATHINREPORT] [--no-fail] 
                [--no-color] [-V|--verbose] [-f|--format ARG] [--error RULECODE]
                [--warning RULECODE] [--info RULECODE] [--style RULECODE] 
                [--ignore RULECODE] 
                [--trusted-registry REGISTRY (e.g. docker.io)] 
                [--require-label LABELSCHEMA (e.g. maintainer:text)] 
                [--strict-labels] [--disable-ignore-pragma] 
                [-t|--failure-threshold THRESHOLD]

  Lint Dockerfile for errors and best practices

Available options:
  -h,--help                Show this help text
  -v,--version             Show version
  -c,--config FILENAME     Path to the configuration file
  --file-path-in-report FILEPATHINREPORT
                           The file path referenced in the generated report.
                           This only applies for the 'checkstyle' format and is
                           useful when running Hadolint with Docker to set the
                           correct file path.
  --no-fail                Don't exit with a failure status code when any rule
                           is violated
  --no-color               Don't colorize output
  -V,--verbose             Enables verbose logging of hadolint's output to
                           stderr
  -f,--format ARG          The output format for the results [tty | json |
                           checkstyle | codeclimate | gitlab_codeclimate | gnu |
                           codacy | sonarqube | sarif] (default: tty)
  --error RULECODE         Make the rule `RULECODE` have the level `error`
  --warning RULECODE       Make the rule `RULECODE` have the level `warning`
  --info RULECODE          Make the rule `RULECODE` have the level `info`
  --style RULECODE         Make the rule `RULECODE` have the level `style`
  --ignore RULECODE        A rule to ignore. If present, the ignore list in the
                           config file is ignored
  --trusted-registry REGISTRY (e.g. docker.io)
                           A docker registry to allow to appear in FROM
                           instructions
  --require-label LABELSCHEMA (e.g. maintainer:text)
                           The option --require-label=label:format makes
                           Hadolint check that the label `label` conforms to
                           format requirement `format`
  --strict-labels          Do not permit labels other than specified in
                           `label-schema`
  --disable-ignore-pragma  Disable inline ignore pragmas `# hadolint
                           ignore=DLxxxx`
  -t,--failure-threshold THRESHOLD
                           Exit with failure code only when rules with a
                           severity equal to or above THRESHOLD are violated.
                           Accepted values: [error | warning | info | style |
                           ignore | none] (default: info)

VERSION: 3.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/dockerLint/dockerLint-binary.yaml

LICENSE: MIT License
Copyright (c) 2022-now François Chastanet

12 - frameworkLint command

Overview of the frameworkLint command for linting files of the current repository to ensure framework conventions are followed

1. Help

Command: bin/frameworkLint --help

SYNOPSIS:
    Lint files of the current repository to ensure framework conventions
    are followed.


USAGE: frameworkLint [OPTIONS]
USAGE: frameworkLint [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q] [--format <format>]
  [--expected-warnings-count <expected-warnings-count>]

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/frameworkLint.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.

OPTIONS:
  --format <format> {single}
    Define output format of this command.
    Possible values: 
      - plain
      - checkstyle
    Default value: plain
  --expected-warnings-count <expected-warnings-count> {single}
    Specify expected warning count (default: 0)


DESCRIPTION:
Lint files of the current repository
  - check if all Namespace::functions are existing in the framework
  - check that function defined in a .sh is correctly named
  - check each function has a bats file associated

  - shdoc     - check that shdoc valid annotations are used
    - check that @require function matches naming convention and exists
    - check that at least @description is provided

VERSION: 3.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/frameworkLint/frameworkLint-binary.yaml

LICENSE: MIT License
Copyright (c) 2023-now François Chastanet

2. Usage

Lint files of the current repository to ensure framework conventions are followed.

This linter is used in pre-commit hooks. See .pre-commit-config.yaml.

13 - megalinter command

Overview of the megalinter command for running comprehensive code quality checks using MegaLinter

1. Help

Command: bin/megalinter --help

Run MegaLinter for comprehensive code quality checks.

SYNOPSIS:
    Run megalinter over this repository.

USAGE: megalinter [OPTIONS]
USAGE: megalinter [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q] [--format <<Format>>] [--fix] [--filesOnly] [--incremental|-i]
  [--image <<ImageName>>] [--config-file <<ConfigFile>>]
  [--check-megalinter-version]

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/megalinter.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.

OPTIONS:
  --format <<Format>> {single}
    Define output format of this command.
    Possible values: 
      - plain
      - json
    Default value: plain
  --fix {single}
    Apply linters fixes automatically.
  --filesOnly {single}
    Skip linters that run in project mode.
  --incremental, -i {single}
    Run megalinter only on files that are git staged.
  --image <<ImageName>> {single}
    Specify docker megalinter image name to use.
    Default value: oxsecurity/megalinter-terraform:v9
  --config-file <<ConfigFile>> {single}
    Specify megalinter config filename to use.
    Default value: .mega-linter.yml
  --check-megalinter-version {single}
    Check if new version of megalinter is available (compared to default ima
    ge). Exits 1 if yes and displays new version number.



DESCRIPTION:
megalinter image  will be used.
<files> optionally you can provide a list of files to run megalinter on
this mode is incompatible with --incremental option.

VERSION: 3.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/megalinter/megalinter-binary.yaml

LICENSE: MIT License
Copyright (c) 2023-now François Chastanet

14 - shellcheckLint command

Overview of the shellcheckLint command for linting shell scripts using ShellCheck

1. Help

Command: bin/shellcheckLint --help

ShellCheck wrapper with automatic installation of ShellCheck.

SYNOPSIS:
    Lint bash files using shellcheck.

USAGE: shellcheckLint [OPTIONS] [ARGUMENTS]
USAGE: shellcheckLint [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q] [--format|-f <format>] [--staged] [--xargs]

ARGUMENTS:
  [shellcheckFiles {list} (optional)]    files to validate with shellcheck.
    If not provided, all files from git repository which are beginning
    with a bash shebang, unless --staged option is provided.


GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/shellcheckLint.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.

SPECIFIC OPTIONS:
  --format, -f <format> {single}
    define output format of this command
    Possible values: 
      - checkstyle
      - diff
      - gcc
      - json
      - json1
      - quiet
      - tty
    Default value: tty
  --staged {single}
    lint only staged git files(files added to file list to be committed)
    and which are beginning with a bash shebang.

  --xargs {single}
    uses parallelization(using xargs command) only if tty format


DESCRIPTION:
shellcheck wrapper that will:

- install new shellcheck version(0.9.0) automatically

- by default, lint all git files of this project
    which are beginning with a bash shebang
    except if the option --staged is passed

Special configuration .shellcheckrc:
  use the following line in your .shellcheckrc file to exclude
  some files from being checked (use grep -E syntax)   exclude=^bin/compile$

SHELLCHECK HELP
Usage: shellcheck [OPTIONS...] FILES...
  -a                  --check-sourced            Include warnings from sourced files
  -C[WHEN]            --color[=WHEN]             Use color (auto, always, never)
  -i CODE1,CODE2..    --include=CODE1,CODE2..    Consider only given types of warnings
  -e CODE1,CODE2..    --exclude=CODE1,CODE2..    Exclude types of warnings
                      --extended-analysis=bool   Perform dataflow analysis (default true)
  -f FORMAT           --format=FORMAT            Output format (checkstyle, diff, gcc, json, json1, quiet, tty)
                      --list-optional            List checks disabled by default
                      --norc                     Don't look for .shellcheckrc files
                      --rcfile=RCFILE            Prefer the specified configuration file over searching for one
  -o check1,check2..  --enable=check1,check2..   List of optional checks to enable (or 'all')
  -P SOURCEPATHS      --source-path=SOURCEPATHS  Specify path when looking for sourced files ("SCRIPTDIR" for script's dir)
  -s SHELLNAME        --shell=SHELLNAME          Specify dialect (sh, bash, dash, ksh, busybox)
  -S SEVERITY         --severity=SEVERITY        Minimum severity of errors to consider (error, warning, info, style)
  -V                  --version                  Print version information
  -W NUM              --wiki-link-count=NUM      The number of wiki links to show, when applicable
  -x                  --external-sources         Allow 'source' outside of FILES
                      --help                     Show this usage summary and exit


VERSION: 3.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/shellcheckLint/shellcheckLint-binary.yaml

LICENSE: MIT License
Copyright (c) 2022-now François Chastanet

15 - html2image command

Overview of the html2image command for generating images from HTML files

1. Help

Command: bin/html2image --help

Generate images from HTML files using Puppeteer.

SYNOPSIS:
    Converts HTML files to images using Puppeteer.

USAGE: html2image [OPTIONS] [ARGUMENTS]
USAGE: html2image [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q] [--ci] [--format|-f <Format>] [--same-dir]
  [--output-dir|-d <OutputDir>] [--output|-o <OutputFile>]
  [--transform-cmd|-t <TransformCmd>] [--viewport <Viewport>]
  [--quality <Quality>] [--full-page] [--wait-for-render <Milliseconds>]
  [--wait-for-selector <Selector>] [--inject-css <CssFile>]
  [--hide-selector <Selector>] [--file-filter <Regex>]

ARGUMENTS:
  [HTMLFiles {list} (optional)]

    HTML files to convert.

    NO FILES:

    If not provided, all HTML files from git repository will be converted.

    STDIN:

    If '-' is provided, HTML content will be read from stdin.
    Incompatible with --output unless stdin is used.

    If using stdin, the option --output
    is required to specify the output file path.

    If using stdin, the option --same-dir and --output-dir cannot be used.

    If using stdin, the option --transform-cmd
    can be used to apply a transform command to the HTML content before
    conversion (the HTML content will be passed to the transform command
    via stdin).


GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/html2image.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.

OPTIONS:
  --ci {single}
    Activate continuous integration mode (tmp folder not shared with host)

  --format, -f <Format> {list} (optional)
    Output image format (default: webp if not provided)
    Possible values: 
      - png: PNG raster format
      - jpg: JPEG raster format
      - jpeg: JPEG raster format (alias)
      - webp: WebP format (recommended)
  --same-dir {single}
    Write output file in same directory as source file
    with the same base name (except extension).
    Incompatible with --output-dir and --output.

  --output-dir, -d <OutputDir> {single}
    Output directory for generated images (default: doc/images).
    Incompatible with --same-dir and --output.

  --output, -o <OutputFile> {single}
    Output file path. Required when using stdin input.
    Incompatible with --same-dir and --output-dir.

  --transform-cmd, -t <TransformCmd> {single}
    Transform command to apply before generating image.
    Use %tempFile% placeholder for temporary HTML output file.
    Example: 'npx -y @markwhen/mw -o timeline -d %tempFile%'

  --viewport <Viewport> {single}
    Browser viewport size in WIDTHxHEIGHT format (e.g., 1920x1080). If not s
    pecified, the viewport is automatically sized to fit the page content.

  --quality <Quality> {single}
    Image quality for JPEG/WEBP formats, 0-100 (default: 90).

    Default value: 90
  --full-page {single}
    Capture full scrollable page height instead of viewport height.

  --wait-for-render <Milliseconds> {single}
    Extra wait time in milliseconds after page load, for JS-rendered
    content such as SPAs or web components (default: 0).
    Example: --wait-for-render 2000

    Default value: 0
  --wait-for-selector <Selector> {single}
    CSS selector to wait for before taking the screenshot.
    Useful when the target element is rendered asynchronously.
    Example: --wait-for-selector '#app'

  --inject-css <CssFile> {single}
    Path to a CSS file to inject into the page before screenshot.
    Useful to override styles, hide elements, or apply custom theme.
    Example: --inject-css custom.css

  --hide-selector <Selector> {single}

    CSS selector: the last matching element will be hidden before screenshot.
    Useful to remove floating toolbars or overlays from the captured image.
    Example: --hide-selector '#timeline > div.fixed'

  --file-filter <Regex> {single}
    Only process files matching the regular expression

    Example: --file-filter '(\.html|\.htm)$'

    Default value: (\.html|\.htm)$


DESCRIPTION:
Converts HTML files to images (PNG, JPEG, WEBP) using Puppeteer. Supports tr
ansform commands to generate HTML from other formats (e.g., Markwhen).
Can process files from git repository, specified files, or stdin.

USAGE EXAMPLES:

# Convert HTML files from git repository


html2image --format webp --same-dir


# Convert specific HTML file


html2image --format webp --same-dir file.html


# Convert Markwhen file with transform


html2image --format webp --same-dir \
  --transform-cmd 'npx -y @markwhen/mw -o timeline -d %tempFile%' \
  file.mwh


# Convert from stdin


echo "<html><body>Hello</body></html>" | \
  html2image --format png --output output.png


# Convert with custom css injection


html2image --format webp --same-dir \
  --transform-cmd 'npx -y @markwhen/mw -o timeline -d %tempFile%' \
  --inject-css src/_binaries/html2image/tests/test-markwhen.css \
  src/_binaries/html2image/tests/test-markwhen.mwh


CHANGELOG:

Version 1.0.1 (2026-05-16):

  - Fix: handle same-directory output with stdin input correctly

Version 1.0 (2026-04-24):

  - Initial version   - Support for PNG, JPEG, WEBP formats
  - Transform command support with %tempFile% placeholder
  - Stdin input support   - Configurable viewport size
  - CI mode with extension checking

VERSION: 1.0.1

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/html2image/html2image-binary.yaml

LICENSE: MIT License
Copyright (c) 2026-now François Chastanet

16 - krokiWrapper command

Overview of the krokiWrapper command for converting diagram files to images using Kroki CLI

1. Help

Command: bin/krokiWrapper --help

Convert diagram files to images using Kroki CLI. Supports multiple diagram formats including PlantUML, Mermaid, Graphviz, and many more.

SYNOPSIS:
    Convert diagrams to images using Kroki CLI or run Kroki server.
    https://docs.kroki.io/kroki/setup/kroki-cli/


USAGE: krokiWrapper [OPTIONS]
USAGE: krokiWrapper [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q] [--ci] [--same-dir] [--output-dir <OutputDir>]
  [--format <Format>] [--force-update] [--server <Action>]
  [--server-port <Port>]

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values:
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /home/wsl/fchastanet/bash-dev-env/vendor/bash-tools-frame
      work/logs/krokiWrapper.log
  --display-level <display-level> {single}
    Set display level
    Possible values:
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values:
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.

OPTIONS:
  --ci {single}
    Activate continuous integration mode (tmp folder not shared with host)

  --same-dir {single}
    Write output file in same directory as source file
    and with the same base name (except extension)
    Incompatible with the option --output-dir

  --output-dir <OutputDir> {single}
    Define output directory of this command (default: <currentDirectory>)
    Incompatible with the option --same-dir

  --format <Format> {single}
    Output format for wrapper mode: svg, png, pdf (default: svg)
    Note: When using 'convert' subcommand, use kroki's native -f flag

    Possible values:
      - svg: SVG vector format (recommended for web)
      - png: PNG raster format
      - pdf: PDF document format
  --force-update {single}
    Force download of kroki binary even if already cached


SERVER OPTIONS:
  --server <Action> {single}
    Server management action: start, stop, status

    Possible values:
      - start: Start Kroki server using Docker Compose
      - stop: Stop Kroki server containers
      - status: Show Kroki server status
  --server-port <Port> {single}
    Port for Kroki server (default: 8000)



DESCRIPTION:
Convert diagrams to images using Kroki CLI or run a local Kroki server.
https://docs.kroki.io/kroki/setup/kroki-cli/

Kroki CLI allows you to convert various diagram formats (PlantUML, Mermaid,
Graphviz, BlockDiag, SeqDiag, ActDiag, NwDiag, PacketDiag, RackDiag, Bytefie
ld, Ditaa, Erd, GraphViz, Nomnoml, Pikchr, Structurizr, SvgBob, UMLet, Vega,
Vegalite, WaveDrom, Excalidraw, and more) to images (SVG, PNG, PDF, etc.).

KROKI HELP

Convert text diagram to image.
By default, the output is written to a file with the basename of the source file and the appropriate extension.
Example: kroki convert hello.dot

Usage:
  kroki [command]

Available Commands:
  completion  Generate the autocompletion script for the specified shell
  convert     Convert text diagram to image
  decode      Decode an encoded (deflate + base64) diagram
  encode      Encode text diagram in deflate + base64 format
  help        Help about any command
  version     Print the version of kroki

Flags:
  -h, --help   help for kroki

Use "kroki [command] --help" for more information about a command.

SERVER MODE

Use --server to manage a local Kroki server using Docker:

  --server start [--server-port 8000]
    Start Kroki server with all companion services

  --server stop
     Stop Kroki server and remove containers

  --server status
     Show server status and URL

The server includes: Gateway, Mermaid, BPMN, and Excalidraw services.

VERSION: 1.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/krokiWrapper/krokiWrapper-binary.yaml

LICENSE: MIT License
Copyright (c) 2026-now François Chastanet

17 - mermaid command

Overview of the mermaid command for generating Mermaid diagrams

1. Help

Command: bin/mermaid --help

Generate Mermaid diagrams.

SYNOPSIS:
    Generates mermaid diagrams from mermaid files.

USAGE: mermaid [OPTIONS]
USAGE: mermaid [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q] [--ci] [--format|-f <Format>] [--same-dir]
  [--output-dir|-o <OutputDir>]

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values:
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /home/wsl/fchastanet/bash-dev-env/vendor/bash-tools-frame
      work/logs/mermaid.log
  --display-level <display-level> {single}
    Set display level
    Possible values:
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values:
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.

OPTIONS:
  --ci {single}
    Activate continuous integration mode (tmp folder not shared with host)

  --format, -f <Format> {list} (optional)
    Defines output format of this command (default: svg if not provided)
    Possible values:
      - svg
      - png
      - pdf
  --same-dir {single}
    Write output file in same directory as source file
    and with the same base name (except extension)
    Incompatible with the option --output-dir

  --output-dir, -o <OutputDir> {single}
    Define output directory of this command (default: <currentDirectory>)
    Incompatible with the option --same-dir



DESCRIPTION:
Generates mermaid diagrams from mermaid files in formats provided

MERMAID HELP
Usage: mmdc [options]

Options:
  -V, --version                                   output the version number
  -t, --theme [theme]                             Theme of the chart (choices: "default", "forest", "dark", "neutral", default: "default")
  -w, --width [width]                             Width of the page (default: 800)
  -H, --height [height]                           Height of the page (default: 600)
  -i, --input <input>                             Input mermaid file. Files ending in .md will be treated as Markdown and all charts (e.g. ```mermaid (...)``` or :::mermaid (...):::) will be extracted and generated. Use `-` to read from stdin.
  -o, --output [output]                           Output file. It should be either md, svg, png, pdf or use `-` to output to stdout. Optional. Default: input + ".svg"
  -a, --artefacts [artefacts]                     Output artefacts path. Only used with Markdown input file. Optional. Default: output directory
  -j, --jobs <jobs>                               Number of parallel jobs to run when rendering multiple diagrams. Defaults to half the available CPUs. (default: 6)
  -e, --outputFormat [format]                     Output format for the generated image. (choices: "svg", "png", "pdf", default: Loaded from the output file extension)
  -b, --backgroundColor [backgroundColor]         Background color for pngs/svgs (not pdfs). Example: transparent, red, '#F0F0F0'. (default: "white")
  -c, --configFile [configFile]                   JSON configuration file for mermaid.
  -C, --cssFile [cssFile]                         CSS file for the page.
  -I, --svgId [svgId]                             The id attribute for the SVG element to be rendered.
  -s, --scale [scale]                             Puppeteer scale factor (default: 1)
  -f, --pdfFit                                    Scale PDF to fit chart
  -q, --quiet                                     Suppress log output
  -p --puppeteerConfigFile [puppeteerConfigFile]  JSON configuration file for puppeteer.
  --iconPacks <icons...>                          Icon packs to use, e.g. @iconify-json/logos. These should be Iconify NPM packages that expose a icons.json file, see https://iconify.design/docs/icons/json.html. These will be downloaded from https://unkpg.com when needed. (default: [])
  --iconPacksNamesAndUrls <prefix#iconsurl...>    Icon packs to use, e.g. azure#https://raw.githubusercontent.com/NakayamaKento/AzureIcons/refs/heads/main/icons.json where the name (prefix) of the icon pack is defined before the "#" and the url of the json definition after the "#". These should be Iconify json file formatted as IconifyJson, see https://iconify.design/docs/icons/json.html. These will be downloaded when needed. (default: [])
  -h, --help                                      display help for command

VERSION: 1.1

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/mermaid/mermaid-binary.yaml

LICENSE: MIT License
Copyright (c) 2026-now François Chastanet

18 - plantuml command

Overview of the plantuml command for generating PlantUML diagrams

1. Help

Command: bin/plantuml --help

Generate PlantUML diagrams using PlantUML. Supports various output formats including PNG, SVG.

SYNOPSIS:
    Generates plantuml diagrams from puml files.

USAGE: plantuml [OPTIONS] [ARGUMENTS]
USAGE: plantuml [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q] [--ci] [--format|-f <Format>] [--limit-size|-l <LimitSize>]
  [--same-dir] [--output-dir|-o <OutputDir>] [--include-paths <IncludePaths>]
  [--elk]

ARGUMENTS:
  [PlantumlFiles {list} (optional)]    Plantuml files (if not provided, deduce files
    from git repository with .puml extension)


GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /bash/logs/plantuml.log
  --display-level <display-level> {single}
    Set display level
    Possible values: 
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values: 
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.

OPTIONS:
  --ci {single}
    Activate continuous integration mode (tmp folder not shared with host)

  --format, -f <Format> {list} (optional)
    Defines output format of this command
    Possible values: 
      - svg
      - png
  --limit-size, -l <LimitSize> {single}
    Define PLANTUML_LIMIT_SIZE
    use plantuml software default size if not provided

    Default value: 0
  --same-dir {single}
    Write image file in same directory as source file
    and with the same base name (except extension)
    Incompatible with the option --output-dir

  --output-dir, -o <OutputDir> {single}
    Define output directory of this command (default: <currentDirectory>)
    Incompatible with the option --same-dir

  --include-paths <IncludePaths> {single}
    Comma-separated list of paths to make shared inside docker container
    so that !include directives in plantuml files can work
    relative to these paths.

    Example: --include-paths "dir1,dir2,dir3"

    Each path will be validated for existence and mounted separately.
    If not provided, the current directory will be used as include path.

  --elk {single}
    Enable ELK (Eclipse Layout Kernel) support by downloading and
    mounting elk-full.jar. The jar is downloaded from
    http://beta.plantuml.net/elk-full.jar and cached in /tmp/bash-framework/
    bash-framework-1-1qqMcp/bash-framework/elk-full.jar. It will be re-downl
    oaded if older than 1 month.



DESCRIPTION:
Generates plantuml diagrams from puml files in formats provided

CHANGELOG

Version 3.3 (2026-04-09):

  - Fail if syntax error in plantuml file

  - restored metadata so files are not regenerated if plantuml
    file is not changed

PLANTUML HELP

docker was not available while generating this documentation

VERSION: 3.3

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/plantuml/plantuml-binary.yaml

LICENSE: MIT License
Copyright (c) 2023-now François Chastanet

19 - rimageWrapper command

Overview of the rimageWrapper command for reducing image size from source image files using rimage

1. Help

Command: bin/rimageWrapper --help

Reduce image size from source image files using the rimage tool.

SYNOPSIS:
    Compression and conversion of images using Rimage.
    https://github.com/vlad-salone/rimage


USAGE: rimageWrapper [OPTIONS] [ARGUMENTS]
USAGE: rimageWrapper [--help|-h] [--config]
  [--bash-framework-config <bash-framework-config>] [--verbose|-v] [-vv] [-vvv]
  [--log-level <log-level>] [--log-file <log-file>]
  [--display-level <display-level>] [--no-color] [--theme <theme>] [--version]
  [--quiet|-q] [--ci] [--same-dir] [--output-dir|-o <OutputDir>]

ARGUMENTS:
  command {single} (mandatory)    command to run with rimageWrapper, e.g. mozjpeg, oxipng, etc.

    Possible values:
      - avif: Encode images into AVIF format. (Small and Efficient)
      - farbfeld: Encode images into Farbfeld format. (Bitmapped)
      - jpeg: Encode images into JPEG format. (Progressive-able)
      - jpeg_xl: Encode images into JpegXL format. (Big but Lossless)
      - mozjpeg: Encode images into JPEG format using MozJpeg codec.
          (RECOMMENDED and Small)

      - oxipng: Encode images into PNG format using OxiPNG codec.
          (Progressive-able)

      - png: Encode images into PNG format.
      - ppm: Encode images into PPM format. (Bitmapped)
      - qoi: Encode images into QOI format. (Trendy and Small)
      - webp: Encode images into WebP format. (Lossless-able)
      - help: Print this message or the help of the given subcommand(s)

GLOBAL OPTIONS:
  --help, -h {single}
    Displays this command help
  --config {single}
    Displays configuration
  --bash-framework-config <bash-framework-config> {single}
    Use alternate bash framework configuration.
  --verbose, -v {single}
    Info level verbose mode (alias of --display-level INFO)
  -vv {single}
    Debug level verbose mode (alias of --display-level DEBUG)
  -vvv {single}
    Trace level verbose mode (alias of --display-level TRACE)
  --log-level <log-level> {single}
    Set log level
    Possible values:
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: OFF
  --log-file <log-file> {single}
    Set log file
    Default value: /home/wsl/fchastanet/bash-dev-env/vendor/bash-tools-frame
      work/logs/rimageWrapper.log
  --display-level <display-level> {single}
    Set display level
    Possible values:
      - OFF
      - ERR
      - ERROR
      - WARN
      - WARNING
      - INFO
      - DEBUG
      - TRACE
    Default value: INFO
  --no-color {single}
    Produce monochrome output. alias of --theme noColor.
  --theme <theme> {single}
    Choose color theme - default-force means colors will be produced even if
    command is piped.
    Possible values:
      - default
      - default-force
      - noColor
    Default value: default
  --version {single}
    Print version information and quit.
  --quiet, -q {single}
    Quiet mode, doesn't display any output.

OPTIONS:
  --ci {single}
    Activate continuous integration mode (tmp folder not shared with host)

  --same-dir {single}
    Write output file in same directory as source file
    and with the same base name (except extension)
    Incompatible with the option --output-dir

  --output-dir, -o <OutputDir> {single}
    Define output directory of this command (default: <currentDirectory>)
    Incompatible with the option --same-dir



DESCRIPTION:
Compression and conversion of images using Rimage.
https://github.com/vlad-salone/rimageWrapper

RIMAGE HELP

Optimize images natively with best-in-class codecs

Usage: rimage [COMMAND]

Commands:
  avif      Encode images into AVIF format. (Small and Efficient)
  farbfeld  Encode images into Farbfeld format. (Bitmapped)
  jpeg      Encode images into JPEG format. (Progressive-able)
  jpeg_xl   Encode images into JpegXL format. (Big but Lossless)
  mozjpeg   Encode images into JPEG format using MozJpeg codec. (RECOMMENDED and Small)
  oxipng    Encode images into PNG format using OxiPNG codec. (Progressive-able)
  png       Encode images into PNG format.
  ppm       Encode images into PPM format. (Bitmapped)
  qoi       Encode images into QOI format. (Trendy and Small)
  webp      Encode images into WebP format. (Lossless-able)
  help      Print this message or the help of the given subcommand(s)

Options:
  -h, --help     Print help
  -V, --version  Print version

List of supported codecs
| Image Format  | Input | Output | Note            |
| ------------- | ----- | ------ | --------------- |
| avif          | O     | O      | Static only     |
| bmp           | O     | X      |                 |
| farbfeld      | O     | O      |                 |
| hdr           | O     | O      |                 |
| jpeg          | O     | O      |                 |
| jpeg_xl(jxl)  | O     | O      |                 |
| mozjpeg(moz)  | O     | O      |                 |
| oxipng(oxi)   | O     | O      | Static only     |
| png           | O     | O      | Static only     |
| ppm           | O     | O      |                 |
| psd           | O     | X      |                 |
| qoi           | O     | O      |                 |
| tiff          | O     | X      |                 |
| webp          | O     | O      | Static only     |

List of supported preprocessing options
- Resize
- Quantization
- Alpha premultiply

List of supported mode for output info presenting
- No-progress (Shown on Default)
- Quiet (Show all msgs on Default)

For more info use rimageWrapper help <command>
E.g.: rimageWrapper help mozjpeg

RIMAGE ADVANCED OPTIONS

Options: --quality <NUM>     Quality, values 60-80 are recommended.
    [default: 75]

--chroma_quality <NUM>     Separate chrome quality.

--baseline     Set to use baseline encoding (by default is progressive).

--no_optimize_coding     Set to make files larger for no reason.

--smoothing <NUM>     Use MozJPEG's smoothing.

--colorspace <COLOR>     Set color space of JPEG being written.
    [default: ycbcr]     [possible values: ycbcr, grayscale, rgb]

--multipass     Specifies whether multiple scans should be considered during
trellis quantization.

--subsample <PIX>     Sets chroma subsampling.

--qtable <TABLE>     Use a specific quantization table.
    [default: NRobidoux]

    [possible values: AhumadaWatsonPeterson, AnnexK, Flat,
    KleinSilversteinCarney, MSSSIM, NRobidoux,
    PSNRHVS, PetersonAhumadaWatson, WatsonTaylorBorthwick]

VERSION: 1.0

AUTHOR: [François Chastanet](https://github.com/fchastanet)

SOURCE FILE: https://github.com/fchastanet/bash-tools-framework/tree/master/src/_binaries/rimageWrapper/rimageWrapper-binary.yaml

LICENSE: MIT License
Copyright (c) 2026-now François Chastanet