mirror of
https://github.com/kvz/bash3boilerplate.git
synced 2024-12-19 22:57:51 +00:00
Merge branch 'master' of github.com:kvz/bash3boilerplate
Conflicts: main.sh
This commit is contained in:
commit
e2602f6a58
26
README.md
26
README.md
@ -1,3 +1,13 @@
|
||||
# bash3boilerplate
|
||||
|
||||
<!-- badges/ -->
|
||||
[![Build Status](https://secure.travis-ci.org/kvz/bash3boilerplate.png?branch=master)](http://travis-ci.org/kvz/bash3boilerplate "Check this project's build status on TravisCI")
|
||||
[![Gittip donate button](http://img.shields.io/gittip/kvz.png)](https://www.gittip.com/kvz/ "Sponsor the development of bash3boilerplate via Gittip")
|
||||
[![Flattr donate button](http://img.shields.io/flattr/donate.png?color=yellow)](https://flattr.com/submit/auto?user_id=kvz&url=https://github.com/kvz/bash3boilerplate&title=bash3boilerplate&language=&tags=github&category=software "Sponsor the development of bash3boilerplate via Flattr")
|
||||
[![PayPayl donate button](http://img.shields.io/paypal/donate.png?color=yellow)](https://www.paypal.com/cgi-bin/webscr?cmd=_donations&business=kevin%40vanzonneveld%2enet&lc=NL&item_name=Open%20source%20donation%20to%20Kevin%20van%20Zonneveld¤cy_code=USD&bn=PP-DonationsBF%3abtn_donate_SM%2egif%3aNonHosted "Sponsor the development of bash3boilerplate via Paypal")
|
||||
[![BitCoin donate button](http://img.shields.io/bitcoin/donate.png?color=yellow)](https://coinbase.com/checkouts/19BtCjLCboRgTAXiaEvnvkdoRyjd843Dg2 "Sponsor the development of bash3boilerplate via BitCoin")
|
||||
<!-- /badges -->
|
||||
|
||||
When hacking up BASH scripts, I often find there are some
|
||||
higherlevel things like logging, configuration, commandline argument
|
||||
parsing that:
|
||||
@ -12,15 +22,9 @@ me) programs.
|
||||
|
||||
An up to date [intro is found on my blog](http://kvz.io/blog/2013/02/26/introducing-bash3boilerplate/).
|
||||
|
||||
## Contributing
|
||||
|
||||
Feel free to fork this project. We will happily merge bug fixes or other small
|
||||
improvements. For bigger changes you should probably get in touch with us
|
||||
before you start to avoid not seeing them merged.
|
||||
|
||||
## Versioning
|
||||
|
||||
Discourse implements the Semantic Versioning guidelines.
|
||||
This project implements the Semantic Versioning guidelines.
|
||||
|
||||
Releases will be numbered with the following format:
|
||||
|
||||
@ -32,4 +36,10 @@ And constructed with the following guidelines:
|
||||
* New additions without breaking backward compatibility bumps the minor (and resets the patch)
|
||||
* Bug fixes and misc changes bumps the patch
|
||||
|
||||
For more information on SemVer, please visit http://semver.org/.
|
||||
|
||||
For more information on SemVer, please visit [http://semver.org](http://semver.org).
|
||||
|
||||
## License
|
||||
|
||||
Copyright (c) 2013 Kevin van Zonneveld, [http://kvz.io](http://kvz.io)
|
||||
Licensed under MIT: [http://kvz.io/licenses/LICENSE-MIT](http://kvz.io/licenses/LICENSE-MIT)
|
||||
|
28
main.sh
28
main.sh
@ -15,7 +15,7 @@
|
||||
# - Kevin van Zonneveld (http://kvz.io)
|
||||
#
|
||||
# Usage:
|
||||
# LOG_LEVEL=7 ./main.sh first_arg second_arg
|
||||
# LOG_LEVEL=7 ./main.sh -f /tmp/x -d
|
||||
#
|
||||
# Licensed under MIT
|
||||
# Copyright (c) 2013 Kevin van Zonneveld (http://kvz.io)
|
||||
@ -30,8 +30,8 @@ LOG_LEVEL="${LOG_LEVEL:-6}" # 7 = debug -> 0 = emergency
|
||||
# Commandline options. This defines the usage page, and is used to parse cli
|
||||
# opts & defaults from. The parsing is unforgiving so be precise in your syntax
|
||||
read -r -d '' usage <<-'EOF'
|
||||
-f [arg] Filename to process.
|
||||
-t [arg] Location of tempfile. Default="/tmp/x"
|
||||
-f [arg] Filename to process. Required.
|
||||
-t [arg] Location of tempfile. Default="/tmp/bar"
|
||||
-d Enables debug mode
|
||||
-h This page
|
||||
EOF
|
||||
@ -69,13 +69,12 @@ function notice () { [ "${LOG_LEVEL}" -ge 5 ] && echo "$(_fmt notice) ${@}" 1
|
||||
function info () { [ "${LOG_LEVEL}" -ge 6 ] && echo "$(_fmt info) ${@}" 1>&2 || true; }
|
||||
function debug () { [ "${LOG_LEVEL}" -ge 7 ] && echo "$(_fmt debug) ${@}" 1>&2 || true; }
|
||||
|
||||
|
||||
function help () {
|
||||
echo ""
|
||||
echo " ${@}"
|
||||
echo ""
|
||||
echo " ${usage}"
|
||||
echo ""
|
||||
echo "" 1>&2
|
||||
echo " ${@}" 1>&2
|
||||
echo "" 1>&2
|
||||
echo " ${usage}" 1>&2
|
||||
echo "" 1>&2
|
||||
exit 1
|
||||
}
|
||||
|
||||
@ -134,7 +133,7 @@ shift $((OPTIND-1))
|
||||
[ "$1" = "--" ] && shift
|
||||
|
||||
|
||||
### Switches
|
||||
### Switches (like -d for debugmdoe, -h for showing helppage)
|
||||
#####################################################################
|
||||
|
||||
# debug mode
|
||||
@ -145,22 +144,23 @@ fi
|
||||
|
||||
# help mode
|
||||
if [ "${arg_h}" = "1" ]; then
|
||||
# Help exists with code 1
|
||||
help "Help using ${0}"
|
||||
fi
|
||||
|
||||
|
||||
### Validation
|
||||
### Validation (decide what's required for running your script and error out)
|
||||
#####################################################################
|
||||
|
||||
[ -z "${arg_f}" ] && help "Setting a filename with -f is required"
|
||||
[ -z "${LOG_LEVEL}" ] && emergency "Cannot continue without loglevel. "
|
||||
[ -z "${arg_f}" ] && help "Setting a filename with -f is required"
|
||||
[ -z "${LOG_LEVEL}" ] && emergency "Cannot continue without LOG_LEVEL. "
|
||||
|
||||
|
||||
### Runtime
|
||||
#####################################################################
|
||||
|
||||
# Exit on error. Append ||true if you expect an error.
|
||||
# set -e is safer than #!/bin/bash -e because that is nutralised if
|
||||
# set -e is safer than #!/bin/bash -e because that is neutralised if
|
||||
# someone runs your script like `bash yourscript.sh`
|
||||
set -o errexit
|
||||
set -o nounset
|
||||
|
Loading…
Reference in New Issue
Block a user