Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bkuhlmann/bashsmith
A template for smithing Bash scripts.
https://github.com/bkuhlmann/bashsmith
bash shell
Last synced: 7 days ago
JSON representation
A template for smithing Bash scripts.
- Host: GitHub
- URL: https://github.com/bkuhlmann/bashsmith
- Owner: bkuhlmann
- License: other
- Created: 2014-08-20T03:53:32.000Z (about 10 years ago)
- Default Branch: main
- Last Pushed: 2024-08-18T21:32:36.000Z (3 months ago)
- Last Synced: 2024-08-18T22:37:40.177Z (3 months ago)
- Topics: bash, shell
- Language: Shell
- Homepage: https://alchemists.io/projects/bashsmith
- Size: 211 KB
- Stars: 19
- Watchers: 4
- Forks: 4
- Open Issues: 0
-
Metadata Files:
- Readme: README.adoc
- Funding: .github/FUNDING.yml
- License: LICENSE.adoc
- Citation: CITATION.cff
Awesome Lists containing this project
README
:toc: macro
:toclevels: 5
:figure-caption!:= Bashsmith
Bashsmith is a project template for smithing new link:https://www.gnu.org/software/bash[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.toc::[]
== Features
* Provides default project structure for creating new Bash projects.
* Provides default settings for making Bash scripts easier to develop and debug.== Requirements
* link:https://www.gnu.org/software/bash[Bash]
== Setup
To install, run:
[source,bash]
----
git clone https://github.com/bkuhlmann/bashsmith.git
cd bashsmith
git checkout 6.3.2
----== 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:....
├── 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).
....=== Template
The following documents what each template option is:
[source,bash]
----
# 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'
----=== Debugging
For debugging purposes, you can add the following option:
[source,bash]
----
# 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.
💡 For additional options, use `help set` to learn more.
== Development
To contribute, run:
[source,bash]
----
git clone https://github.com/bkuhlmann/bashsmith.git
cd bashsmith
----== Tests
Consider using link:https://github.com/sstephenson/bats[Bats].
== link:https://alchemists.io/policies/license[License]
== link:https://alchemists.io/policies/security[Security]
== link:https://alchemists.io/policies/code_of_conduct[Code of Conduct]
== link:https://alchemists.io/policies/contributions[Contributions]
== link:https://alchemists.io/policies/developer_certificate_of_origin[Developer Certificate of Origin]
== link:https://alchemists.io/projects/bashsmith/versions[Versions]
== link:https://alchemists.io/community[Community]
== Credits
Engineered by link:https://alchemists.io/team/brooke_kuhlmann[Brooke Kuhlmann].