archive
This commit is contained in:
88
gollum/index.sh
Executable file
88
gollum/index.sh
Executable file
@@ -0,0 +1,88 @@
|
||||
#! /bin/bash
|
||||
|
||||
function main() {
|
||||
set -e
|
||||
|
||||
fill_missing_files
|
||||
format_files
|
||||
init_git
|
||||
}
|
||||
|
||||
function fill_missing_files() {
|
||||
pushd "${1:-/wiki}" > /dev/null 2>&1
|
||||
fill_if_missing ./Home.md
|
||||
fill_if_missing ./_Header.md
|
||||
find ./* -type d | while read -r i; do
|
||||
i="${i%/}"
|
||||
fill_if_missing "$i.md"
|
||||
fill_if_missing "$i/_Header.md"
|
||||
done
|
||||
rm -f .git/hooks/pre-commit || true
|
||||
for i in .git/hooks/pre-commit custom.css custom.js; do
|
||||
fill_if_missing ./$i "$(cat /opt/${i##*/})"
|
||||
done
|
||||
mkdir -p ./uploads-ftp
|
||||
cp /opt/favicon.ico . || true
|
||||
popd > /dev/null 2>&1
|
||||
}
|
||||
|
||||
function format_files() {
|
||||
pushd ${1:-/wiki} > /dev/null 2>&1
|
||||
|
||||
local patterns=('^[0-9][0-9]*\. *' ' 1. ')
|
||||
local f="/tmp/switch"
|
||||
|
||||
find . -type f -name "*.md" | grep -v '\/_[^\/]*.md' | while read -r path; do
|
||||
for ((i=0; i<${#patterns[@]}; i+=2)); do
|
||||
local from="${patterns[i]}"
|
||||
local to="${patterns[i+1]}"
|
||||
if [ -n "$(grep "${from// /.}" "$path")" ]; then
|
||||
cat "$path" \
|
||||
| sed "s/$from/$to/g" \
|
||||
> "$f"
|
||||
cp "$f" "$path"
|
||||
fi
|
||||
done
|
||||
done
|
||||
|
||||
rm -f "$f"
|
||||
|
||||
popd > /dev/null 2>&1
|
||||
}
|
||||
|
||||
function init_git() {
|
||||
pushd ${1:-/wiki} > /dev/null 2>&1
|
||||
git config user.email bel@bel.bel
|
||||
git config user.name bel
|
||||
git add -A :/
|
||||
if [ "${JUST_ADD:-""}" != "true" ]; then
|
||||
JUST_ADD=true git commit --author="auto <>" -m "routine" || true
|
||||
fi
|
||||
popd > /dev/null 2>&1
|
||||
}
|
||||
|
||||
function fill_if_missing() {
|
||||
local relative_path="$1"
|
||||
shift
|
||||
mkdir -p "$(dirname "$relative_path")"
|
||||
local full_path="$(printf "%s/%s" \
|
||||
"$(realpath \
|
||||
"$(dirname "$relative_path")" \
|
||||
)" \
|
||||
"$(basename "$relative_path")" \
|
||||
)"
|
||||
if [ ! -e "$full_path" ]; then
|
||||
if [ "$#" -gt 0 ]; then
|
||||
echo "$@" > "$full_path"
|
||||
elif [[ "$relative_path" == *"_Header.md" ]]; then
|
||||
echo "<<PathSegments()>>" > "$full_path"
|
||||
else
|
||||
echo "<<ImmediatePages()>>" > "$full_path"
|
||||
fi
|
||||
fi
|
||||
chmod +x "$full_path"
|
||||
}
|
||||
|
||||
if [ "$0" == "${BASH_SOURCE[0]}" ]; then
|
||||
main "$@"
|
||||
fi
|
||||
Reference in New Issue
Block a user