| Version | License | Install | Release notes |
|---|---|---|---|
0.2.1 |
Apache-2.0 | brew install codeforester/base/base-bash-libs |
v0.2.1 |
Reusable Bash libraries extracted from Base.
This repository provides sourceable Bash libraries for scripts that want consistent logging, command execution, filesystem editing, Git helper behavior, and import conventions without adopting the full Base workspace control plane.
lib/bash/std/lib_std.shFoundation helpers for logging, error handling, command execution, PATH updates, assertions, prompts, imports, and the publicBASE_BASH_LIBS_VERSIONconstant.lib/bash/file/lib_file.shFile editing helpers built on the stdlib, including idempotent marker-delimited file section updates.lib/bash/git/lib_git.shGit helper functions built on the stdlib for lightweight repository inspection, update, and script freshness checks.
See lib/bash/README.md for the package layout.
Install the library package from the Base Homebrew tap:
brew trust codeforester/base
brew install codeforester/base/base-bash-libsThe trust step is required on Homebrew versions that block formulae from
non-official taps until the tap is trusted. It is safe to run again on machines
that already trust codeforester/base.
Source the installed stdlib from the Homebrew prefix:
base_bash_libs_prefix="$(brew --prefix codeforester/base/base-bash-libs)"
source "$base_bash_libs_prefix/libexec/lib/bash/std/lib_std.sh"
printf 'base-bash-libs version: %s\n' "$BASE_BASH_LIBS_VERSION"Load companion libraries with absolute imports from the same package:
import "$base_bash_libs_prefix/libexec/lib/bash/file/lib_file.sh"
import "$base_bash_libs_prefix/libexec/lib/bash/git/lib_git.sh"You can use a git checkout, tarball extract, or copied source tree without
Homebrew. Keep the repository layout intact so lib_std.sh can find the root
VERSION file:
git clone https://github.com/codeforester/base-bash-libs.git vendor/base-bash-libsSource the stdlib from that checkout:
base_bash_libs_dir="$PWD/vendor/base-bash-libs"
source "$base_bash_libs_dir/lib/bash/std/lib_std.sh"
printf 'base-bash-libs version: %s\n' "$BASE_BASH_LIBS_VERSION"Load companion libraries with absolute imports from the same checkout:
import "$base_bash_libs_dir/lib/bash/file/lib_file.sh"
import "$base_bash_libs_dir/lib/bash/git/lib_git.sh"For projects that vendor dependencies or use git submodules, place this repository anywhere stable inside your project and source it by absolute path:
project_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd -P)"
base_bash_libs_dir="$project_root/vendor/base-bash-libs"
source "$base_bash_libs_dir/lib/bash/std/lib_std.sh"
import "$base_bash_libs_dir/lib/bash/file/lib_file.sh"
import "$base_bash_libs_dir/lib/bash/git/lib_git.sh"After lib_std.sh is sourced, BASE_BASH_LIBS_VERSION contains the package
version from the repository/package VERSION file. Downstream scripts can use
that readonly constant when they need to require a minimum library version.
See examples/std-usage.sh for a small standalone script that sources the
stdlib, imports the file helpers, logs progress, and runs a checked command.
The repo-root VERSION file is the source of truth for the package version.
The top strip in this README and the runtime BASE_BASH_LIBS_VERSION constant
are validated against that file.
base-bash-libs is licensed under Apache-2.0. See NOTICE for the project copyright notice.
Run the full local validation suite:
./tests/validate.shThe suite expects bats and shellcheck to be installed. On macOS:
brew install bats-core shellcheckThis repository is managed by Base. Base is useful for developing this repository, but it is not required to consume the Bash libraries from Homebrew, a source checkout, a vendored copy, or a git submodule.
Common commands:
basectl setup base-bash-libs
basectl check base-bash-libs
basectl doctor base-bash-libs
basectl test base-bash-libs