Compare commits

...

83 Commits
v2.3.1 ... main

Author SHA1 Message Date
dependabot[bot]
2e878ec30f
Bump cross-spawn from 6.0.5 to 6.0.6 (#169)
Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 6.0.5 to 6.0.6.
- [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/v6.0.6/CHANGELOG.md)
- [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v6.0.5...v6.0.6)

---
updated-dependencies:
- dependency-name: cross-spawn
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2024-11-25 12:20:37 +01:00
Kevin van Zonneveld
726ce78de7
Update README.md 2024-08-19 13:02:35 +02:00
Kevin van Zonneveld
51e7644bb1
Easier SHELLCHECK_SEVERITY in CI 2023-08-29 12:48:33 +02:00
Kevin van Zonneveld
985b0046c4
Update yarn.lock 2023-08-29 12:46:46 +02:00
Kevin van Zonneveld
38f269c660
Update CHANGELOG.md 2023-08-29 12:45:04 +02:00
Kevin van Zonneveld
f6b61410c0
Update version 2023-08-29 12:44:42 +02:00
Kevin van Zonneveld
42e50f66c8
Release 2.7.2 2023-08-29 12:44:42 +02:00
Kevin van Zonneveld
c5012d0190
Update package.json 2023-08-29 12:44:40 +02:00
Kevin van Zonneveld
14421bd791
Update version 2023-08-29 12:44:13 +02:00
Kevin van Zonneveld
7af1f75c5e
Release 2.7.1 2023-08-29 12:44:12 +02:00
Kevin van Zonneveld
320609fceb
update version 2023-08-29 12:44:10 +02:00
Kevin van Zonneveld
9e70d61133
Fix improper replace 2023-08-29 12:43:49 +02:00
Kevin van Zonneveld
354c304b19
Release 2.7.0 2023-08-29 12:41:51 +02:00
Kevin van Zonneveld
a6a2d961ae
Update CHANGELOG.md 2023-08-29 12:41:50 +02:00
Kevin van Zonneveld
7f9a31f8d8
Release 2.6.0 2023-08-29 12:39:39 +02:00
Kevin van Zonneveld
758fa92f05
Update package.json 2023-08-29 12:39:37 +02:00
Kevin van Zonneveld
555beb1add
Update package.json 2023-08-29 12:38:25 +02:00
Kevin van Zonneveld
2d145e24e9
Update version 2023-08-29 12:37:51 +02:00
Kevin van Zonneveld
b2140d5ec6
Release 2.5.0 2023-08-29 12:37:50 +02:00
Kevin van Zonneveld
7a022bccf3
Upgrade/cleanup deps 2023-08-29 12:37:39 +02:00
Kevin van Zonneveld
55cd329ebd
Upgrade fakefile 2023-08-29 12:35:17 +02:00
Kevin van Zonneveld
879422d09f
Create dependabot.yml 2023-08-29 12:31:27 +02:00
Kevin van Zonneveld
1fb7cc4337
Update ci.yml 2023-08-29 12:29:27 +02:00
Kevin van Zonneveld
f2ccef5b36
Merge branch 'main' of github.com:kvz/bash3boilerplate 2023-08-29 12:25:19 +02:00
Kevin van Zonneveld
2e68b71743
Move linting out to separate actions 2023-08-29 12:25:08 +02:00
Kevin van Zonneveld
28deb39d86
Fix tests 2023-08-29 12:24:49 +02:00
Kevin van Zonneveld
33a3fd706b
Create CNAME 2023-08-29 12:06:32 +02:00
Kevin van Zonneveld
ddc6440177
Rename website->docs 2023-08-29 12:06:14 +02:00
Kevin van Zonneveld
c4585291f3
Update ci.yml 2023-08-29 12:04:33 +02:00
Kevin van Zonneveld
9a27140e7e
Deprecate Lanyon-based website in favor of a simple redirect to github 2023-08-29 12:01:10 +02:00
Kevin van Zonneveld
cb06f0aa70
Update bash3boilerplate.code-workspace 2023-08-29 11:50:15 +02:00
FilipBrinkmann
e45247d4aa
Fix duplicated comment (#166) 2023-07-05 22:21:11 +02:00
dependabot[bot]
a50ad7007e
Bump express from 4.17.1 to 4.18.2 (#165)
Bumps [express](https://github.com/expressjs/express) from 4.17.1 to 4.18.2.
- [Release notes](https://github.com/expressjs/express/releases)
- [Changelog](https://github.com/expressjs/express/blob/master/History.md)
- [Commits](https://github.com/expressjs/express/compare/4.17.1...4.18.2)

---
updated-dependencies:
- dependency-name: express
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-12 10:23:05 +01:00
dependabot[bot]
41172fcc8f
Bump decode-uri-component from 0.2.0 to 0.2.2 (#164)
Bumps [decode-uri-component](https://github.com/SamVerschueren/decode-uri-component) from 0.2.0 to 0.2.2.
- [Release notes](https://github.com/SamVerschueren/decode-uri-component/releases)
- [Commits](https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.2)

---
updated-dependencies:
- dependency-name: decode-uri-component
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-12-05 10:59:02 +01:00
dependabot[bot]
9f0c37e2ac
Bump terser from 4.8.0 to 4.8.1 (#163)
Bumps [terser](https://github.com/terser/terser) from 4.8.0 to 4.8.1.
- [Release notes](https://github.com/terser/terser/releases)
- [Changelog](https://github.com/terser/terser/blob/master/CHANGELOG.md)
- [Commits](https://github.com/terser/terser/commits)

---
updated-dependencies:
- dependency-name: terser
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-07-21 15:57:12 +02:00
dependabot[bot]
0a6e3925dc
Bump shell-quote from 1.6.1 to 1.7.3 (#162)
Bumps [shell-quote](https://github.com/substack/node-shell-quote) from 1.6.1 to 1.7.3.
- [Release notes](https://github.com/substack/node-shell-quote/releases)
- [Changelog](https://github.com/substack/node-shell-quote/blob/master/CHANGELOG.md)
- [Commits](https://github.com/substack/node-shell-quote/compare/1.6.1...1.7.3)

---
updated-dependencies:
- dependency-name: shell-quote
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-22 10:57:22 +02:00
dependabot[bot]
7d3927b025
Bump eventsource from 1.0.7 to 1.1.1 (#161)
Bumps [eventsource](https://github.com/EventSource/eventsource) from 1.0.7 to 1.1.1.
- [Release notes](https://github.com/EventSource/eventsource/releases)
- [Changelog](https://github.com/EventSource/eventsource/blob/master/HISTORY.md)
- [Commits](https://github.com/EventSource/eventsource/compare/v1.0.7...v1.1.1)

---
updated-dependencies:
- dependency-name: eventsource
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-06-02 10:43:05 +02:00
dependabot[bot]
49eed4f283
Bump url-parse from 1.5.3 to 1.5.10 (#159)
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.3 to 1.5.10.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.3...1.5.10)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-28 12:34:33 +01:00
dependabot[bot]
3d47083fcf
Bump ajv from 6.10.2 to 6.12.6 (#157)
Bumps [ajv](https://github.com/ajv-validator/ajv) from 6.10.2 to 6.12.6.
- [Release notes](https://github.com/ajv-validator/ajv/releases)
- [Commits](https://github.com/ajv-validator/ajv/compare/v6.10.2...v6.12.6)

---
updated-dependencies:
- dependency-name: ajv
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-14 10:50:59 +01:00
dependabot[bot]
e516a60169
Bump undefsafe from 2.0.2 to 2.0.5 (#156)
Bumps [undefsafe](https://github.com/remy/undefsafe) from 2.0.2 to 2.0.5.
- [Release notes](https://github.com/remy/undefsafe/releases)
- [Commits](https://github.com/remy/undefsafe/compare/v2.0.2...v2.0.5)

---
updated-dependencies:
- dependency-name: undefsafe
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2022-02-10 07:47:25 +01:00
dependabot[bot]
d1c26b9ac1
Bump path-parse from 1.0.6 to 1.0.7 (#155)
Bumps [path-parse](https://github.com/jbgutierrez/path-parse) from 1.0.6 to 1.0.7.
- [Release notes](https://github.com/jbgutierrez/path-parse/releases)
- [Commits](https://github.com/jbgutierrez/path-parse/commits/v1.0.7)

---
updated-dependencies:
- dependency-name: path-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-06 14:37:19 +02:00
dependabot[bot]
85efe41ad9
Bump url-parse from 1.5.1 to 1.5.3 (#154)
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.5.1 to 1.5.3.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.5.1...1.5.3)

---
updated-dependencies:
- dependency-name: url-parse
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-10-06 13:51:35 +02:00
dependabot[bot]
80ab935cf6
Bump qs from 6.2.1 to 6.2.3 (#153)
Bumps [qs](https://github.com/ljharb/qs) from 6.2.1 to 6.2.3.
- [Release notes](https://github.com/ljharb/qs/releases)
- [Changelog](https://github.com/ljharb/qs/blob/master/CHANGELOG.md)
- [Commits](https://github.com/ljharb/qs/compare/v6.2.1...v6.2.3)

---
updated-dependencies:
- dependency-name: qs
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-04 07:55:33 +02:00
dependabot[bot]
86f20e34b7
Bump color-string from 1.5.3 to 1.6.0 (#152)
Bumps [color-string](https://github.com/Qix-/color-string) from 1.5.3 to 1.6.0.
- [Release notes](https://github.com/Qix-/color-string/releases)
- [Changelog](https://github.com/Qix-/color-string/blob/master/CHANGELOG.md)
- [Commits](https://github.com/Qix-/color-string/commits/1.6.0)

---
updated-dependencies:
- dependency-name: color-string
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-04 07:23:57 +02:00
dependabot[bot]
d113e87c96
Bump tar from 2.2.1 to 2.2.2 (#151)
Bumps [tar](https://github.com/npm/node-tar) from 2.2.1 to 2.2.2.
- [Release notes](https://github.com/npm/node-tar/releases)
- [Changelog](https://github.com/npm/node-tar/blob/main/CHANGELOG.md)
- [Commits](https://github.com/npm/node-tar/compare/v2.2.1...v2.2.2)

---
updated-dependencies:
- dependency-name: tar
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-08-04 07:22:21 +02:00
dependabot[bot]
9f06b1a8c6
Bump dns-packet from 1.1.1 to 1.3.4 (#150)
Bumps [dns-packet](https://github.com/mafintosh/dns-packet) from 1.1.1 to 1.3.4.
- [Release notes](https://github.com/mafintosh/dns-packet/releases)
- [Changelog](https://github.com/mafintosh/dns-packet/blob/master/CHANGELOG.md)
- [Commits](https://github.com/mafintosh/dns-packet/compare/v1.1.1...v1.3.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-27 16:11:20 +02:00
dependabot[bot]
8a14c0e3d5
Bump browserslist from 4.7.2 to 4.16.6 (#149)
Bumps [browserslist](https://github.com/browserslist/browserslist) from 4.7.2 to 4.16.6.
- [Release notes](https://github.com/browserslist/browserslist/releases)
- [Changelog](https://github.com/browserslist/browserslist/blob/main/CHANGELOG.md)
- [Commits](https://github.com/browserslist/browserslist/compare/4.7.2...4.16.6)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-25 11:49:57 +02:00
dependabot[bot]
c086796573
Bump url-parse from 1.4.7 to 1.5.1 (#147)
Bumps [url-parse](https://github.com/unshiftio/url-parse) from 1.4.7 to 1.5.1.
- [Release notes](https://github.com/unshiftio/url-parse/releases)
- [Commits](https://github.com/unshiftio/url-parse/compare/1.4.7...1.5.1)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-10 08:51:28 +02:00
dependabot[bot]
05cdcdaa12
Bump hosted-git-info from 2.1.5 to 2.8.9 (#148)
Bumps [hosted-git-info](https://github.com/npm/hosted-git-info) from 2.1.5 to 2.8.9.
- [Release notes](https://github.com/npm/hosted-git-info/releases)
- [Changelog](https://github.com/npm/hosted-git-info/blob/v2.8.9/CHANGELOG.md)
- [Commits](https://github.com/npm/hosted-git-info/compare/v2.1.5...v2.8.9)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-05-10 08:41:35 +02:00
dependabot[bot]
8ceed901d5
Bump ssri from 6.0.1 to 6.0.2 (#146)
Bumps [ssri](https://github.com/npm/ssri) from 6.0.1 to 6.0.2.
- [Release notes](https://github.com/npm/ssri/releases)
- [Changelog](https://github.com/npm/ssri/blob/v6.0.2/CHANGELOG.md)
- [Commits](https://github.com/npm/ssri/compare/v6.0.1...v6.0.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-04-20 07:58:51 +02:00
dependabot[bot]
76fbd2104b
Bump y18n from 3.2.1 to 3.2.2 (#145)
Bumps [y18n](https://github.com/yargs/y18n) from 3.2.1 to 3.2.2.
- [Release notes](https://github.com/yargs/y18n/releases)
- [Changelog](https://github.com/yargs/y18n/blob/master/CHANGELOG.md)
- [Commits](https://github.com/yargs/y18n/commits)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-30 17:37:10 +02:00
dependabot[bot]
9cc3bf124c
Bump elliptic from 6.5.3 to 6.5.4 (#144)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.5.3 to 6.5.4.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.5.3...v6.5.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2021-03-09 11:22:17 +01:00
dependabot[bot]
986fec8090
Bump ini from 1.3.4 to 1.3.7 (#142)
Bumps [ini](https://github.com/isaacs/ini) from 1.3.4 to 1.3.7.
- [Release notes](https://github.com/isaacs/ini/releases)
- [Commits](https://github.com/isaacs/ini/compare/v1.3.4...v1.3.7)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-12-14 09:48:44 +01:00
Kevin van Zonneveld
ea15c44c7e Remove Travis 2020-11-23 20:10:45 +01:00
Kevin van Zonneveld
febd9e354b
Switch from using Travis to GitHub Actions (#141)
* First swing at GHA

* Delete .travis.yml

* Update ci.yml

* Update main.sh

* Update ci.yml

* Update ci.yml
2020-11-23 19:56:46 +01:00
dependabot[bot]
13d74bb4f1
Bump is-my-json-valid from 2.15.0 to 2.20.5 (#140)
Bumps [is-my-json-valid](https://github.com/mafintosh/is-my-json-valid) from 2.15.0 to 2.20.5.
- [Release notes](https://github.com/mafintosh/is-my-json-valid/releases)
- [Commits](https://github.com/mafintosh/is-my-json-valid/compare/v2.15.0...v2.20.5)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-16 11:01:06 +01:00
dependabot[bot]
ab3857e3bd
Bump elliptic from 6.3.2 to 6.5.3 (#139)
Bumps [elliptic](https://github.com/indutny/elliptic) from 6.3.2 to 6.5.3.
- [Release notes](https://github.com/indutny/elliptic/releases)
- [Commits](https://github.com/indutny/elliptic/compare/v6.3.2...v6.5.3)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-11-16 11:00:43 +01:00
Kevin van Zonneveld
e5da0aa249 Upgrade to latest Lanyon 2020-11-16 10:46:11 +01:00
Kevin van Zonneveld
bbb8afea4d Update .travis.yml 2020-11-12 15:40:08 +01:00
dependabot[bot]
e078dd2b91
Bump websocket-extensions from 0.1.1 to 0.1.4 (#138)
Bumps [websocket-extensions](https://github.com/faye/websocket-extensions-node) from 0.1.1 to 0.1.4.
- [Release notes](https://github.com/faye/websocket-extensions-node/releases)
- [Changelog](https://github.com/faye/websocket-extensions-node/blob/master/CHANGELOG.md)
- [Commits](https://github.com/faye/websocket-extensions-node/compare/0.1.1...0.1.4)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-06-08 10:16:56 +02:00
Kevin van Zonneveld
9fd3f1df64 Update CHANGELOG.md 2020-04-22 10:01:55 +02:00
R. Fuehrer
1005ceeec8
Add feature edit/update comments (#132)
Remove obsolete lines of code
Update reference file
Update test scenario
2020-04-22 09:59:24 +02:00
Kevin van Zonneveld
56eab89caa Fix CHANGELOG links (I think). Should fix #136 2020-04-22 09:57:39 +02:00
Kevin van Zonneveld
186d9ff6a0 Update yarn.lock 2020-04-22 09:51:53 +02:00
Kevin van Zonneveld
23ce0e6b85 Merge branch 'master' of github.com:kvz/bash3boilerplate 2020-04-22 09:51:38 +02:00
Kevin van Zonneveld
6392674f70 Update CHANGELOG.md 2020-04-22 09:48:03 +02:00
dependabot[bot]
222a95793b
Bump constantinople from 3.1.0 to 3.1.2 (#135)
Bumps [constantinople](https://github.com/ForbesLindesay/constantinople) from 3.1.0 to 3.1.2.
- [Release notes](https://github.com/ForbesLindesay/constantinople/releases)
- [Commits](https://github.com/ForbesLindesay/constantinople/compare/3.1.0...3.1.2)

Signed-off-by: dependabot[bot] <support@github.com>

Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2020-04-16 07:42:22 +02:00
Ross Smith II
269627deec
Simplify example in readme (#133) 2020-02-17 09:51:55 +01:00
R. Fuehrer
1238b67abe Add comment feature and feature checks (#130) 2020-01-07 09:32:57 +01:00
R. Fuehrer
5cc417485a Fix sed regular expression to be non-greedy (#129)
* Fix sed to be non-greedy

* Fix missing double quote to prevent globbing and word splitting
2020-01-04 13:56:01 +01:00
R. Fuehrer
971a83ea3a Enhanced ini file handling (#128)
* Add ini file creation if not exists
Add section creation if not exists
Add default section if section not given
Fix read key value only from given (or default) section

* Fix to support platform specific sed

* Fixed typo in comment

* Fix test scenario to reflect changes to the (introduced) default section

* Fix expectations for scenario test

* Fix style guide compatibility
2019-12-31 15:16:08 +01:00
Ross Smith II
14dc823cca Fix readme to use [[ per readme (#126)
To be consistent with
https://github.com/kvz/bash3boilerplate/edit/master/README.md#Scoping
2019-12-09 09:22:33 +01:00
Gert Goet
599faf3830 Correct error_code in err_report (#124) (#125) 2019-11-18 11:56:18 +01:00
Kevin van Zonneveld
0d096350b0 Update CHANGELOG.md 2019-11-07 14:24:19 +01:00
Kevin van Zonneveld
24e7ceaaf7 Update version 2019-11-07 14:23:58 +01:00
Kevin van Zonneveld
f1ad8a5655 Release 2.4.1 2019-11-07 14:23:57 +01:00
Kevin van Zonneveld
c0f58127bb Update version 2019-11-07 14:23:26 +01:00
Kevin van Zonneveld
6689117e5d Release 2.4.0 2019-11-07 14:23:25 +01:00
Kevin van Zonneveld
a28d594d5f Update CHANGELOG.md 2019-11-07 14:23:19 +01:00
Kevin van Zonneveld
bccefb0061 Update version 2019-11-07 14:21:46 +01:00
Kevin van Zonneveld
8146667ea1 Merge branch 'master' of github.com:kvz/bash3boilerplate 2019-11-05 09:32:59 +01:00
Kevin van Zonneveld
d908e8b362 Release 2.4.0 2019-10-08 16:07:32 +02:00
Kevin van Zonneveld
9250d036dc Update CHANGELOG.md 2019-10-08 16:07:27 +02:00
57 changed files with 1683 additions and 13123 deletions

View File

@ -1,7 +1,7 @@
Thanks for contributing to b3bp! As part of your PR, have you:
- [ ] Added an item in [CHANGELOG.md](https://github.com/kvz/bash3boilerplate/blob/master/CHANGELOG.md) with attribution?
- [ ] Added your name to the [README.md](https://github.com/kvz/bash3boilerplate/blob/master/README.md#authors)
- [ ] Added an item in [CHANGELOG.md](https://github.com/kvz/bash3boilerplate/blob/HEAD/CHANGELOG.md) with attribution?
- [ ] Added your name to the [README.md](https://github.com/kvz/bash3boilerplate/blob/HEAD/README.md#authors)
- [ ] Linted your code? (`make test` should do the trick)
If so, great! Feel free to replace this message with a description of your work and hit submit!

5
.github/dependabot.yml vendored Normal file
View File

@ -0,0 +1,5 @@
groups:
production-dependencies:
dependency-type: 'production'
development-dependencies:
dependency-type: 'development'

30
.github/workflows/ci.yml vendored Normal file
View File

@ -0,0 +1,30 @@
name: b3bp CI
on:
push:
branches:
- main
pull_request:
types:
- opened
- synchronize
jobs:
ci:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
with:
fetch-depth: 1
- uses: actions/setup-node@v1
with:
node-version: 18.x
- name: Install
run: |
corepack yarn
- name: Lint
env:
SHELLCHECK_SEVERITY: warning
run: |
corepack yarn lint
- name: Test
run: |
corepack yarn test

17
.gitignore vendored
View File

@ -1,20 +1,5 @@
.jekyll-cache/
.jekyll-metadata
.lanyon
.lanyon/bin
.yarn
assets/build
env.sh
node_modules
npm-debug.log
website/_site/
website/_vendor/
website/.jekyll-metadata
website/.lanyon
website/.lanyon/bin
website/.lanyon/vendor/bin
website/assets/build
website/changelog.md
website/faq.md
website/index.md
website/main.shwebsite/.lanyon
website/main.sh

View File

@ -1,59 +0,0 @@
const path = require('path')
const _ = require('lodash')
module.exports.overrideRuntime = function ({ runtime, toolkit }) {
let preBuilds = []
let postBuilds = []
if (!runtime.isDev) {
preBuilds = preBuilds.concat([
'npm run inject',
])
postBuilds = postBuilds.concat([
// 'npm run redirects',
])
}
// "lanyon": {
// "projectDir": "website",
// "contentScandir": "../",
// "contentIgnore": [
// "website/*.md",
// "website/main.sh"
// ]
// },
// runtime['npmRoot'] = `${__dirname}`
runtime.projectDir = `${__dirname}/website`
runtime.cacheDir = path.join(runtime.projectDir, '.lanyon')
runtime.recordsPath = path.join(runtime.cacheDir, 'records.json')
runtime.assetsSourceDir = path.join(runtime.projectDir, 'assets')
runtime.assetsBuildDir = path.join(runtime.assetsSourceDir, 'build')
runtime.contentScandir = path.join(runtime.projectDir, runtime.contentScandir || '.')
runtime.contentBuildDir = path.join(runtime.projectDir, '_site')
runtime['prebuild:content'] = preBuilds.join(' && ')
runtime['postbuild:content'] = postBuilds.join(' && ')
return runtime
}
module.exports.overrideConfig = function ({ config, toolkit }) {
if (config.runtime.isDev) {
config.jekyll.url = 'http://localhost:3000'
}
config.jekyll.profile = true
config.jekyll.trace = true
if (config.runtime.isDev) {
config.jekyll.unpublished = true
config.jekyll.future = true
config.jekyll.incremental = true // <-- for clarify; incremental is the default also
} else {
config.jekyll.incremental = false
}
return config
}

3
.shellcheckrc Normal file
View File

@ -0,0 +1,3 @@
external-sources=true
shell=bash
color=always

View File

@ -1,44 +0,0 @@
matrix:
include:
- os: linux
sudo: false
language: node_js
node_js: 10
- os: osx
language: node_js
node_js: 10
env:
global:
- SCROLEX_MODE=passthru
- secure: BeM6mpPEATdeFcAr/222QBZ9vRkZtU2WOi9QQy3mxsuDbWfM8RxYESIEJLipyhW9kXGoe6HGMqm4Kz9B/c4jrzeSXPpKnW7mIfnyqN+hhq1ctW9qPSqodu+fYNhdDxXh5wylml7hnIJzU70vFGrFknZRE2FYk5XvyHg2ImIKDJw=
- secure: RJ5UpdXms9QkraylZ11OBfmcRrmKnb254Yj0yCDAvZmg+n+3jSTwMgGvPY8Ih8X/R1JeW3VTtFDkJXXPnjjfpNg1M91u4CAEUOMPciCudYcoF6GKb8psnOzneTTX5M7zuJSzknGdpv/foldxiPYxiY5Hn5bfjmikhAEl+QX/R0Y=
- secure: BXf2buPt/DA09M5ZUdp/LpOWtUuz1mfCBopLyxvHv3Sl3ln+Az57wWsM2+Re+77lUOgihR2f6lXYfNUmQuSUo157rZPunQCqM/DJhK69KhREEB6SJDaJF3FVlnGla+Cwwb1IQUtMopqX9pBYD7w/zyWQFJCi20O57JEVIdfZZS8=
- secure: AaDI3OLTcwau2tu9jTtR0eHpylSUudYua9aKH3C540Lm2scQhQcT4IbMa6KXgrY+1UchapS9gUuClH8QwgJo61tJjtOqvmCgZ2EkmZg68pzw/25zwv7LSzYASbZvKahulV/giZdxFLGOpPhNhKbG70/owYXjKFENi5LoZKc8Y+c=
addons:
apt:
sources:
- debian-sid
before_install:
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then sudo apt-get install --allow-unauthenticated -y cabal-install; fi
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cabal update; fi
- if [ "$TRAVIS_OS_NAME" = "linux" ]; then cabal v1-install ShellCheck; fi
- 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:
- rm -f ./node_modules/.bin/which
# cache:
# apt: true
# directories:
# - .lanyon
script: test/acceptance.sh
deploy:
skip_cleanup: true
provider: script
script: ./node_modules/lanyon/scripts/ci-deploy.sh
on:
branch: master
condition: $TRAVIS_OS_NAME = linux

View File

@ -1,7 +1,7 @@
{
"folders": [
{
"path": "."
"path": ".."
}
],
"settings": {}

1
.yarnrc.yml Normal file
View File

@ -0,0 +1 @@
nodeLinker: node-modules

View File

@ -8,12 +8,42 @@ Unplanned.
- [ ] Better style guide checking (#84)
## master
## main
Released: TBA.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.3.0...master).
Released: TBA.
[Diff](https://github.com/kvz/bash3boilerplate/compare/2.7.2...main).
- [ ] Upgrade to `lanyon@0.0.55`
- [ ]
## 2.7.2
Released: 2023-08-29
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.4.1...2.7.2).
- [x] Upgrade and cleanup node dependencies
- [x] Remove lanyon-based website in favor of simple redirect to github for bash3boilerplate.sh
- [x] Make tests pass again
- [x] Make linting and style checking separate actions
- [x] Add feature to edit/update comments in ini file (#132, @rfuehrer)
- [x] Upgrade to `lanyon@0.1.16`
- [x] Capture correct error_code in err_report (#124, @eval)
- [x] Enhanced ini file handling: create new file, create new sections, handle default section, read key from given section (@rfuehrer)
## v2.4.2
Released: 2019-11-07.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.4.1...v2.4.2).
- [x] Upgrade to `lanyon@0.1.16`
- [x] Capture correct error_code in err_report (#124, @eval)
- [x] Enhanced ini file handling: create new file, create new sections, handle default section, read key from given section (@rfuehrer)
## v2.4.1
Released: 2019-11-07.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.3.0...v2.4.1).
- [x] Upgrade to `lanyon@0.1.7`
- [x] Allow counting how many times an argument is used (@genesiscloud)
- [x] Fix typos in megamount (thanks @gsaponaro)
- [x] Enable color in screen or tmux (#92, @gmasse)
@ -25,9 +55,16 @@ Released: TBA.
- [x] Add support for repeatable arguments (@genesiscloud)
- [x] Fix remaining warnings with shellcheck v0.7.0 (#107, @genesiscloud)
## v2.4.0
Released: 2016-12-21.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.3.0...v2.4.0).
- [x] Upgrade to `lanyon@0.0.143`
## v2.3.0
Released: 2016-12-21.
Released: 2016-12-21.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.2.0...v2.3.0).
- [x] Add magic variable `__i_am_main_script` to distinguish if b3bp is being sourced or called directly (#45, @zbeekman)
@ -39,7 +76,7 @@ Released: 2016-12-21.
## v2.2.0
Released: 2016-12-21.
Released: 2016-12-21.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.1.0...v2.2.0).
- [x] README and FAQ improvements (#66, @mstreuhofer)
@ -61,7 +98,7 @@ Released: 2016-12-21.
## v2.1.0
Released: 2016-11-08.
Released: 2016-11-08.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.0.0...v2.1.0).
- [x] Cleanup b3bp variables (adds prefixes across the board) (thanks @mstreuhofer)
@ -88,7 +125,7 @@ Released: 2016-11-08.
## v2.0.0
Released: 2016-02-17.
Released: 2016-02-17.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v1.2.1...v2.0.0).
- [x] Add tests for `templater` and follow Library export best practices
@ -100,14 +137,14 @@ Released: 2016-02-17.
## v1.2.1
Released: 2016-02-17.
Released: 2016-02-17.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v1.2.0...v1.2.1).
- [x] Add Travis CI automated testing for OSX (thanks @zbeekman)
## v1.2.0
Released: 2016-02-16.
Released: 2016-02-16.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v1.1.0...v1.2.0).
- [x] Allow disabling colors via `NO_COLOR` environment variable
@ -121,7 +158,7 @@ Released: 2016-02-16.
## v1.1.0
Released: 2015-06-29.
Released: 2015-06-29.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v1.0.3...v1.1.0).
- [x] Add `ALLOW_REMAINDERS` configuration to templater
@ -130,7 +167,7 @@ Released: 2015-06-29.
## v1.0.3
Released: 2014-11-02.
Released: 2014-11-02.
[Diff](https://github.com/kvz/bash3boilerplate/compare/5db569125319a89b9561b434db84e4d91faefb63...v1.0.3).
- [x] Add `ini_val`, `megamount`, `parse_url`

63
FAQ.md
View File

@ -1,23 +1,22 @@
[This document is formatted with GitHub-Flavored Markdown. ]:#
[For better viewing, including hyperlinks, read it online at ]:#
[https://github.com/kvz/bash3boilerplate/blob/master/FAQ.md ]:#
[This document is formatted with GitHub-Flavored Markdown. ]: #
[For better viewing, including hyperlinks, read it online at ]: #
[https://github.com/kvz/bash3boilerplate/blob/HEAD/FAQ.md ]: #
## Contents
* [What is a CLI](#what-is-a-cli)?
* [How do I incorporate BASH3 Boilerplate into my own project](#how-do-i-incorporate-bash3-boilerplate-into-my-own-project)?
* [How do I add a command-line flag](#how-do-i-add-a-command-line-flag)?
* [How do I access the value of a command-line argument](#how-do-i-access-the-value-of-a-command-line-argument)?
* [What is a magic variable](#what-is-a-magic-variable)?
* [How do I submit an issue report](#how-do-i-submit-an-issue-report)?
* [How can I contribute to this project](#how-can-i-contribute-to-this-project)?
* [Why are you typing BASH in all caps](#why-are-you-typing-bash-in-all-caps)?
* [How can I locally develop and preview the b3bp website](#how-can-i-locally-develop-and-preview-the-b3bp-website)?
* [You are saying you are portable, but why won't b3bp code run in dash / busybox / posh / ksh / mksh / zsh](#you-are-saying-you-are-portable-but-why-wont-b3bp-code-run-in-dash--busybox--posh--ksh--mksh--zsh)?
* [How do I do Operating System detection](#how-do-i-do-operating-system-detection)?
* [How do I access a potentially unset (environment) variable](#how-do-i-access-a-potentially-unset-environment-variable)?
* [How can I detect or trap CTRL-C and other signals](#how-can-i-detect-or-trap-ctrl-c-and-other-signals)?
* [How can I get the PID of my running script](how-can-i-get-the-pid-of-my-running-script)?
- [What is a CLI](#what-is-a-cli)?
- [How do I incorporate BASH3 Boilerplate into my own project](#how-do-i-incorporate-bash3-boilerplate-into-my-own-project)?
- [How do I add a command-line flag](#how-do-i-add-a-command-line-flag)?
- [How do I access the value of a command-line argument](#how-do-i-access-the-value-of-a-command-line-argument)?
- [What is a magic variable](#what-is-a-magic-variable)?
- [How do I submit an issue report](#how-do-i-submit-an-issue-report)?
- [How can I contribute to this project](#how-can-i-contribute-to-this-project)?
- [Why are you typing BASH in all caps](#why-are-you-typing-bash-in-all-caps)?
- [You are saying you are portable, but why won't b3bp code run in dash / busybox / posh / ksh / mksh / zsh](#you-are-saying-you-are-portable-but-why-wont-b3bp-code-run-in-dash--busybox--posh--ksh--mksh--zsh)?
- [How do I do Operating System detection](#how-do-i-do-operating-system-detection)?
- [How do I access a potentially unset (environment) variable](#how-do-i-access-a-potentially-unset-environment-variable)?
- [How can I detect or trap CTRL-C and other signals](#how-can-i-detect-or-trap-ctrl-c-and-other-signals)?
- [How can I get the PID of my running script](how-can-i-get-the-pid-of-my-running-script)?
<!--more-->
@ -60,7 +59,7 @@ source main.sh
## How do I access the value of a command-line argument?
To find out the value of an argument, append the corresponding single-character flag to the text `$arg_`. For example, if the [read block]
To find out the value of an argument, append the corresponding single-character flag to the text `$arg_`. For example, if the [read block]
contains the line
```bash
@ -83,7 +82,7 @@ Please visit our [Issues](https://github.com/kvz/bash3boilerplate/issues) page.
## How can I contribute to this project?
Please fork this repository. After that, create a branch containing your suggested changes and submit a pull request based on the master branch
Please fork this repository. After that, create a branch containing your suggested changes and submit a pull request based on the main branch
of <https://github.com/kvz/bash3boilerplate/>. We are always more than happy to accept your contributions!
## Why are you typing BASH in all caps?
@ -94,30 +93,6 @@ This project's name, however, is "BASH3 Boilerplate". It is a reference to
only for crafting webpages.
Somewhat inconsistent but true to Unix ancestry the abbreviation for our project is "b3bp".
## How can I locally develop and preview the b3bp website?
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
```
This will install and start all required services and automatically open a webbrowser that reloads as soon as you make any changes to the source.
The source mainly consists of:
- `./README.md` (Front page)
- `./FAQ.md` (FAQ page)
- `./CHANGELOG.md` (changelog page)
- `./website/_layouts/default.html` (the design in which all pages are rendered)
- `./website/assets/app.js` (main JS file)
- `./website/assets/style.css` (main CSS file)
The rest is dark magic from which you should probably steer clear. : )
Any changes should be proposed as PRs. Anything added to `master` is automatically deployed using a combination of Travis CI and GitHub Pages.
## You are saying you are portable, but why won't b3bp code run in dash / busybox / posh / ksh / mksh / zsh?
When we say _portable_, we mean across Bash versions. Bash is widespread and most systems
@ -193,4 +168,4 @@ See http://mywiki.wooledge.org/SignalTrap for a list of signals, examples, and a
## How can I get the PID of my running script?
The PID of a running script is contained in the `${$}` variable. This is *not* the pid of any subshells. With Bash 4 you can get the PID of your subshell with `${BASHPID}`. For a comprehensive list of Bash built in variables see, e.g., http://www.tldp.org/LDP/abs/html/internalvariables.html
The PID of a running script is contained in the `${$}` variable. This is _not_ the pid of any subshells. With Bash 4 you can get the PID of your subshell with `${BASHPID}`. For a comprehensive list of Bash built in variables see, e.g., http://www.tldp.org/LDP/abs/html/internalvariables.html

View File

@ -3,6 +3,9 @@
#
# https://www.npmjs.com/package/fakefile
#
# Please do not edit this file directly, but propose changed upstream instead:
# https://github.com/kvz/fakefile/blob/main/Makefile
#
# This Makefile offers convience shortcuts into any Node.js project that utilizes npm scripts.
# It functions as a wrapper around the actual listed in `package.json`
# So instead of typing:
@ -25,10 +28,26 @@
# OSX users will have to install bash-completion
# (http://davidalger.com/development/bash-completion-on-os-x-with-brew/)
ifeq ($(shell test -e ./yarn.lock && echo -n yes),yes)
RUNNER=yarn
INSTALLER=yarn install
else
RUNNER=npm run
INSTALLER=npm install
endif
define npm_script_targets
TARGETS := $(shell node -e 'for (var k in require("./package.json").scripts) {console.log(k.replace(/:/g, "-"));}')
TARGETS := $(shell \
node -e 'for (var k in require("./package.json").scripts) {console.log(k.replace(/:/g, "-"));}'
| grep -v -E "^install$$"
)
$$(TARGETS):
npm run $(subst -,:,$(MAKECMDGOALS))
$(RUNNER) $(shell \
node -e 'for (var k in require("./package.json").scripts) {console.log(k.replace(/:/g, "-"), k);}'
| grep -E "^$(MAKECMDGOALS)\s"
| head -n1
| awk '{print $$2}'
)
.PHONY: $$(TARGETS)
endef
@ -37,4 +56,4 @@ $(eval $(call npm_script_targets))
# These npm run scripts are available, without needing to be mentioned in `package.json`
install:
npm run install
$(INSTALLER)

View File

@ -1,19 +1,17 @@
[![Build Status](https://travis-ci.org/kvz/bash3boilerplate.svg?branch=master)](https://travis-ci.org/kvz/bash3boilerplate)
[This document is formatted with GitHub-Flavored Markdown. ]: #
[For better viewing, including hyperlinks, read it online at ]: #
[https://github.com/kvz/bash3boilerplate/blob/HEAD/README.md]: #
[This document is formatted with GitHub-Flavored Markdown. ]:#
[For better viewing, including hyperlinks, read it online at ]:#
[https://github.com/kvz/bash3boilerplate/blob/master/README.md]:#
* [Overview](#overview)
* [Goals](#goals)
* [Features](#features)
* [Installation](#installation)
* [Changelog](#changelog)
* [Frequently Asked Questions](#frequently-asked-questions)
* [Best Practices](#best-practices)
* [Who uses b3bp](#who-uses-b3bp)
* [Authors](#authors)
* [License](#license)
- [Overview](#overview)
- [Goals](#goals)
- [Features](#features)
- [Installation](#installation)
- [Changelog](#changelog)
- [Frequently Asked Questions](#frequently-asked-questions)
- [Best Practices](#best-practices)
- [Who uses b3bp](#who-uses-b3bp)
- [Authors](#authors)
- [License](#license)
## Overview
@ -21,10 +19,10 @@
When hacking up Bash scripts, there are often things such as logging or command-line argument parsing that:
- You need every time
- Come with a number of pitfalls you want to avoid
- Keep you from your actual work
- You need every time
- Come with a number of pitfalls you want to avoid
- Keep you from your actual work
Here's an attempt to bundle those things in a generalized way so that
they are reusable as-is in most scripts.
@ -32,7 +30,7 @@ We call it "BASH3 Boilerplate" or b3bp for short.
## Goals
Delete-Key-**Friendly**. Instead of introducing packages, includes, compilers, etc., we propose using [`main.sh`](http://bash3boilerplate.sh/main.sh) as a base and removing the parts you don't need.
Delete-Key-**Friendly**. Instead of introducing packages, includes, compilers, etc., we propose using [`main.sh`](https://bash3boilerplate.sh/main.sh) as a base and removing the parts you don't need.
While this may feel a bit archaic at first, it is exactly the strength of Bash scripts that we should want to embrace.
**Portable**. We are targeting Bash 3 (OSX still ships
@ -47,7 +45,7 @@ dependency.
- Configuration by environment variables
- Simple command-line argument parsing that requires no external dependencies. Definitions are parsed from help info, ensuring there will be no duplication
- Helpful magic variables like `__file` and `__dir`
- Logging that supports colors and is compatible with [Syslog Severity levels](http://en.wikipedia.org/wiki/Syslog#Severity_levels), as well as the [twelve-factor](http://12factor.net/) guidelines
- Logging that supports colors and is compatible with [Syslog Severity levels](https://en.wikipedia.org/wiki/Syslog#Severity_levels), as well as the [twelve-factor](https://12factor.net/) guidelines
## Installation
@ -58,7 +56,7 @@ There are three different ways to install b3bp:
Use curl or wget to download the source and save it as your script. Then you can start deleting the unwanted bits, and adding your own logic.
```bash
wget http://bash3boilerplate.sh/main.sh
wget https://bash3boilerplate.sh/main.sh
vim main.sh
```
@ -95,15 +93,14 @@ As of `v1.0.3`, b3bp offers some nice re-usable libraries in `./src`. In order t
### Function packaging
It is nice to have a Bash package that can not only be used in the terminal, but also invoked as a command line function. In order to achieve this, the exporting of your functionality *should* follow this pattern:
It is nice to have a Bash package that can not only be used in the terminal, but also invoked as a command line function. In order to achieve this, the exporting of your functionality _should_ follow this pattern:
```bash
if [ "${BASH_SOURCE[0]}" != "${0}" ]; then
export -f my_script
else
if [[ "${BASH_SOURCE[0]}" = "${0}" ]]; then
my_script "${@}"
exit $?
fi
export -f my_script
```
This allows a user to `source` your script or invoke it as a script.
@ -116,7 +113,7 @@ $ source my_script.sh
$ my_script some more args --blah
```
(taken from the [bpkg](https://raw.githubusercontent.com/bpkg/bpkg/master/README.md) project)
(taken from the [bpkg](https://raw.githubusercontent.com/bpkg/bpkg/HEAD/README.md) project)
### Scoping
@ -138,27 +135,27 @@ $ my_script some more args --blah
1. Use `set`, rather than relying on a shebang like `#!/usr/bin/env bash -e`, since that is neutralized when someone runs your script as `bash yourscript.sh`.
1. Use `#!/usr/bin/env bash`, as it is more portable than `#!/bin/bash`.
1. Use `${BASH_SOURCE[0]}` if you refer to current file, even if it is sourced by a parent script. In other cases, use `${0}`.
1. Use `:-` if you want to test variables that could be undeclared. For instance, with `if [ "${NAME:-}" = "Kevin" ]`, `$NAME` will evaluate to `Kevin` if the variable is empty. The variable itself will remain unchanged. The syntax to assign a default value is `${NAME:=Kevin}`.
1. Use `:-` if you want to test variables that could be undeclared. For instance, with `if [[ "${NAME:-}" = "Kevin" ]]`, `$NAME` will evaluate to `Kevin` if the variable is empty. The variable itself will remain unchanged. The syntax to assign a default value is `${NAME:=Kevin}`.
## Who uses b3bp?
- [Transloadit](https://transloadit.com)
- [OpenCoarrays](http://www.opencoarrays.org)
- [Sourcery Institute](http://www.sourceryinstitute.org)
- [Computational Brain Anatomy Laboratory](http://cobralab.ca/)
- [OpenCoarrays](https://www.opencoarrays.org)
- [Sourcery Institute](https://www.sourceryinstitute.org)
- [Computational Brain Anatomy Laboratory](https://cobralab.ca/)
- [Genesis Cloud](https://genesiscloud.com/)
We are looking for endorsements! Are you also using b3bp? [Let us know](https://github.com/kvz/bash3boilerplate/issues/new?title=I%20use%20b3bp) and get listed.
## Authors
- [Kevin van Zonneveld](http://kvz.io)
- [Kevin van Zonneveld](https://kvz.io)
- [Izaak Beekman](https://izaakbeekman.com/)
- [Manuel Streuhofer](https://github.com/mstreuhofer)
- [Alexander Rathai](mailto:Alexander.Rathai@gmail.com)
- [Dr. Damian Rouson](http://www.sourceryinstitute.org/) (documentation, feedback)
- [Dr. Damian Rouson](https://www.sourceryinstitute.org/) (documentation, feedback)
- [@jokajak](https://github.com/jokajak) (documentation)
- [Gabriel A. Devenyi](http://staticwave.ca/) (feedback)
- [Gabriel A. Devenyi](https://staticwave.ca/) (feedback)
- [@bravo-kernel](https://github.com/bravo-kernel) (feedback)
- [@skanga](https://github.com/skanga) (feedback)
- [galaktos](https://www.reddit.com/user/galaktos) (feedback)
@ -167,10 +164,12 @@ We are looking for endorsements! Are you also using b3bp? [Let us know](https://
- [Germain Masse](https://github.com/gmasse)
- [A. G. Madi](https://github.com/warpengineer)
- [Lukas Stockner](mailto:oss@genesiscloud.com)
- [Gert Goet](https://github.com/eval)
- [@rfuehrer](https://github.com/rfuehrer)
## License
Copyright (c) 2013 Kevin van Zonneveld and [contributors](https://github.com/kvz/bash3boilerplate#authors).
Licensed under [MIT](https://raw.githubusercontent.com/kvz/bash3boilerplate/master/LICENSE).
Licensed under [MIT](https://raw.githubusercontent.com/kvz/bash3boilerplate/HEAD/LICENSE).
You are not obligated to bundle the LICENSE file with your b3bp projects as long
as you leave these references intact in the header comments of your source files.

1
docs/CNAME Normal file
View File

@ -0,0 +1 @@
bash3boilerplate.sh

15
docs/index.html Normal file
View File

@ -0,0 +1,15 @@
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta
http-equiv="refresh"
content="0;url=https://github.com/kvz/bash3boilerplate"
/>
<title>Redirecting...</title>
</head>
<body>
If you are not redirected,
<a href="https://github.com/kvz/bash3boilerplate">click here</a>.
</body>
</html>

View File

@ -61,8 +61,7 @@ trap __b3bp_cleanup_before_exit EXIT
# requires `set -o errtrace`
__b3bp_err_report() {
local error_code
error_code=${?}
local error_code=${?}
# shellcheck disable=SC2154
error "Error in ${__file} in function ${1} on line ${2}"
exit ${error_code}
@ -141,7 +140,7 @@ info "$(echo -e "multiple lines example - line #1\\nmultiple lines example - lin
debug "Info useful to developers for debugging the application, not useful during operations."
info "Normal operational messages - may be harvested for reporting, measuring throughput, etc. - no action required."
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."
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"
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."
error "Non-urgent failures, these should be relayed to developers or admins; each item must be resolved within a given time."
critical "Should be corrected immediately, but indicates failure in a primary system, an example is a loss of a backup ISP connection."
alert "Should be corrected immediately, therefore notify staff who can fix the problem. An example would be the loss of a primary ISP connection."

View File

@ -7,7 +7,7 @@
#
# LOG_LEVEL=7 ./main.sh -f /tmp/x -d (change this for your script)
#
# Based on a template by BASH3 Boilerplate v2.3.0
# Based on a template by BASH3 Boilerplate vv2.7.2
# http://bash3boilerplate.sh/#authors
#
# The MIT License (MIT)
@ -280,6 +280,7 @@ if [[ "${__b3bp_tmp_opts:-}" ]]; then
# repeatable flags, they increcemnt
__b3bp_tmp_varname="arg_${__b3bp_tmp_opt:0:1}"
debug "cli arg ${__b3bp_tmp_varname} = (${__b3bp_tmp_default}) -> ${!__b3bp_tmp_varname}"
# shellcheck disable=SC2004
__b3bp_tmp_value=$((${!__b3bp_tmp_varname} + 1))
printf -v "${__b3bp_tmp_varname}" '%s' "${__b3bp_tmp_value}"
else
@ -360,8 +361,7 @@ trap __b3bp_cleanup_before_exit EXIT
# requires `set -o errtrace`
__b3bp_err_report() {
local error_code
error_code=${?}
local error_code=${?}
error "Error in ${__file} in function ${1} on line ${2}"
exit ${error_code}
}
@ -446,7 +446,7 @@ info "$(echo -e "multiple lines example - line #1\\nmultiple lines example - lin
debug "Info useful to developers for debugging the application, not useful during operations."
info "Normal operational messages - may be harvested for reporting, measuring throughput, etc. - no action required."
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."
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"
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."
error "Non-urgent failures, these should be relayed to developers or admins; each item must be resolved within a given time."
critical "Should be corrected immediately, but indicates failure in a primary system, an example is a loss of a backup ISP connection."
alert "Should be corrected immediately, therefore notify staff who can fix the problem. An example would be the loss of a primary ISP connection."

View File

@ -1,39 +1,29 @@
{
"name": "bash3boilerplate",
"description": "Copypastable templates to write better bash scripts",
"version": "2.3.1",
"version": "2.7.2",
"packageManager": "yarn@3.6.0+sha224.19e47520fa56c6146388fdeb438d9dcf6630c3f277a2e1180995c3bb",
"engines": {
"node": ">= 18",
"yarn": "3.6.0"
},
"scripts": {
"build:production": "LANYON_ENV=production lanyon build",
"build": "lanyon build",
"deploy": "lanyon deploy",
"encrypt": "lanyon encrypt",
"inject": "./_scripts/inject.sh",
"install:lanyon": "lanyon install",
"lint": "shellcheck --shell=bash $(find . -name '*.sh' -maxdepth 2)",
"release:major": "env SEMANTIC=major npm run release",
"release:minor": "env SEMANTIC=minor npm run release",
"release:patch": "env SEMANTIC=patch npm run release",
"release": "npm version ${SEMANTIC:-patch} -m \"Release %s\" && npm run version:replace && git commit main.sh src/*.sh -m 'Update version' && git push && git push --tags && npm publish",
"serve:production": "LANYON_ENV=production lanyon serve",
"start:production": "npm-run-all build:production serve:production",
"start": "lanyon start",
"test:debug:main:repeated": "cross-env LOG_LEVEL=7 test/acceptance.sh main-repeated",
"test:update": "cross-env SAVE_FIXTURES=true npm run test",
"lint:shellcheck": "shellcheck --severity=${SHELLCHECK_SEVERITY:-info} $(find . -name '*.sh' -maxdepth 2)",
"lint:style": "test/style.pl $(find . -name '*.sh' -maxdepth 2)",
"lint": "npm-run-all -l 'lint:**'",
"release:major": "env SEMANTIC=major yarn release",
"release:minor": "env SEMANTIC=minor yarn release",
"release:patch": "env SEMANTIC=patch yarn release",
"release": "npm version ${SEMANTIC:-patch} -m \"Release %s\" && yarn version:replace && git commit main.sh src/*.sh -m 'Update version' && git push && git push --tags -f && npm publish",
"test:debug:main:repeated": "env LOG_LEVEL=7 test/acceptance.sh main-repeated",
"test:update": "env SAVE_FIXTURES=true yarn test",
"test": "test/acceptance.sh",
"upgrade:modules": "next-update --keep true --tldr",
"version:current": "node -e 'console.log(require(\"./package.json\").version)'",
"version:replace": "replace 'v\\d+\\.\\d+\\.\\d+' \"v$(npm run --silent version:current)\" main.sh src/*.sh"
},
"optionalDependencies": {
"fsevents": "*"
},
"dependencies": {},
"devDependencies": {
"cross-env": "3.1.3",
"fakefile": "0.0.8",
"lanyon": "0.1.7",
"next-update": "1.5.1",
"npm-run-all": "3.1.2",
"replace": "0.3.0"
"fakefile": "1.1.0",
"npm-run-all": "4.1.5",
"replace": "1.2.2"
}
}

View File

@ -7,18 +7,19 @@
#
# Limitations:
#
# - All keys inside the .ini file must be unique, regardless of the use of sections
# - All keys inside a section of the .ini file must be unique
# - Optional comment parameter for the creation of new entries
#
# Usage as a function:
#
# source ini_val.sh
# ini_val data.ini connection.host 127.0.0.1
# ini_val data.ini connection.host 127.0.0.1 "Host name or IP address"
#
# Usage as a command:
#
# ini_val.sh data.ini connection.host 127.0.0.1
# ini_val.sh data.ini connection.host 127.0.0.1 "Host name or IP address"
#
# Based on a template by BASH3 Boilerplate v2.3.0
# Based on a template by BASH3 Boilerplate vv2.7.2
# http://bash3boilerplate.sh/#authors
#
# The MIT License (MIT)
@ -30,43 +31,77 @@ function ini_val() {
local file="${1:-}"
local sectionkey="${2:-}"
local val="${3:-}"
local delim=" = "
local comment="${4:-}"
local delim="="
local comment_delim=";"
local section=""
local key=""
local current=""
# add default section
local section_default="default"
if [[ ! -f "${file}" ]]; then
# touch file if not exists
touch "${file}"
fi
# Split on . for section. However, section is optional
IFS='.' read -r section key <<< "${sectionkey}"
if [[ ! "${key}" ]]; then
key="${section}"
section=""
# default section if not given
section="${section_default}"
fi
local current
current=$(awk -F "${delim}" "/^${key}${delim}/ {for (i=2; i<NF; i++) printf \$i \" \"; print \$NF}" "${file}")
# get current value (if exists)
current=$(sed -En "/^\[/{h;d;};G;s/^${key}([[:blank:]]*)${delim}(.*)\n\[${section}\]$/\2/p" "${file}"|awk '{$1=$1};1')
# get current comment (if exists)
current_comment=$(sed -En "/^\[${section}\]/,/^\[.*\]/ s|^(${comment_delim}\[${key}\])(.*)|\2|p" "${file}"|awk '{$1=$1};1')
if ! grep -q "\[${section}\]" "${file}"; then
# create section if not exists (empty line to seperate new section for better readability)
echo >> "${file}"
echo "[${section}]" >> "${file}"
fi
if [[ ! "${val}" ]]; then
# get a value
echo "${current}"
else
# set a value
if [[ ! "${current}" ]]; then
# doesn't exist yet, add
if [[ ! "${section}" ]]; then
# no section was given, add to bottom of file
echo "${key}${delim}${val}" >> "${file}"
else
# add to section
sed -i.bak -e "/\\[${section}\\]/a ${key}${delim}${val}" "${file}"
# this .bak dance is done for BSD/GNU portability: http://stackoverflow.com/a/22084103/151666
rm -f "${file}.bak"
fi
else
# replace existing
sed -i.bak -e "/^${key}${delim}/s/${delim}.*/${delim}${val}/" "${file}"
# this .bak dance is done for BSD/GNU portability: http://stackoverflow.com/a/22084103/151666
rm -f "${file}.bak"
if [[ ! "${section}" ]]; then
# if no section is given, propagate the default section
section=${section_default}
fi
if [[ ! "${comment}" ]]; then
# if no comment given, keep old comment
comment="${current_comment}"
fi
# maintenance area
# a) remove comment if new given / respect section
sed -i.bak "/^\[${section}\]/,/^\[.*\]/ s|^\(${comment_delim}\[${key}\] \).*$||" "${file}"
# b) remove old key / respect section
sed -i.bak "/^\[${section}\]/,/^\[.*\]/ s|^\(${key}=\).*$||" "${file}"
# c) remove all empty lines in ini file
sed -i.bak '/^[[:space:]]*$/d' "${file}"
# d) insert line break before every section for better readability
sed -i.bak $'s/^\\[/\\\n\\[/g' "${file}"
# add to section
if [[ ! "${comment}" ]]; then
# add new key/value _without_ comment
RET="/\\[${section}\\]/a\\
${key}${delim}${val}"
else
# add new key/value _with_ preceeding comment
RET="/\\[${section}\\]/a\\
${comment_delim}[${key}] ${comment}\\
${key}${delim}${val}"
fi
sed -i.bak -e "${RET}" "${file}"
# this .bak dance is done for BSD/GNU portability: http://stackoverflow.com/a/22084103/151666
rm -f "${file}.bak"
fi
}

View File

@ -20,7 +20,7 @@
#
# megamount.sh smb://janedoe:abc123@192.168.0.1/documents /mnt/documents
#
# Based on a template by BASH3 Boilerplate v2.3.0
# Based on a template by BASH3 Boilerplate vv2.7.2
# http://bash3boilerplate.sh/#authors
#
# The MIT License (MIT)

View File

@ -18,7 +18,7 @@
#
# parse_url.sh 'http://johndoe:abc123@example.com:8080/index.html'
#
# Based on a template by BASH3 Boilerplate v2.3.0
# Based on a template by BASH3 Boilerplate vv2.7.2
# http://bash3boilerplate.sh/#authors
#
# The MIT License (MIT)

View File

@ -16,7 +16,7 @@
#
# ALLOW_REMAINDERS=1 templater.sh input.cfg output.cfg
#
# Based on a template by BASH3 Boilerplate v2.3.0
# Based on a template by BASH3 Boilerplate vv2.7.2
# http://bash3boilerplate.sh/#authors
#
# The MIT License (MIT)

View File

@ -209,7 +209,6 @@ while IFS=$'\n' read -r bash; do
while IFS=$'\n' read -r file; do
[[ "${file}" =~ ^\./node_modules/ ]] && continue
[[ "${file}" =~ ^\./website/\.lanyon/ ]] && continue
echo -n " ${file}.. "
@ -230,65 +229,4 @@ while IFS=$'\n' read -r bash; do
fi
done <<< "$(which -a bash 2>/dev/null)"
# do some shellcheck linting
if [[ "$(command -v shellcheck)" ]]; then
echo "==> ShellCheck"
pushd "${__root}" > /dev/null
failed="false"
while IFS=$'\n' read -r file; do
[[ "${file}" =~ ^\./node_modules/ ]] && continue
[[ "${file}" =~ ^\./website/ ]] && continue
echo -n " ${file}.. "
if ! shellcheck --shell=bash --external-sources --color=always \
"${file}" >> "${__accptstTmpDir}/shellcheck.err"; then
echo "✗"
failed="true"
continue
fi
echo "✓"
done <<< "$(find . -type f -iname '*.sh')"
popd > /dev/null
if [[ "${failed}" = "true" ]]; then
cat "${__accptstTmpDir}/shellcheck.err"
exit 1
fi
fi
# poor man's style guide checking
echo "==> b3bp style guide"
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 ! "${__root}/test/style.pl" "${file}" >> "${__accptstTmpDir}/style.err"; then
echo "✗"
failed="true"
continue
fi
echo "✓"
done <<< "$(find . -type f -iname '*.sh')"
popd > /dev/null
if [[ "${failed}" = "true" ]]; then
echo
cat "${__accptstTmpDir}/style.err"
echo
exit 1
fi
exit 0

View File

@ -17,7 +17,7 @@ ACCPTST:STDIO_REPLACE_DATETIMES
{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 [ 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.
{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.

View File

@ -2,23 +2,41 @@
exists
127.0.0.1
nginx, nodejs
--> command: Replace three values in-place and show result
orphan = no more
[default]
orphan=no more
[connection]
host = 192.168.0.1
host=192.168.0.1
[software]
packages = vim
packages=vim
[comment]
;[command] got this new comment
command=works like a chame
;[new_command] last addition will be moved downwards again after next command
new_command=commented too
--> function: Read 3 values
exists
127.0.0.1
nginx, nodejs
--> function: Replace three values in-place and show result
orphan = no more
[default]
orphan=no more
[connection]
host = 192.168.0.1
host=192.168.0.1
[software]
packages = vim
packages=vim
[comment]
;[command] got this new comment
command=works like a chame
;[new_command] last addition will be moved downwards again after next command
new_command=commented too

View File

@ -17,7 +17,7 @@ ACCPTST:STDIO_REPLACE_DATETIMES
{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 [ 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.
{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.

View File

@ -17,7 +17,7 @@ ACCPTST:STDIO_REPLACE_DATETIMES
{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 [ 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.
{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.

View File

@ -1,7 +1,8 @@
orphan = exists
[default]
orphan=exists
[connection]
host = 127.0.0.1
host=127.0.0.1
[software]
packages = nginx, nodejs
packages=nginx, nodejs

10
test/scenario/ini_val/run.sh Normal file → Executable file
View File

@ -17,11 +17,16 @@ echo "--> command: Read 3 values"
bash "${__root}/src/ini_val.sh" ./dummy.ini orphan
bash "${__root}/src/ini_val.sh" ./dummy.ini connection.host
bash "${__root}/src/ini_val.sh" ./dummy.ini software.packages
bash "${__root}/src/ini_val.sh" ./dummy.ini comment.command
echo "--> command: Replace three values in-place and show result"
bash "${__root}/src/ini_val.sh" ./dummy.ini orphan "no more"
bash "${__root}/src/ini_val.sh" ./dummy.ini connection.host "192.168.0.1"
bash "${__root}/src/ini_val.sh" ./dummy.ini software.packages "vim"
bash "${__root}/src/ini_val.sh" ./dummy.ini comment.command "commented" "this key is commented"
bash "${__root}/src/ini_val.sh" ./dummy.ini comment.new_command "commented too" "last addition will be moved downwards again after next command"
bash "${__root}/src/ini_val.sh" ./dummy.ini comment.command "works like a chame" "got this new comment"
cat dummy.ini
rm -f dummy.ini
@ -35,10 +40,15 @@ echo "--> function: Read 3 values"
ini_val ./dummy.ini orphan
ini_val ./dummy.ini connection.host
ini_val ./dummy.ini software.packages
ini_val ./dummy.ini comment.command
echo "--> function: Replace three values in-place and show result"
ini_val ./dummy.ini orphan "no more"
ini_val ./dummy.ini connection.host "192.168.0.1"
ini_val ./dummy.ini software.packages "vim"
ini_val ./dummy.ini comment.command "commented" "this key is commited"
ini_val ./dummy.ini comment.new_command "commented too" "last addition will be moved downwards again after next command"
ini_val ./dummy.ini comment.command "works like a chame" "got this new comment"
cat dummy.ini
rm -f dummy.ini

View File

@ -1 +0,0 @@
{rules: {}}

View File

@ -1 +0,0 @@
bash3boilerplate.sh

View File

@ -1,4 +0,0 @@
title: BASH3 Boilerplate
plugins:
- jekyll-redirect-from

View File

@ -1,84 +0,0 @@
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
{% if page.url == "/" %}
<title>{{page.title}}</title>
{% else %}
<title>{{page.title}} | {{site.title}}</title>
{% endif %}
<meta name="keywords" content="bash, template, scripting, command-line">
<meta name="description" content="BASH3 Boilerplate">
<link href='https://fonts.googleapis.com/css?family=Open+Sans:400,300,600,700' rel='stylesheet' type='text/css'>
<link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
<link rel="stylesheet" href="{{site.lanyon_assets.app.css}}" media="screen" charset="utf-8">
</head>
<body>
<header>
<div id="header-overlay"></div>
<a href="/">
<span id="logo"></span>
</a>
<div id="menu">
<i class="material-icons">menu</i>
<ul id="menu-items">
</ul>
</div>
<span id="more">
<i class="material-icons">expand_more</i>
</span>
</header>
<section id="content">
{% if page.url == "/" %}
<div class="Social">
<iframe src="http://ghbtns.com/github-btn.html?user=kvz&repo=bash3boilerplate&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100" height="20"></iframe>
<a href="https://travis-ci.org/kvz/bash3boilerplate"><img src="https://travis-ci.org/kvz/bash3boilerplate.svg" alt="Build Status"></a>
</div>
{% endif %}
{{content}}
{% if page.url == "/" %}
<h2 id="activity-feed">On GitHub</h2>
<p>
BASH3 Boilerplate is a friendly group of folks further developing our
re-usable templates as we go.
We'd love to hear what you think <a href="https://github.com/kvz/bash3boilerplate">on GitHub</a>.
Here's what's been going on recently.
</p>
<div class="on-the-githubs" data-event-source="repos/kvz/bash3boilerplate">Loading...</div>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<script src="//kvz.github.io/on-the-githubs/js/jquery.on-the-githubs.min.js"></script>
<script type="text/javascript">
$('.on-the-githubs').onthegithubs();
</script>
{% endif %}
<div class="Social">
<iframe src="http://ghbtns.com/github-btn.html?user=kvz&repo=bash3boilerplate&type=watch&count=true" allowtransparency="true" frameborder="0" scrolling="0" width="100" height="20"></iframe>
</div>
<p>
<small>
<hr />
Website design based on
the wonderful <a href="http://apex.run">apex.run</a>
with <a href="https://twitter.com/tjholowaychuk/status/744909762865696769">the author's consent</a>.
</small>
</p>
</section>
</body>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/highlight.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/9.1.0/languages/bash.min.js"></script>
<script async src="{{site.lanyon_assets.app.js}}"></script>
<script>
(function(i,s,o,g,r,a,m){i['GoogleAnalyticsObject']=r;i[r]=i[r]||function(){
(i[r].q=i[r].q||[]).push(arguments)},i[r].l=1*new Date();a=s.createElement(o),
m=s.getElementsByTagName(o)[0];a.async=1;a.src=g;m.parentNode.insertBefore(a,m)
})(window,document,'script','https://www.google-analytics.com/analytics.js','ga');
ga('create', 'UA-63083-13', 'auto');
ga('send', 'pageview');
</script>
</html>

View File

@ -1,76 +0,0 @@
#!/usr/bin/env bash
# This file:
#
# - Injects markdown files into the ./website directory
# - Changes them a little to make them more suitable for Jekyll building
#
# Usage:
#
# ./inject.sh
#
# Based on a template by BASH3 Boilerplate v2.0.0
# http://bash3boilerplate.sh/#authors
#
# The MIT License (MIT)
# Copyright (c) 2013 Kevin van Zonneveld and contributors
# You are not obligated to bundle the LICENSE file with your b3bp projects as long
# as you leave these references intact in the header comments of your source files.
# Exit on error. Append || true if you expect an error.
set -o errexit
# Exit on error inside any functions or subshells.
set -o errtrace
# Do not allow use of undefined vars. Use ${VAR:-} to use an undefined VAR
set -o nounset
# Catch the error in case mysqldump fails (but gzip succeeds) in `mysqldump |gzip`
set -o pipefail
# Turn on traces, useful while debugging but commented out by default
# set -o xtrace
# Set magic variables for current file, directory, os, etc.
__dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
__file="${__dir}/$(basename "${BASH_SOURCE[0]}")"
__base="$(basename "${__file}" .sh)"
__root="$(cd "$(dirname "$(dirname "${__dir}")")" && pwd)"
pushd "${__root}"
# Offer the main template for download as http://bash3boilerplate.sh/main.sh
cp -v main.sh website/
for doc in "README" "FAQ" "CHANGELOG"; do
targetName="$(echo "${doc}" | awk '{print tolower($0)}')"
permalink="/${targetName}/"
subtitle="$(tr '[:lower:]' '[:upper:]' <<< "${targetName:0:1}")${targetName:1} | "
redirectFrom="/${doc}.md/"
backLink='\n\n<a href="/">&laquo; Home</a>'
if [[ "${doc}" = "README" ]]; then
targetName="index"
permalink="/"
subtitle=""
redirectFrom="nothing"
backLink=""
fi
cat <<EOF > "website/${targetName}.md"
---
layout: default
permalink: ${permalink}
redirect_from: ${redirectFrom}
title: ${subtitle}BASH3 Boilerplate Template for writing better Bash scripts
warning: This page is generated by ${__base}.sh based on ${doc}.md, please don't edit ${targetName}.md directly.
---
EOF
# If '<!--more-->' exists, only inject what comes after it, so you can have e.g. a ToC or buildbuttons
# on GitHub, without that also rendering in the site (site may have its own ToC rendering for instance)
if grep '<!--more-->' "${doc}.md"; then
sed -n -e '/<!--more-->/,$p' "${doc}.md" | tail -n +2 >> "website/${targetName}.md"
else
cat "${doc}.md" >> "website/${targetName}.md"
fi
# Add a "<- Back Home" link, if any
echo -e "${backLink}" >> "website/${targetName}.md"
echo "--> written website/${targetName}.md"
done
popd

View File

@ -1,13 +0,0 @@
require('./main.js')
require('./style.css')
require('./syntax.css')
// check if HMR is enabled
if (module.hot) {
module.hot.accept('./main.js', function () {
require('./main.js');
});
module.hot.accept('./style.css', function () {
require('./style.css');
});
}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.6 KiB

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 563 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 349 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 543 KiB

File diff suppressed because one or more lines are too long

Binary file not shown.

Before

Width:  |  Height:  |  Size: 345 KiB

File diff suppressed because one or more lines are too long

View File

@ -1,55 +0,0 @@
// Backgrounds.
// var backgrounds = [1,2,3,4,5,6]
var backgrounds = [1]
// Highlighting.
hljs.initHighlighting()
// Storage.
var store = window.sessionStorage
// Background.
var background = store.getItem('background')
if (!background) {
var i = Math.random() * backgrounds.length | 0
background = backgrounds[i]
console.log('setting background to %s', background)
store.setItem('background', background)
}
// Body class for background.
var el = document.getElementById('header-overlay')
el.style.backgroundImage = 'url(/assets/images/' + background + '.jpg)'
// Attach class to #menu element depending on page offset.
document.addEventListener('DOMContentLoaded', chooseMenuColor)
window.onscroll = chooseMenuColor
function chooseMenuColor() {
var menuElement = document.getElementById('menu')
var menuTopOffset = 45
Math.floor(window.innerHeight * .20) < window.pageYOffset + menuTopOffset ?
menuElement.classList.remove('over-header') :
menuElement.classList.add('over-header')
}
function $get(selector) { return document.querySelector(selector) }
function $all(selector) {
return Array.prototype.slice.call(document.querySelectorAll(selector))
}
var container = $get('#menu-items')
// if (location.pathname !== '/') {
// var li = document.createElement('li');
// li.innerHTML = '<a href="/">&laquo; Home</a>';
// container.appendChild(li);
// }
$all('#content h2').forEach(function(el) {
var li = document.createElement('li');
li.innerHTML = '<a href="#' + el.id + '">' + el.innerHTML + '</a>';
container.appendChild(li);
})

View File

@ -1,345 +0,0 @@
body {
font: 16px/1.625 "Open Sans", "Helvetica Neue", "Helvetica", Arial, sans-serif;
-webkit-font-smoothing: antialiased;
text-rendering: optimizeLegibility;
color: #656a71;
margin: 0;
}
#header-overlay {
background: #131313 50% 100% no-repeat;
background-size: cover;
height: 20vh;
width: 100%;
opacity: 0;
-webkit-animation-name: overlay;
animation-name: overlay;
-webkit-animation-duration: 5s;
animation-duration: 5s;
-webkit-animation-delay: 1s;
animation-delay: 1s;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
@-webkit-keyframes overlay {
0% {
opacity: 0;
}
100% {
opacity: .25;
}
}
@keyframes overlay {
0% {
opacity: 0;
}
100% {
opacity: .25;
}
}
body.background-1 #header-overlay {
background-image: url(images/1.jpg);
}
body.background-4 #header-overlay {
background-image: url(images/1.jpg);
}
#logo {
display: block;
background: url(images/b3bp-logo.png) center;
background-repeat: no-repeat;
background-size: contain;
width: 180px;
height: 120px;
position: absolute;
top: 50%;
left: 50%;
margin-left: -100px;
margin-top: -60px;
-webkit-animation-name: logo;
animation-name: logo;
-webkit-animation-duration: 2s;
animation-duration: 2s;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
}
@-webkit-keyframes logo {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
@keyframes logo {
0% {
opacity: 0;
}
100% {
opacity: 1;
}
}
#more {
position: absolute;
bottom: 10px;
left: 50%;
margin-left: -6px;
color: white;
opacity: 0;
-webkit-animation-name: move;
animation-name: move;
-webkit-animation-duration: 3s;
animation-duration: 3s;
-webkit-animation-delay: 3s;
animation-delay: 3s;
-webkit-animation-fill-mode: forwards;
animation-fill-mode: forwards;
-webkit-animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
animation-timing-function: cubic-bezier(0.86, 0, 0.07, 1);
}
@-webkit-keyframes move {
0% {
opacity: 0;
bottom: 300px;
}
50% {
opacity: 1;
bottom: 10px;
}
90% {
opacity: 1;
bottom: 10px;
}
100% {
opacity: 0;
bottom: -10px;
}
}
@keyframes move {
0% {
opacity: 0;
bottom: 300px;
}
50% {
opacity: 1;
bottom: 10px;
}
90% {
opacity: 1;
bottom: 10px;
}
100% {
opacity: 0;
bottom: -10px;
}
}
#content {
padding: 100px 0;
max-width: 650px;
margin: 0 auto;
}
#menu {
position: fixed;
top: 35px;
right: 35px;
cursor: pointer;
background: transparent;
color: black;
padding: 7px;
border-radius: 1px;
line-height: 0;
}
#menu.over-header {
color: white;
}
#menu i {
font-size: 19px;
}
#menu:hover #menu-items {
opacity: 1;
visibility: visible;
}
#menu-items {
line-height: 1.7;
opacity: 0;
position: fixed;
visibility: hidden;
margin: 0;
padding: 20px;
font-size: 12px;
background: white;
color: #121212;
top: 67px;
right: 35px;
border-radius: 1px;
text-align: right;
}
#menu-items li a:hover {
text-decoration: underline;
}
#menu-items li {
list-style: none;
}
#menu-items li a {
color: #4C4C4C;
}
h1, h2, h3, h4 {
font-weight: 600;
margin-bottom: 0px;
color: #3b444f;
}
h1 { font-size: 2em; /* 2*16 = 32 */ }
h2 { font-size: 1.5em; /* 1.5*16 = 24 */ }
h3 { font-size: 1.17em; /* 1.17*16 = 18.72 */ }
h4 { font-size: 1em; /* 1*16 = 16 */ }
h5 { font-size: 0.83em; /* 0.83*16 = 13.28 */ }
h6 { font-size: 0.75em; /* 0.75*16 = 12 */ }
h1 {
/*margin-top: 75px;*/
}
h1::before {
/*display: block;
content: ' ';
border-top: 1px dotted #eee;
width: 35%;
margin: 0 auto 75px auto;*/
}
h2 {
margin-top: 50px;
}
h3 {
margin-top: 30px;
}
p > code,
li > code {
border: 1px solid #eee;
padding: 2px 10px;
border-radius: 3px;
font-size: .75rem;
color: #555;
white-space: nowrap;
}
header {
background: #131313;
position: relative;
}
a {
text-decoration: none;
color: #55A1E1;
}
a:hover {
text-decoration: underline;
}
hr {
margin: 1px;
border: none;
height: 1px;
/* Set the hr color */
color: gainsboro; /* old IE */
background-color: gainsboro; /* Modern Browsers */
}
.Social {
margin: 0 auto;
text-align: center;
}
.Social > * {
display: inline;
margin: 0;
padding: 0;
}
.on-the-githubs {
-webkit-margin-before: 1em;
-webkit-margin-after: 1em;
}
.on-the-githubs:after {
content: '';
display: table;
clear: both;
}
.on-the-githubs > li {
list-style-type: none;
margin: 0;
padding: 0;
/*height: 26px;*/
position: relative;
border-bottom: 1px solid rgba(gainsboro, 0.3);
margin-bottom: 10px;
}
.on-the-githubs > li:after {
content: '';
display: table;
clear: both;
}
.on-the-githubs > li p {
font-size: 15px;
line-height: 16px;
margin: 0 2px;
padding: 0;
display: inline-block;
float: left;
overflow: hidden;
max-width: 80%;
}
.on-the-githubs > li abbr {
font-size: 12px;
line-height: 16px;
position: absolute;
right: 0;
float: left;
text-align: right;
/*display: none*/
}
.on-the-githubs > li a {
font-weight: normal;
/*text-decoration: underline;*/
}
.on-the-githubs > li img {
float: left;
margin: 0 2px 0 0;
border-radius: 10px;
width: 18px;
height: 18px;
}

View File

@ -1,104 +0,0 @@
pre {
border-top-color: #ddd;
border-radius: 3px;
font-size: .75rem;
overflow-x: auto;
line-height: 1.3;
padding: 1.5rem;
background: #fff;
color: #333;
overflow-x: auto;
border: 1px solid #eee;
border-bottom-color: #ddd;
}
/*
XCode style (c) Angel Garcia <angelgarcia.mail@gmail.com>
*/
.hljs {
display: block;
}
.hljs-comment,
.hljs-quote {
color: #006a00;
}
.hljs-keyword,
.hljs-selector-tag,
.hljs-literal {
color: #aa0d91;
}
.hljs-name {
color: #008;
}
.hljs-variable,
.hljs-template-variable {
color: #660;
}
.hljs-string {
color: #c41a16;
}
.hljs-regexp,
.hljs-link {
color: #080;
}
.hljs-title,
.hljs-tag,
.hljs-symbol,
.hljs-bullet,
.hljs-number,
.hljs-meta {
color: #1c00cf;
}
.hljs-section,
.hljs-class .hljs-title,
.hljs-type,
.hljs-attr,
.hljs-built_in,
.hljs-builtin-name,
.hljs-params {
color: #5c2699;
}
.hljs-attribute,
.hljs-subst {
color: #000;
}
.hljs-formula {
background-color: #eee;
font-style: italic;
}
.hljs-addition {
background-color: #baeeba;
}
.hljs-deletion {
background-color: #ffc8bd;
}
.hljs-selector-id,
.hljs-selector-class {
color: #9b703f;
}
.hljs-doctag,
.hljs-strong {
font-weight: bold;
}
.hljs-emphasis {
font-style: italic;
}

11868
yarn.lock

File diff suppressed because it is too large Load Diff