aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rwxr-xr-xlibreboot4
-rwxr-xr-xlibs/project173
-rw-r--r--www/Makefile44
-rwxr-xr-xwww/generate.sh9
-rw-r--r--www/git.md2
-rwxr-xr-xwww/publish.sh33
7 files changed, 124 insertions, 142 deletions
diff --git a/.gitignore b/.gitignore
index a1562e82..0390f3b0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -41,7 +41,6 @@ push
tocheck*
*.html
!www/template.html
-/www/temp.md
/www/news/index.md
/www/feed.xml
/www/news/feed.xml
diff --git a/libreboot b/libreboot
index c6464239..cb3e3831 100755
--- a/libreboot
+++ b/libreboot
@@ -100,9 +100,7 @@ libreboot_project() {
if ! project_function_check "${project}" "${action}"; then
libreboot_usage
exit 1
- fi
-
- if [[ "${action}" == "usage" ]]; then
+ elif [[ "${action}" == 'usage' ]]; then
project_action "${action}" "${project}" "$@"
else
project_action_arguments "${action}" "${project}" "$@"
diff --git a/libs/project b/libs/project
index ad307992..43c6a82c 100755
--- a/libs/project
+++ b/libs/project
@@ -70,227 +70,172 @@ project_function_check() {
}
project_action() {
- local action=$1
+ local action="$1"
shift
- local project=$1
+ local project="$1"
shift
- local arguments=$@
+ local arguments="$@"
(
set +e
- if ! project_check "$project"
- then
- printf '%s\n' "Project $project check failed" >&2
- return 1
- fi
-
- project_action_check "$action" "$project" "$@"
+ project_action_check "${action}" "${project}" "$@"
- # Why is this here? Commented out for now.
- # if [ $? -eq 0 ]
- # then
- # return 0
- # fi
+ printf '%s\n' "Project ${project} ${action} (with ${arguments:-no argument})" >&2
- project_include "$project"
+ "${action}" "$@"
- if ! function_check "$action"
- then
- return 0
- fi
-
- printf '%s\n' "Project $project $action (with ${arguments:-no argument})" >&2
-
- (
- set -e
- "$action" "$@"
- )
-
- if [ $? -ne 0 ]
- then
- printf '\n%s\n' "Project $project $action (with ${arguments:-no argument}) failed" >&2
+ if [[ "$?" -ne 0 ]]; then
+ printf '\n%s\n' "Project ${project} ${action} (with ${arguments:-no argument}) failed" >&2
return 1
else
- printf '\n%s\n' "Project $project $action (with ${arguments:-no argument}) completed" >&2
+ printf '\n%s\n' "Project ${project} ${action} (with ${arguments:-no argument}) completed" >&2
fi
)
}
project_action_check() {
- local action=$1
+ local action="$1"
shift
- local project=$1
+ local project="$1"
shift
(
set +e
- if ! project_check "$project"
- then
- printf '%s\n' "Project $project check failed" >&2
- return 1
- fi
-
- project_include "$project"
-
- if ! function_check "$action""_check"
- then
+ if ! function_check "${action}_check"; then
return 1
fi
- for project_force in $PROJECTS_FORCE
- do
- if [ "$project_force" = "$project" ]
- then
+ for project_force in "${PROJECTS_FORCE}"; do
+ if [[ "${project_force}" == "${project}" ]]; then
return 1
fi
done
(
set -e
- "$action""_check" "$@"
+ "${action}_check" "$@"
)
)
}
project_action_helper() {
- local helper=$1
+ local helper="$1"
shift
- local project=$1
+ local project="$1"
shift
- (
- set +e
-
- if ! project_check "$project"
- then
- printf '%s\n' "Project $project check failed" >&2
- return 1
- fi
-
- project_include "$project"
-
- if ! function_check "$helper"
- then
- return 0
- fi
+ if ! function_check "${helper}"; then
+ return 0
+ fi
- (
- set -e
- "$helper" "$@"
- )
- )
+ "${helper}" "$@"
}
project_action_arguments() {
- local action=$1
+ local action="$1"
shift
- local project=$1
+ local project="$1"
shift
- project_action_arguments_verify_recursive "$action" "$project" "$@"
- project_action_arguments_recursive "$action" "$project" "$@"
+ project_include "${project}"
+
+ project_action_arguments_verify_recursive "${action}" "${project}" "$@"
+ project_action_arguments_recursive "${action}" "${project}" "$@"
}
project_action_arguments_verify_recursive() {
- local action=$1
+ local action="$1"
shift
- local project=$1
+ local project="$1"
shift
local action_helper_arguments
# Store final argument.
- local argument=${@:$#}
+ local argument="${@:$#}"
local test
- if [ $# -gt 1 ]
- then
+ if [[ "$#" -gt 1 ]]; then
# Set previous arguments.
set "${@:1:$#-1}"
- elif [ $# -eq 1 ]
- then
+ elif [[ "$#" -eq 1 ]]; then
shift
else
return 0
fi
- action_helper_arguments=$( project_action_helper "arguments" "$project" "$@" )
+ action_helper_arguments="$(project_action_helper 'arguments' "${project}" "$@")"
- if ! [ -z "$action_helper_arguments" ]
- then
- test=$( printf '%s\n' "$action_helper_arguments" | grep -P "^$argument$" || true )
+ if [[ -n "${action_helper_arguments}" ]]; then
+ test="$(printf '%s\n' "${action_helper_arguments}" | grep -e "^${argument}\$" || true)"
- if [ -z "$test" ]
- then
- printf '%s\n' "Invalid argument $argument for project $project action $action" >&2
+ if [[ -z "${test}" ]]; then
+ printf '%s\n' "Invalid argument ${argument} for project ${project} action ${action}" >&2
return 1
fi
fi
- project_action_arguments_verify_recursive "$action" "$project" "$@"
+ project_action_arguments_verify_recursive "${action}" "${project}" "$@"
}
project_action_arguments_recursive() {
- local action=$1
+ local action="$1"
shift
- local project=$1
+ local project="$1"
shift
local action_helper_arguments
local argument
local ifs_save
- action_helper_arguments=$( project_action_helper "arguments" "$project" "$@" )
+ action_helper_arguments="$(project_action_helper 'arguments' "${project}" "$@")"
- if [ $? -ne 0 ] || [ -z "$action_helper_arguments" ]
- then
- project_action "$action" "$project" "$@"
+ if [[ "$?" -ne 0 ]] || [[ -z "${action_helper_arguments}" ]]; then
+ project_action "${action}" "${project}" "$@"
else
# This it to allow space characters in arguments.
- ifs_save=$IFS
+ ifs_save="${IFS}"
IFS=$'\n'
- for argument in $( printf '%s\n' "$action_helper_arguments" )
+ for argument in $(printf '%s\n' "${action_helper_arguments}")
do
(
- IFS=$ifs_save
+ IFS="${ifs_save}"
# Only a single argument at a time is returned by the helper.
- project_action_arguments_recursive "$action" "$project" "$@" "$argument"
+ project_action_arguments_recursive "${action}" "${project}" "$@" "${argument}"
)
done
- IFS=$ifs_save
+ IFS="${ifs_save}"
fi
}
project_action_projects() {
- local action=$1
+ local action="$1"
shift
- local project=$1
+ local project="$1"
shift
- local project_path=$( project_path "$project" )
- local project_projects_path="$project_path/$CONFIGS/$PROJECTS"
- local project_projects_action_path="$project_path/$CONFIGS/$PROJECTS-$action"
+ local project_path="$(project_path "${project}")"
+ local project_projects_path="${project_path}/${CONFIGS}/${PROJECTS}"
+ local project_projects_action_path="${project_path}/${CONFIGS}/${PROJECTS}-${action}"
local arguments
local path
- if [ -f "$project_projects_action_path" ]
- then
- path=$project_projects_action_path
+ if [[ -f "${project_projects_action_path}" ]]; then
+ path="${project_projects_action_path}"
else
- path=$project_projects_path
+ path="${project_projects_path}"
fi
# Multiple arguments can be read from the file.
- while read arguments
- do
- eval "project_action_arguments "$action" $arguments"
- done < "$path"
+ while read arguments; do
+ eval "project_action_arguments ${action} ${arguments}"
+ done < "${path}"
}
project_path() {
diff --git a/www/Makefile b/www/Makefile
new file mode 100644
index 00000000..681e3067
--- /dev/null
+++ b/www/Makefile
@@ -0,0 +1,44 @@
+# Copyright (C) 2017 Michael Reed <michael@michaelreed.io>
+#
+# This program is free software: you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation, either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program. If not, see <http://www.gnu.org/licenses/>.
+
+MD_MAIN != find -L . -name '*.md' -and ! -path '*/news/*'
+HTML_MAIN = $(MD_MAIN:.md=.html)
+
+MD_NEWS != find -L news -name '*.md' -and ! -name index.md
+HTML_NEWS = $(MD_NEWS:.md=.html)
+
+
+# news/index.html implies the building of $(HTML_NEWS).
+all: $(HTML_MAIN) news/index.html
+
+.SUFFIXES: .md .html
+# Does not apply for news/index.md; see below.
+.md.html:
+ ./publish.sh $<
+
+# Unlike all the other markdown files, news/index.md does not exist at first:
+# it must be generated by index.sh. Also note that index.sh depends on the
+# existence of the HTML version of all news items, hence the dependency line
+# below.
+news/index.md: $(HTML_NEWS)
+ ./index.sh
+
+clean:
+ rm -f $(HTML_MAIN) $(HTML_MAIN:.html=.bare.html) \
+ $(HTML_NEWS) $(HTML_NEWS:.html=.bare.html) \
+ news/index.md news/index.html news/index.bare.html \
+ feed.xml news/feed.xml
+
+.PHONY: clean
diff --git a/www/generate.sh b/www/generate.sh
deleted file mode 100755
index 3e54dc13..00000000
--- a/www/generate.sh
+++ /dev/null
@@ -1,9 +0,0 @@
-#!/usr/bin/env bash
-
-[ "x${DEBUG+set}" = 'xset' ] && set -v
-set -e
-
-find -L . -name '*.html' -and -not -name 'template.html' -delete
-find -L . -name '*.md' -exec ./publish.sh {} \;
-./index.sh
-./publish.sh news/index.md
diff --git a/www/git.md b/www/git.md
index 914bb5c5..ed3b444b 100644
--- a/www/git.md
+++ b/www/git.md
@@ -24,7 +24,7 @@ with the following scripts in that directory:
- index.sh: generates the news feed (on the News section of the website)
- publish.sh: converts an .md file to an .html file
-- generate.sh: with calls to index.sh and publish.sh, compiles the entire
+- Makefile: with calls to index.sh and publish.sh, compiles the entire
Libreboot website
Use any standard text editor (e.g. Vim, Emacs, Nano, Gedit) to edit the files,
diff --git a/www/publish.sh b/www/publish.sh
index 264c95a1..9c3a4fcd 100755
--- a/www/publish.sh
+++ b/www/publish.sh
@@ -2,6 +2,7 @@
#
# Copyright (C) 2017 Alyssa Rosenzweig <alyssa@rosenzweig.io>
# Copyright (C) 2017 Leah Rowe <info@minifree.org>
+# Copyright (C) 2017 Michael Reed <michael@michaelreed.io>
#
# This program is free software: you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
@@ -19,14 +20,16 @@
[ "x${DEBUG+set}" = 'xset' ] && set -v
set -e
-printf '%s\n' $1
FILE=${1%.md}
+TMPFILE=$(mktemp -t libreboot_www.XXXXXXXXXX)
-cat $1 > temp.md
+cat "$1" > "$TMPFILE"
OPTS="-T Libreboot"
-if [ "${FILE}" != "./index" ]; then
+if [[ $FILE == "index" || $FILE == "./index" ]]; then
+ OPTS="--css /headercenter.css"
+else
if [[ $FILE == *suppliers ]]
then
RETURN=""
@@ -41,34 +44,33 @@ if [ "${FILE}" != "./index" ]; then
RETURN="<strong><a href='/git.html#editing-the-website-and-documentation-wiki-style'>Edit this page</a></strong> -- <a href='$DEST'>Back to previous index</a>"
OPTS="-T Libreboot"
fi
-else
- OPTS="--css /headercenter.css"
fi
if [[ $FILE = *suppliers ]]; then
- printf '\n%s\n' "<strong><a href=\"/git.html#editing-the-website-and-documentation-wiki-style\">Edit this page</a></strong> -- <a href=\"../\">Back to previous page</a>" >> temp.md
+ printf '\n%s\n' "<strong><a href=\"/git.html#editing-the-website-and-documentation-wiki-style\">Edit this page</a></strong> -- <a href=\"../\">Back to previous page</a>" >> "$TMPFILE"
fi
-if [ "${FILE}" != "./docs/fdl-1.3" ] && [ "${FILE}" != "./conduct" ]; then
- cat footer.md >> temp.md
+if [[ $FILE != "./docs/fdl-1.3" && $FILE != "docs/fdl-1.3" &&
+ $FILE != "./conduct" && $FILE != "conduct" ]]; then
+ cat footer.md >> "$TMPFILE"
fi
# change out .md -> .html
-sed -i -e 's/\.md\(#[a-z\-]*\)*)/.html\1)/g' temp.md
-sed -i -e 's/\.md\(#[a-z\-]*\)*]/.html\1]/g' temp.md
+sed -i -e 's/\.md\(#[a-z\-]*\)*)/.html\1)/g' "$TMPFILE"
+sed -i -e 's/\.md\(#[a-z\-]*\)*]/.html\1]/g' "$TMPFILE"
# change out .md -> .html
-sed -i -e 's/\.md\(#[a-z\-]*\)*)/.html\1)/g' temp.md
-sed -i -e 's/\.md\(#[a-z\-]*\)*]/.html\1]/g' temp.md
+sed -i -e 's/\.md\(#[a-z\-]*\)*)/.html\1)/g' "$TMPFILE"
+sed -i -e 's/\.md\(#[a-z\-]*\)*]/.html\1]/g' "$TMPFILE"
# work around issue #2872
-TOC=$(grep -q "^x-toc-enable: true$" temp.md && printf '%s\n' "--toc --toc-depth=2") || TOC=""
+TOC=$(grep -q "^x-toc-enable: true$" "$TMPFILE" && printf '%s\n' "--toc --toc-depth=2") || TOC=""
# work around heterogenous pandoc versions
SMART=$(pandoc -v | grep -q '2\.0' || printf '%s\n' "--smart") || SMART=""
# chuck through pandoc
-pandoc $TOC $SMART temp.md -s --css /global.css $OPTS \
+pandoc $TOC $SMART "$TMPFILE" -s --css /global.css $OPTS \
--template template.html --metadata return="$RETURN"> $FILE.html
# additionally, produce bare file for RSS
@@ -76,3 +78,6 @@ pandoc $1 > $FILE.bare.html
# generate section title anchors as [link]
sed -i -e 's_^<h\([123]\) id="\(.*\)">\(.*\)</h\1>_<div class="h"><h\1 id="\2">\3</h\1><a aria-hidden="true" href="#\2">[link]</a></div>_' $FILE.html
+
+# clean up temporary file
+rm -f "$TMPFILE"