Skip to content
/ bashew Public template

bash script micro-framework - from small stand-alone script to complex projects with CI/CD and testing

License

Notifications You must be signed in to change notification settings

pforret/bashew

Folders and files

NameName
Last commit message
Last commit date

Latest commit

Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

Shellcheck CI bash_unit CI version version

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

bashew.sh

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

Self-contained

  • all code contained in 1 single file (no external dependencies)
  • comes with README.md, CHANGELOG.md, ... markdown files
  • edit only Script:main() function and subroutines in beginning of script, all template code is at the end of the script

Option parsing

  • definition of flags/options/parameters in 1 place only
  • automatic creation of usage text based on definition above
  • short/long option parsing, based on definition above
  • option --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)
  • read multiple .env configuration files
  • predefined --quiet (no output) and --verbose (more output) modes
  • folder for temporary files (with automatic cleanup)
  • folder for log files (with automatic cleanup)
  • correct determination of script installation folder (resolve symbolic links)
  • easy CI/CD for Github (with shellcheck)

πŸ”₯ Usage

Program: bashew 1.18.2 by peter@forret.com
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

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 script
⏳  1. first we need the information of the author
Author full name         (pforret) > Peter Forret
Author email             (peter@forret.com) > 
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

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

$ 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!

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

πŸ¦ͺ Built with Bashew

  • bumpkeys: upgrade your SSH keys for better security
  • crontask: call scripts or URLs from a crontab file, with optional logging and webhook upon success/failure
  • jekyll_taxonomy: Generate tag and category pages for Jekyll static sites
  • m1_homebrew: Install homebrew in native mode on Apple MacOS ARM
  • mkdox: create and run Mkdocs Material websites using Docker image
  • netcheck: test network: interfaces, gateway, router, internet
  • note: Manage your notes, todo, ... with this nifty script
  • pa: like "php artisan" but more intelligent (use optimal PHP version for the project
  • progressbar: Easy, clever progress bar for (bash) scripts
  • rexec: repeat a command and be alerted when the output changes
  • saild: Start up your Laravel Sail dev setup in one go - Docker, Browser, Shell
  • screenshots: Let GitHub automatically make πŸ“Έ screenshots of all your websites
  • setver: Easy semver tool -- get/set git version (one-line superfast git commit)
  • shaml: Read YAML files inside bash scripts
  • shini: Read INI files inside bash scripts
  • shlaunch: Launch desktop/GUI apps from CLI (e.g. Chrome, PHPStorm, Photoshop ...)
  • shlorem: Lorem Ipsum generator for the command line
  • shmixcloud: download Mixcloud shows and add album art to m4a files
  • shoarma: Static Image Site Generator - make e.g. Jekyll posts from folder of images
  • shtext: Text manipulation in bash, by always using the fastest method
  • shwiki: Wikipedia CLI in bash
  • shwordle: Wordle-clone with variable # of letters and multiple languages
  • splashmark: download/create (unsplash/pixabay/replicate) pics and resize/add effects/add attribution/watermark
  • teams-cli: Send messages to MS Teams channels from CLI
  • xkcd: View a XKCD comic in your console/TTY

πŸ™ Acknowledgements

πŸ€” What's that name? Bashew?

  • derived from 'bash new'
  • rhymes with cashew

Stargazers over time

Stargazers over time

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy