Bashsmith is a project template for smithing new Bash shell-based projects based on best practices. This project is meant to be cloned and customized for your specific shell scripting needs giving you a foundation from which to get started faster than with an empty slate.
-
Provides default project structure for creating new Bash projects.
-
Provides default settings for making Bash scripts easier to develop and debug.
To install, run:
git clone https://github.com/bkuhlmann/bashsmith.git
cd bashsmith
git checkout 6.5.0
All files located within this project provide the basic structure/blueprint for creating new Bash script projects. The structure is organized as follows:
├── CHANGES.adoc # The details of past version releases. ├── CODE_OF_CONDUCT.adoc # Guidelines for encouraging harassment-free contributions. ├── CONTRIBUTING.adoc # The details of how to contribute to the project. ├── LICENSE.adoc # The license and copyright legalities of the project. ├── README.adoc # The project overview, setup, usage, testing, etc. ├── bin # A folder for executable Bash scripts. │ └── run # The main run script (which loads the lib and settings). ├── lib # A folder for Bash functions and custom code. │ └── cli.sh # Provides CLI prompt options for the main `run` script. ├── settings # The global/project settings for easy manipulation/tweaking. │ └── main.sh # The global settings (set with safe defaults).
The following documents what each template option is:
# Exit, with error message, when attempting to use an undefined variable.
# Alias: `set -u`.
set -o nounset
# Abort script at first error when a command exits with non-zero status.
# Alias: `set -e`.
set -o errexit
# Return exit status of the last command in the pipe that returned a non-zero return value.
set -o pipefail
# Defines newlines and tabs as delimiters for splitting words and iterating arrays.
IFS=$'\n\t'
Consider using Bats.
Engineered by Brooke Kuhlmann.