Skip to content

Repository files navigation

Bashsmith

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.

Features

  • Provides default project structure for creating new Bash projects.

  • Provides default settings for making Bash scripts easier to develop and debug.

Requirements

Setup

To install, run:

git clone https://github.com/bkuhlmann/bashsmith.git
cd bashsmith
git checkout 7.3.0

Usage

File Structure

All files located within this project provide the basic structure/blueprint for creating new Bash script projects. The structure is organized as follows:

├── 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
│ └── main.sh # The global/project settings for easy manipulation/tweaking.
├── .gitignore # The Git list of folders and files to ignore.
├── LICENSE.adoc # The license and copyright legalities of the project.
└── README.adoc # The project overview, setup, usage, testing, etc.

Template

The following documents what each template option is:

# Abort script at first error when a command exits with non-zero status.# Alias: `set -e`.set -o errexit
# Exit, with error message, when attempting to use an undefined variable.# Alias: `set -u`.set -o nounset
# 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'

Debugging

For debugging purposes, you can add the following option:

# Prints all executed commands.# Alias: `set -x`.set -o xtrace

The above is useful for debugging purposes but probably not something you want always enabled.

Development

To contribute, run:

git clone https://github.com/bkuhlmann/bashsmith.git
cd bashsmith

Tests

Consider using Bats.

Credits

Engineered by Brooke Kuhlmann.

About

A template for smithing Bash scripts.

Topics

Resources

Stars

22 stars

Watchers

2 watching

Forks

Releases

Sponsor this project

Packages

Used by

Contributors

Languages