Skip to content

Commit

Permalink
Merge pull request #87 from kvz/fixup-after-230
Browse files Browse the repository at this point in the history
fixup example.sh like 2.3.0 main.sh
  • Loading branch information
zbeekman authored Feb 14, 2017
2 parents ff37895 + 2bbf6ee commit 9b86dcc
Show file tree
Hide file tree
Showing 12 changed files with 116 additions and 15 deletions.
2 changes: 2 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,8 @@ install:
before_install:
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then brew update; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then which gsed || brew install gnu-sed; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then which gtimeout || brew install coreutils; fi
- if [ "$TRAVIS_OS_NAME" = "osx" ]; then which bundle || gem install bundler; fi
- bash --version
- awk --version
before_cache:
Expand Down
3 changes: 2 additions & 1 deletion FAQ.md
Original file line number Diff line number Diff line change
Expand Up @@ -96,9 +96,10 @@ Somewhat inconsistent – but true to Unix ancestry – the abbreviation for our

## How can I locally develop and preview the b3bp website?

You should have a working Node.js >=10 and Ruby >=2 install on your workstation. When that is the case, you can run:
You should have a working Node.js >=10, Ruby >=2 and [YARN](https://yarnpkg.com) install on your workstation. When that is the case, you can run:

```bash
yarn install
npm run start
```

Expand Down
29 changes: 23 additions & 6 deletions example.sh
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
#
# LOG_LEVEL=7 ./example.sh -f /tmp/x -d (change this for your script)
#
# Based on a template by BASH3 Boilerplate v2.2.0
# Based on a template by BASH3 Boilerplate v2.3.0
# http://bash3boilerplate.sh/#authors
#
# The MIT License (MIT)
Expand Down Expand Up @@ -47,13 +47,34 @@ EOF
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/main.sh"


### Signal trapping and backtracing
##############################################################################

function __b3bp_cleanup_before_exit () {
info "Cleaning up. Done"
}
trap __b3bp_cleanup_before_exit EXIT

# requires `set -o errtrace`
__b3bp_err_report() {
local error_code
error_code=${?}
error "Error in ${__file} in function ${1} on line ${2}"
exit ${error_code}
}
# Uncomment the following line for always providing an error backtrace
# trap '__b3bp_err_report "${FUNCNAME:-.}" ${LINENO}' ERR


### Command-line argument switches (like -d for debugmode, -h for showing helppage)
##############################################################################

# debug mode
if [[ "${arg_d:?}" = "1" ]]; then
set -o xtrace
LOG_LEVEL="7"
# Enable error backtracing
trap '__b3bp_err_report "${FUNCNAME:-.}" ${LINENO}' ERR
fi

# verbose mode
Expand Down Expand Up @@ -83,11 +104,7 @@ fi
### Runtime
##############################################################################

function cleanup_before_exit () {
info "Cleaning up. Done"
}
trap cleanup_before_exit EXIT

info "__i_am_main_script: ${__i_am_main_script}"
info "__file: ${__file}"
info "__dir: ${__dir}"
info "__base: ${__base}"
Expand Down
16 changes: 11 additions & 5 deletions main.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,11 +27,18 @@ set -o pipefail
# set -o xtrace

if [[ "${BASH_SOURCE[0]}" != "${0}" ]]; then
__i_am_main_script="0" # false

if [[ "${__usage+x}" ]]; then
if [[ "${BASH_SOURCE[1]}" = "${0}" ]]; then
__i_am_main_script="1" # true
fi

__b3bp_external_usage="true"
__b3bp_tmp_source_idx=1
fi
else
__i_am_main_script="1" # true
[[ "${__usage+x}" ]] && unset -v __usage
[[ "${__helptext+x}" ]] && unset -v __helptext
fi
Expand All @@ -40,11 +47,7 @@ fi
__dir="$(cd "$(dirname "${BASH_SOURCE[${__b3bp_tmp_source_idx:-0}]}")" && pwd)"
__file="${__dir}/$(basename "${BASH_SOURCE[${__b3bp_tmp_source_idx:-0}]}")"
__base="$(basename "${__file}" .sh)"
if [[ "${BASH_SOURCE[0]}" != "${0}" ]]; then
__i_am_main_script="0" # false
else
__i_am_main_script="1" # true
fi


# Define the environment variables (and their defaults) that this script depends on
LOG_LEVEL="${LOG_LEVEL:-6}" # 7 = debug -> 0 = emergency
Expand Down Expand Up @@ -308,6 +311,7 @@ if [[ "${__b3bp_external_usage:-}" = "true" ]]; then
return
fi


### Signal trapping and backtracing
##############################################################################

Expand All @@ -326,6 +330,7 @@ __b3bp_err_report() {
# Uncomment the following line for always providing an error backtrace
# trap '__b3bp_err_report "${FUNCNAME:-.}" ${LINENO}' ERR


### Command-line argument switches (like -d for debugmode, -h for showing helppage)
##############################################################################

Expand Down Expand Up @@ -364,6 +369,7 @@ fi
### Runtime
##############################################################################

info "__i_am_main_script: ${__i_am_main_script}"
info "__file: ${__file}"
info "__dir: ${__dir}"
info "__base: ${__base}"
Expand Down
36 changes: 35 additions & 1 deletion test/acceptance.sh
Original file line number Diff line number Diff line change
Expand Up @@ -193,7 +193,41 @@ done <<< "$(find "${__dir}/scenario" -type f -iname 'run.sh')"

[[ "${1:-}" ]] && exit 0

# finally do some shellcheck linting
# Ensure correct syntax with all available bashes

if bashes=($(which -a bash 2> /dev/null )); then
for bash in "${bashes[@]}"; do
# shellcheck disable=SC2016
echo "==> ${bash} -n $(${bash} -c 'echo "(${BASH_VERSION})"')"
pushd "${__root}" > /dev/null

failed="false"

while IFS=$'\n' read -r file; do
[[ "${file}" =~ ^\./node_modules/ ]] && continue
[[ "${file}" =~ ^\./website/\.lanyon/ ]] && continue

echo -n " ${file}.. "

if ! "${bash}" -n "${file}" 2>> "${__accptstTmpDir}/${bash//\//.}.err"; then
echo ""
failed="true"
continue
fi

echo ""
done <<< "$(find . -type f -iname '*.sh')"

popd > /dev/null

if [[ "${failed}" = "true" ]]; then
cat "${__accptstTmpDir}/${bash//\//.}.err"
exit 1
fi
done
fi

# do some shellcheck linting
if [[ "$(command -v shellcheck)" ]]; then
echo "==> Shellcheck"
pushd "${__root}" > /dev/null
Expand Down
1 change: 1 addition & 0 deletions test/fixture/double-source.exitcode
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
1
23 changes: 23 additions & 0 deletions test/fixture/double-source.stdio
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
ACCPTST:STDIO_REPLACE_DATETIMES
{datetime} UTC [ debug] cli arg arg_f = () -> {tmpdir}/x
{datetime} UTC [ info] __i_am_main_script: 0
{datetime} UTC [ info] __file: {root}/example.sh
{datetime} UTC [ info] __dir: {root}
{datetime} UTC [ info] __base: example
{datetime} UTC [ info] OSTYPE: {OSTYPE}
{datetime} UTC [ info] arg_f: {tmpdir}/x
{datetime} UTC [ info] arg_d: 0
{datetime} UTC [ info] arg_v: 0
{datetime} UTC [ info] arg_h: 0
{datetime} UTC [ info] multiple lines example - line #1
{datetime} UTC [ info] multiple lines example - line #2
{datetime} UTC [ info] imagine logging the output of 'ls -al /path/'
{datetime} UTC [ debug] Info useful to developers for debugging the application, not useful during operations.
{datetime} UTC [ info] Normal operational messages - may be harvested for reporting, measuring throughput, etc. - no action required.
{datetime} UTC [ notice] Events that are unusual but not error conditions - might be summarized in an email to developers or admins to spot potential problems - no immediate action required.
{datetime} UTC [ warning] Warning messages, not an error, but indication that an error will occur if action is not taken, e.g. file system 85% full - each item must be resolved within a given time. This is a debug message
{datetime} UTC [ error] Non-urgent failures, these should be relayed to developers or admins; each item must be resolved within a given time.
{datetime} UTC [ critical] Should be corrected immediately, but indicates failure in a primary system, an example is a loss of a backup ISP connection.
{datetime} UTC [ alert] Should be corrected immediately, therefore notify staff who can fix the problem. An example would be the loss of a primary ISP connection.
{datetime} UTC [emergency] A "panic" condition usually affecting multiple apps/servers/sites. At this level it would usually notify all tech staff on call.
{datetime} UTC [ info] Cleaning up. Done
1 change: 1 addition & 0 deletions test/fixture/main-debug.stdio
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
ACCPTST:STDIO_REPLACE_DATETIMES
{datetime} UTC [ debug] cli arg arg_f = () -> {tmpdir}/x
{datetime} UTC [ info] __i_am_main_script: 1
{datetime} UTC [ info] __file: {root}/main.sh
{datetime} UTC [ info] __dir: {root}
{datetime} UTC [ info] __base: main
Expand Down
1 change: 1 addition & 0 deletions test/fixture/main-nocolor.stdio
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
ACCPTST:STDIO_REPLACE_DATETIMES
{datetime} UTC [ debug] cli arg arg_f = () -> {tmpdir}/x
{datetime} UTC [ info] __i_am_main_script: 1
{datetime} UTC [ info] __file: {root}/main.sh
{datetime} UTC [ info] __dir: {root}
{datetime} UTC [ info] __base: main
Expand Down
15 changes: 15 additions & 0 deletions test/scenario/double-source/run.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
#!/usr/bin/env bash
set -o pipefail
set -o errexit
set -o nounset
# set -o xtrace

__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
__root="$(cd "$(dirname "$(dirname "$(dirname "${__dir}")")")" && pwd)"

export LOG_LEVEL=7

echo "ACCPTST:STDIO_REPLACE_DATETIMES"

# shellcheck source=example.sh
source "${__root}/example.sh" -f /tmp/x
2 changes: 1 addition & 1 deletion test/scenario/main-debug/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ __root="$(cd "$(dirname "$(dirname "$(dirname "${__dir}")")")" && pwd)"

echo "ACCPTST:STDIO_REPLACE_DATETIMES"

env LOG_LEVEL=8 bash "${__root}/main.sh" -f /tmp/x
env LOG_LEVEL=7 bash "${__root}/main.sh" -f /tmp/x
2 changes: 1 addition & 1 deletion test/scenario/main-nocolor/run.sh
Original file line number Diff line number Diff line change
Expand Up @@ -9,4 +9,4 @@ __root="$(cd "$(dirname "$(dirname "$(dirname "${__dir}")")")" && pwd)"

echo "ACCPTST:STDIO_REPLACE_DATETIMES"

env LOG_LEVEL=8 NO_COLOR=true bash "${__root}/main.sh" -f /tmp/x
env LOG_LEVEL=7 NO_COLOR=true bash "${__root}/main.sh" -f /tmp/x

0 comments on commit 9b86dcc

Please sign in to comment.