This boilerplate does not cover advanced scripting, but focuses more on automating a neat UI/UX for shell scripts.
As someone who occassionally creates shell scripts I made this oriented for self use, so feel free to edit all/any part of the code to match your own styles.
If you do use this code, please give me some credit in the repo :)
- Neatly designed UI/UX
- Stores project data in a JSON file (
project.json
) - Built-in dependency checker
You can find an example script built using Shellplate in the /example
directory.
Shellplate in use:
An example script built using Shellplate:
Shellplate depends on the following packages which need to be installed manually depending on your platform.
git
jq
curl
tput
fmt
figlet
These can also be found in requirements.txt
- Open a terminal, clone this repo and cd into the Shellplate directory
git clone https://github.com/DarkGuy10/Shellplate.git cd Shellplate
- Execute the
Shellplate.sh
script and follow the interactive wizardbash Shellplate.sh
- If during the dependency check, any of the packages are marked
UNMET
, manually install them and rerun the script. - Your project is created at
out/<ProjectName>/
. Open the<ProjectName>.sh
file in the directory and place your code in themain()
function. - Happy scripting!
- Support for custom and prebuilt ANSII-based UI color schemes
- Built-in script updater
- Single script-file projects
- Script flags to skip the interactive wizard
<ProjectName>/
ascii_art.txt
<ProjectName>.sh
project.json
README.md
requirements.txt
ascii_art.txt
- A banner art for the project created usingfiglet
<ProjectName>.sh
- This is the main script file. Put your code inside themain()
functionproject.json
- Contains basic info about the project. It follows the following template:{ "name": "", "version": "", "author": "", "repository": "", "description": "" }
README.md
- The readme file of the project.requirements.txt
- Contains a list of packages which the script depends to run. NOTE : Do not removejq
andtput
fromrequirements.txt
. They are important for the boilerplate itself.
By default the <ProjectName>.sh
script file contains a few utility functions for easier UI/UX management.
pretty_banner
- clears the screen and prints a banner showing project name ASCII art and other detailscentre "some text"
- Print some text in centre of a region of 80 columns (80 is the maximum number of columns in the UI)header "some title"
- Print a bold header in centre, bounded by[]
Changelog can be found here.