Deprecate Lanyon-based website in favor of a simple redirect to github

This commit is contained in:
Kevin van Zonneveld 2023-08-29 12:01:10 +02:00
parent cb06f0aa70
commit 9a27140e7e
No known key found for this signature in database
GPG Key ID: 5E20B81008764DF4
41 changed files with 4174 additions and 13218 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!

View File

@ -2,7 +2,7 @@ name: b3bp CI
on:
push:
branches:
- master
- main
pull_request:
types:
- opened
@ -10,38 +10,17 @@ on:
jobs:
ci:
runs-on: ubuntu-latest
steps :
steps:
- uses: actions/checkout@v2
with:
fetch-depth: 1
- uses: actions/setup-node@master
with:
node-version: 10.x
- name: Get yarn cache directory path
id : yarn-cache-dir-path
run : echo "##[set-output name=dir;]$(yarn cache dir)"
- uses: actions/cache@v2
with:
path : ${{ steps.yarn-cache-dir-path.outputs.dir }}
key : ${{ runner.os }}-yarn-${{ hashFiles('**/yarn.lock') }}
restore-keys: |
${{ runner.os }}-yarn-
- uses: sergioramos/yarn-actions/install@master
with:
frozen-lockfile: true
node-version: 18.x
- name: Test
run : |
yarn test
run: |
corepack yarn test
- name: Website Build
if : github.ref == 'refs/heads/master'
run : |
yarn inject
yarn build:production
- name: Website Deploy 🚀
if : github.ref == 'refs/heads/master'
uses: JamesIves/github-pages-deploy-action@3.7.1
with:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
BRANCH : gh-pages # The branch the action should deploy to.
FOLDER : website/_site # The folder the action should deploy.
CLEAN : true # Automatically remove deleted files from the deploy branch
if: github.ref == 'refs/heads/main'
run: |
cp README.md website/

18
.gitignore vendored
View File

@ -1,21 +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.sh
website/_includes/_generated_assets/app-production-body.html
website/_includes/_generated_assets/app-production-head.html

View File

@ -1,61 +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'
} else {
config.jekyll.url = ''
}
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
}

1
.yarnrc.yml Normal file
View File

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

View File

@ -8,16 +8,16 @@ Unplanned.
- [ ] Better style guide checking (#84)
## master
## main
Released: TBA.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.4.2...master).
Released: TBA.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.4.2...main).
- [x] Add feature to edit/update comments in ini file (#132, @rfuehrer)
## v2.4.2
Released: 2019-11-07.
Released: 2019-11-07.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.4.1...v2.4.2).
- [x] Upgrade to `lanyon@0.1.16`
@ -26,7 +26,7 @@ Released: 2019-11-07.
## v2.4.1
Released: 2019-11-07.
Released: 2019-11-07.
[Diff](https://github.com/kvz/bash3boilerplate/compare/v2.3.0...v2.4.1).
- [x] Upgrade to `lanyon@0.1.7`
@ -43,14 +43,14 @@ Released: 2019-11-07.
## v2.4.0
Released: 2016-12-21.
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)
@ -62,7 +62,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)
@ -84,7 +84,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)
@ -111,7 +111,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
@ -123,14 +123,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
@ -144,7 +144,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
@ -153,7 +153,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 GitHub Actions and 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

@ -1,17 +1,17 @@
[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]:#
[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]: #
* [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
@ -19,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.
@ -93,7 +93,7 @@ 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
@ -113,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
@ -167,10 +167,9 @@ We are looking for endorsements! Are you also using b3bp? [Let us know](https://
- [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.

View File

@ -2,21 +2,17 @@
"name": "bash3boilerplate",
"description": "Copypastable templates to write better bash scripts",
"version": "2.4.1",
"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": "./website/_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",
"test": "test/acceptance.sh",
@ -27,11 +23,9 @@
"optionalDependencies": {
"fsevents": "*"
},
"dependencies": {},
"devDependencies": {
"cross-env": "3.1.3",
"fakefile": "0.0.8",
"lanyon": "0.2.31",
"next-update": "1.5.1",
"npm-run-all": "3.1.2",
"replace": "0.3.0"

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}.. "
@ -269,7 +268,6 @@ failed="false"
while IFS=$'\n' read -r file; do
[[ "${file}" =~ ^\./node_modules/ ]] && continue
[[ "${file}" =~ ^\./website/\.lanyon/ ]] && continue
echo -n " ${file}.. "

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 +0,0 @@
<script src="/assets/build/app.js"></script>

View File

@ -1 +0,0 @@
<link href="/assets/build/app.css" rel="stylesheet">

View File

@ -1,83 +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">
{%include _generated_assets/app-{{jekyll.environment}}-head.html%}
</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>
</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>
{%include _generated_assets/app-{{jekyll.environment}}-body.html%}
<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;
}

15
website/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>

14831
yarn.lock

File diff suppressed because it is too large Load Diff