Skip to content

i9repository/basher

Repository files navigation

Part of part of Bashful Scripting network network / Install with basher install

Latest tag: version / latest release: version / Bash CI Shellcheck CI

bashew

Bashew Logo

bash script / project creator

⏳ TL;DR

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

🎯 Features

  • contained in 1 single file (no external dependencies)
  • comes with README.md, CHANGELOG.md, ... markdown files
  • edit only main() function and subroutines in beginning of script, all template code is at the end of the script
  • definition of flags/options/parameters in 1 place only
  • definition of dependencies (like curl, ffmpeg, imagemagick...) in 1 place only
  • automatic creation of usage text based on definition above
  • short/long option parsing, based on definition above
  • several functions for output to stdout/stderr, with intelligent color usage (not when output is piped)
  • reads a .env configuration file, if there is one
  • predefined quiet (no output) and verbose (more output) modes
  • folder for temporary files (with automatic cleanup)
  • folder for log files (with automatic cleanup)
  • easy CI/CD for Github (with shellcheck)
  • correct determination of script installation folder (resolve symbolic links)
  • see features.md for detailed information

🔥 Usage

Program: bashew 1.16.8 by peter@forret.com
Updated: Dec 17 21:28:04 2021
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

1. create new bash script (without repo)

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.sh -f script
…  Creating script ./towel_nappers.sh ...
./towel_nappers.sh

$ bashew.sh -f -q script
./iffiest_prepays.sh

2. create new bash project folder/repo (with README.md, CI/CD)

bashew.sh project               # will interactively ask for author & script details
bashew.sh -f project            # will create new project with random name
bashew.sh -f -n "tango" project # will create new project in folder "tango"

Example:

> bashew.sh -f project
…  Creating project ./tendon_mingle ...
CHANGELOG.md README.md VERSION.md LICENSE .gitignore tendon_mingle.sh bitbucket-pipelines .github/workflows  
✔  next step: 'cd ./tendon_mingle' and start scripting!

3. create a bash script repo, with CI/CD, with README, with tests, with versioning ...

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

and then, if you have setver.sh:

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

4. git clone into new repo

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

🚀 Installation

  • manually
git clone https://github.com/pforret/bashew.git
ln -s bashew/bashew.sh /usr/local/bin
  • or with basher package manager basher install
basher install pforret/bashew

🙏 Acknowledgements

🤔 What's that name? Bashew?

  • derived from 'bash new'
  • rhymes with cashew

Stargazers over time

Stargazers over time

About

No description, website, or topics provided.

Resources

License

Code of conduct

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages