bash script micro-framework - from small stand-alone script to complex projects with CI/CD and testing
Part of network / Install with
bash script / project creator
to create a new stand-alone SCRIPT (just a xyz.sh script), with option parsing, color output (cf 1.
)
bashew.sh script
to create a new standalone script PROJECT (in a folder, with README) (cf 2.
)
bashew.sh project
to initialize a bashew-based REPO with CI/CD you just cloned (cf 3.
)
bashew init
README.md
, CHANGELOG.md
, ... markdown filesScript:main()
function and subroutines in beginning of script, all template code is at the end of the script--lorem [value]
is available inside the script as $lorem
IO:
functions for IO, with intelligent color usage (not when output is piped) (e.g. IO.success
, IO.die
)Str:
functions for string manipulation (e.g Str:lower
, Str:digest
)Os:
functions for e.g. required program checking (e.g. Os:require convert imagemagick
).env
configuration files--quiet
(no output) and --verbose
(more output) modesProgram: bashew 1.18.2 by [email protected]
Updated: May 1 16:49:18 2022
Description: package_description
Usage: bashew [-h] [-q] [-v] [-f] [-l <log_dir>] [-t <tmp_dir>] [-n <name>] <action>
Flags, options and parameters:
-h|--help : [flag] show usage [default: off]
-q|--quiet : [flag] no output [default: off]
-v|--verbose : [flag] output more [default: off]
-f|--force : [flag] do not ask for confirmation (always yes) [default: off]
-l|--log_dir <?> : [option] folder for debug files [default: /Users/pforret/log/bashew]
-t|--tmp_dir <?> : [option] folder for temp files [default: /tmp/bashew]
-n|--name <?> : [option] name of new script or project
<action> : [parameter] action to perform: script/project/init/update
bashew.sh script # will interactively ask for author & script details
bashew.sh -f script # will create new script with random name
bashew.sh -f -n "../list.sh" script # will create new script ../list.sh
Example:
$ bashew script
⏳ 1. first we need the information of the author
Author full name (pforret) > Peter Forret
Author email ([email protected]) >
Author (github) username (pforret) >
⏳ 2. now we need the path and name of this new script/repo
Script name (./bespoke_bunny.sh) >
⏳ 3. give some description of what the script should do
Script description (This is my script bespoke_bunny) > process log files
⏳ Creating script ./bespoke_bunny.sh ...
./bespoke_bunny.sh
$ bashew -f script
⏳ Creating script ./mediums_appease.sh ...
./mediums_appease.sh
$ bashew project # will interactively ask for author & script details
or
$ bashew -f project # will create new project with random name
or
$ bashew -f -n "tango" project # will create new project in folder "tango"
Example:
$ bashew -f project
⏳ Creating project ./bounden_brawled ...
CHANGELOG.md README.md VERSION.md LICENSE .gitignore .env.example bounden_brawled.sh bitbucket-pipelines .github
✅ next step: 'cd ./bounden_brawled' and start scripting!
$ git clone https://github.com/<you>/<your repo>.git
$ cd <your repo>
$ ./bashew.sh init # will ask for details and initialise/clean up the repo
$ setver push # will commit and push new code
$ setver new patch # will set new version to 0.0.1
$ setver set 1.0.0 # when your first working version is committed
$ git clone --depth=1 https://github.com/pforret/bashew.git <newname>
$ cd <newname>
$ ./bashew.sh init # will ask for details and iniialise/clean up the repo
$ git clone https://github.com/pforret/bashew.git
$ ln -s bashew/bashew.sh /usr/local/bin
$ basher install pforret/bashew