mirror of
https://git.savannah.gnu.org/git/gnuboot.git
synced 2025-01-03 23:07:39 +01:00
Denis 'GNUtoo' Carikli
768fde6f2d
We have redundant news systems: GNU Boot is already using GNU and Savannah's new infrastructure, so we don't need to duplicate that on the GNU Boot website. This lowers the maintenance now (as we need to do less work to publish news). But it also lowers the amount of work in the future as Untitled (the static website generator that we use) handles news generation differently from the rest of the pages, and since we planned to migrate to Haunt, getting rid of news generation should probably divide the amount of work needed to do the migration by two. Thanks a lot to Adrien 'neox' Bourmault for the help with this patch (neox gave me the links, told me about the capabilities of Savannah, Planet, etc). Signed-off-by: Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org> Acked-by: Adrien Bourmault <neox@gnu.org>
161 lines
4 KiB
Bash
Executable file
161 lines
4 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
# Copyright (C) 2022-2023 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
|
#
|
|
# 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 <https://www.gnu.org/licenses/>.
|
|
|
|
# For compatibility with sysexits.h (see man 3 sysexits.h for more details)
|
|
EX_USAGE=64
|
|
|
|
untitled_uri="https://notabug.org/untitled/untitled.git"
|
|
untitled_path=""
|
|
untitled_commit="e72d055915c3a9ffe739982946e101b146b2483c"
|
|
|
|
help()
|
|
{
|
|
echo "Usage: $0 [options]"
|
|
echo ""
|
|
echo "Available options:"
|
|
echo -e "\t-h, --help"
|
|
echo -e "\t\tDisplay this help and exit."
|
|
echo -e "\t--with-untitled-path PATH"
|
|
echo -e "\t\tUse a local untitled directory from PATH\n" \
|
|
"\t\tinstead of downloading the latest version from\n" \
|
|
"\t\t${untitled_uri}"
|
|
echo -e "\t--download-only"
|
|
echo -e "\t\tOnly download and setup Untitled. Does not build the"
|
|
echo -e "\t\twebsite."
|
|
|
|
}
|
|
|
|
sync_repo()
|
|
{
|
|
dst_path="$1"
|
|
src_uri="$2"
|
|
src_path="$3"
|
|
src_revision="$4"
|
|
src_patches="$5"
|
|
|
|
if [ -z "${src_path}" ] && [ ! -d "${dst_path}" ] ; then
|
|
git clone "${src_uri}" "${dst_path}"
|
|
git -C "${dst_path}" checkout "${src_revision}"
|
|
elif [ ! -d "${dst_path}" ] ; then
|
|
mkdir -p "$(dirname "${dst_path}")"
|
|
cp -a "${src_path}" "${dst_path}"
|
|
if [ -n "${src_revision}" ] ; then
|
|
git -C "${dst_path}" checkout "${src_revision}"
|
|
fi
|
|
elif [ -z "${src_path}" ] ; then
|
|
localrev="$(git -C "${dst_path}" --no-pager \
|
|
log --oneline HEAD -1 --format='%H')"
|
|
|
|
git -C "${dst_path}" remote get-url origin || \
|
|
git -C "${dst_path}" remote add origin "${src_uri}"
|
|
git -C "${dst_path}" remote set-url origin "${src_uri}"
|
|
git -C "${dst_path}" clean -dfx
|
|
|
|
if [ "${localrev}" != "${src_revision}" ] ; then
|
|
git -C "${dst_path}" fetch origin
|
|
git -C "${dst_path}" checkout "${src_revision}"
|
|
fi
|
|
|
|
|
|
|
|
if git -C "${dst_path}" status | \
|
|
grep '^rebase in progress;' > /dev/null ; then
|
|
git -C "${dst_path}" am --abort
|
|
fi
|
|
|
|
for patch in ${src_patches} ; do
|
|
GIT_COMMITTER_EMAIL="noreply@gnuboot.gnu.org" \
|
|
GIT_COMMITTER_NAME="website-build" \
|
|
git -C "${dst_path}" am "$(realpath "${patch}")"
|
|
done
|
|
else
|
|
rm -rf "${dst_path}"
|
|
cp -a "${src_path}" "${dst_path}"
|
|
if [ -n "${src_revision}" ] ; then
|
|
git -C "${dst_path}" checkout "${src_revision}"
|
|
fi
|
|
fi
|
|
}
|
|
|
|
copy_website()
|
|
{
|
|
dst_path="$1"
|
|
|
|
rm -rf "${dst_path}"
|
|
mkdir -p "${dst_path}"
|
|
cp site.cfg "${dst_path}"
|
|
cp -a "pages/" "${dst_path}/site"
|
|
cp -a "hwdumps/" "${dst_path}/site/docs/hardware/"
|
|
cp -a "img/" "${dst_path}/site/"
|
|
}
|
|
|
|
help_missing_arg()
|
|
{
|
|
printf "Error: Argument of %s is missing.\n\n" "$1"
|
|
help
|
|
}
|
|
|
|
download_only=0
|
|
i=1
|
|
while [ "$i" -le $# ] ; do
|
|
opt="$(eval echo \$$i)"
|
|
|
|
case "${opt}" in
|
|
-h|--help)
|
|
help
|
|
exit 0
|
|
;;
|
|
--download-only)
|
|
download_only=1
|
|
;;
|
|
--with-untitled-path)
|
|
if [ "$i" -ge $# ] ; then
|
|
help_missing_arg "--with-untitled-path"
|
|
exit ${EX_USAGE}
|
|
fi
|
|
untitled_path="$(eval echo \$$((i + 1)))"
|
|
i="$((i + 1))"
|
|
;;
|
|
*)
|
|
help
|
|
exit ${EX_USAGE}
|
|
;;
|
|
esac
|
|
|
|
i="$((i + 1))"
|
|
done
|
|
|
|
set -e
|
|
|
|
sync_repo "untitled" \
|
|
"${untitled_uri}" "${untitled_path}" \
|
|
"${untitled_commit}"
|
|
|
|
if [ "${download_only}" -eq 0 ] ; then
|
|
copy_website "untitled/www/lbwww/"
|
|
|
|
cd untitled
|
|
|
|
# Remove "This HTML page was generated by the Untitled Static Site
|
|
# Generator." at the bottom of each page as it is already mentionned above.
|
|
sed 's/^SHAMELESS_PLUG=".*"/SHAMELESS_PLUG=""/g' -i lang/*/strings.cfg
|
|
|
|
# We don't need the RSS link as GNU already has a planet
|
|
# instance that provide an atom feed.
|
|
sed 's/^RSS_LINK=".*"/RSS_LINK=""/g' -i lang/*/strings.cfg
|
|
|
|
./build sites lbwww
|
|
fi
|