move build-helper into bin/
Signed-off-by: Nico Schottelius <nico@bento.schottelius.org>
This commit is contained in:
parent
9b92822b4b
commit
5fb66cd314
3 changed files with 2 additions and 2 deletions
311
bin/build-helper
Executable file
311
bin/build-helper
Executable file
|
|
@ -0,0 +1,311 @@
|
|||
#!/bin/sh
|
||||
#
|
||||
# 2011-2013 Nico Schottelius (nico-cdist at schottelius.org)
|
||||
#
|
||||
# This file is part of cdist.
|
||||
#
|
||||
# cdist 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.
|
||||
#
|
||||
# cdist 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 cdist. If not, see <http://www.gnu.org/licenses/>.
|
||||
#
|
||||
#
|
||||
# This file contains the heavy lifting found usually in the Makefile
|
||||
#
|
||||
|
||||
basedir=${0%/*}
|
||||
version=$(cd "$basedir" && git describe)
|
||||
|
||||
# Manpage and HTML
|
||||
A2XM="a2x -f manpage --no-xmllint -a encoding=UTF-8"
|
||||
A2XH="a2x -f xhtml --no-xmllint -a encoding=UTF-8"
|
||||
|
||||
# Developer webbase
|
||||
WEBDIR=$HOME/www.nico.schottelius.org
|
||||
WEBBLOG=$WEBDIR/blog
|
||||
WEBTOPDIR=$WEBDIR/software
|
||||
WEBBASE=$WEBTOPDIR/cdist
|
||||
WEBMAN=$WEBBASE/man/$version
|
||||
WEBPAGE=${WEBBASE}.mdwn
|
||||
|
||||
# Documentation
|
||||
MANDIR=docs/man
|
||||
MAN1DSTDIR=${MANDIR}/man1
|
||||
MAN7DSTDIR=${MANDIR}/man7
|
||||
SPEECHESDIR=docs/speeches
|
||||
|
||||
# Change to checkout directory
|
||||
cd "$basedir"
|
||||
|
||||
case "$1" in
|
||||
manbuild)
|
||||
trap abort INT
|
||||
abort() {
|
||||
kill 0
|
||||
}
|
||||
for section in 1 7; do
|
||||
for src in ${MANDIR}/man${section}/*.text; do
|
||||
manpage="${src%.text}.$section"
|
||||
if [ ! -f "$manpage" -o "$manpage" -ot "$src" ]; then
|
||||
echo "Compiling man page for $src"
|
||||
$A2XM "$src"
|
||||
fi
|
||||
htmlpage="${src%.text}.html"
|
||||
if [ ! -f "$htmlpage" -o "$htmlpage" -ot "$src" ]; then
|
||||
echo "Compiling html page for $src"
|
||||
$A2XH "$src"
|
||||
fi
|
||||
done
|
||||
done
|
||||
;;
|
||||
|
||||
mantype)
|
||||
for mansrc in cdist/conf/type/*/man.text; do
|
||||
dst="$(echo $mansrc | sed -e 's;cdist/conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;docs/man/man7/;')"
|
||||
ln -sf "../../../$mansrc" "$dst"
|
||||
done
|
||||
;;
|
||||
|
||||
release-man)
|
||||
version=$($0 changelog-version)
|
||||
|
||||
rm -rf "${WEBMAN}"
|
||||
mkdir -p "${WEBMAN}/man1" "${WEBMAN}/man7"
|
||||
cp ${MAN1DSTDIR}/*.html ${MAN1DSTDIR}/*.css ${WEBMAN}/man1
|
||||
cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${WEBMAN}/man7
|
||||
cd ${WEBMAN} && git add . && git commit -m "Cdist Manpage update: $version"
|
||||
;;
|
||||
|
||||
changelog-changes)
|
||||
awk -F: 'BEGIN { start=0 } { if ($0 ~ /^[[:digit:]]/) { if(start == 0) {start = 1 } else { exit } } else { if(start==1) {print $0 }} }' "$basedir/docs/changelog"
|
||||
;;
|
||||
|
||||
changelog-version)
|
||||
# get version from changelog and ensure it's not already present
|
||||
grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/:.*//'
|
||||
;;
|
||||
|
||||
check-version)
|
||||
changelog_version=$($0 changelog-version)
|
||||
echo "Target version from changelog: $changelog_version"
|
||||
|
||||
if git show --quiet $changelog_version >/dev/null 2>&1; then
|
||||
echo "Version $changelog_version already exists, aborting."
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
check-date)
|
||||
# verify date in changelog
|
||||
date_today="$(date +%Y-%m-%d)"
|
||||
date_changelog=$(grep '^[[:digit:]]' "$basedir/docs/changelog" | head -n1 | sed 's/.*: //')
|
||||
|
||||
if [ "$date_today" != "$date_changelog" ]; then
|
||||
echo "Date in changelog is not today"
|
||||
echo "Changelog: $date_changelog"
|
||||
exit 1
|
||||
fi
|
||||
;;
|
||||
|
||||
blog)
|
||||
version=$($0 changelog-version)
|
||||
blogfile=$WEBBLOG/cdist-${version}-released.mdwn
|
||||
cat << eof > "$blogfile"
|
||||
[[!meta title="Cdist $version released"]]
|
||||
|
||||
Here's a short overview about the changes found in this release:
|
||||
|
||||
eof
|
||||
|
||||
$0 changelog-changes >> "$blogfile"
|
||||
|
||||
cat << eof >> "$blogfile"
|
||||
For more information visit the [[cdist homepage|software/cdist]].
|
||||
|
||||
[[!tag cdist config unix]]
|
||||
eof
|
||||
;;
|
||||
|
||||
release-blog)
|
||||
version=$($0 changelog-version)
|
||||
file=cdist-${version}-released.mdwn
|
||||
cd "$WEBBLOG"
|
||||
git add "$file"
|
||||
git commit -m "New cdist version (blogentry): $version" "$file"
|
||||
git push
|
||||
;;
|
||||
|
||||
release-ml)
|
||||
version=$($0 changelog-version)
|
||||
to_a=cdist
|
||||
to_d=l.schottelius.org
|
||||
to=${to_a}@${to_d}
|
||||
|
||||
from_a=nico-cdist
|
||||
from_d=schottelius.org
|
||||
from=${from_a}@${from_d}
|
||||
|
||||
(
|
||||
cat << eof
|
||||
From: Nico -telmich- Schottelius <$from>
|
||||
To: cdist mailing list <$to>
|
||||
Subject: cdist $version released
|
||||
|
||||
Hello .*,
|
||||
|
||||
cdist $version has been released with the following changes:
|
||||
|
||||
eof
|
||||
|
||||
"$0" changelog-changes
|
||||
cat << eof
|
||||
|
||||
Cheers,
|
||||
|
||||
Nico
|
||||
|
||||
--
|
||||
Automatisation at its best level. With cdist.
|
||||
eof
|
||||
) | /usr/sbin/sendmail -f "$from" "$to"
|
||||
;;
|
||||
|
||||
|
||||
dist-tag)
|
||||
version=$($0 changelog-version)
|
||||
# add tag
|
||||
printf "Enter tag description for %s> " "$version"
|
||||
read tagmessage
|
||||
git tag "$version" -m "$tagmessage"
|
||||
;;
|
||||
|
||||
dist-branch-merge)
|
||||
version=$($0 changelog-version)
|
||||
target_branch=${version%\.*}
|
||||
current_branch=$(git rev-parse --abbrev-ref HEAD)
|
||||
|
||||
if [ "$target_branch" = "$current_branch" ]; then
|
||||
echo "Skipping merge, already on destination branch"
|
||||
else
|
||||
printf "Press enter to git merge $current_branch into \"$target_branch\" > "
|
||||
read prompt
|
||||
git checkout "$target_branch"
|
||||
git merge "$current_branch"
|
||||
git checkout "$current_branch"
|
||||
fi
|
||||
;;
|
||||
|
||||
release-freecode)
|
||||
version=$($0 changelog-version)
|
||||
api_token=$(awk '/machine freecode login/ { print $8 }' ~/.netrc)
|
||||
|
||||
printf "Enter tag list for freecode release %s> " "$version"
|
||||
read taglist
|
||||
|
||||
printf "Enter changelog for freecode release %s> " "$version"
|
||||
read changelog
|
||||
|
||||
echo "Submit preview"
|
||||
cat << eof
|
||||
tag_list = $taglist
|
||||
changelog = $changelog
|
||||
version = $version
|
||||
eof
|
||||
printf "Press enter to submit to freecode> "
|
||||
read dummy
|
||||
|
||||
cat << eof | cfreecode-api release-add cdist
|
||||
{
|
||||
"auth_code": "$api_token",
|
||||
"release": {
|
||||
"tag_list": "$taglist",
|
||||
"version": "$version",
|
||||
"changelog": "$changelog",
|
||||
"hidden_from_frontpage": false
|
||||
}
|
||||
}
|
||||
eof
|
||||
|
||||
;;
|
||||
|
||||
dist-speeches)
|
||||
cd "$SPEECHESDIR"
|
||||
for speech in *tex; do
|
||||
pdflatex "$speech"
|
||||
pdflatex "$speech"
|
||||
pdflatex "$speech"
|
||||
done
|
||||
;;
|
||||
|
||||
web-doc)
|
||||
rsync -av "${basedir}/docs/web/" "${WEBTOPDIR}"
|
||||
|
||||
cd "${WEBDIR}" && git add "${WEBBASE}"
|
||||
cd "${WEBDIR}" && git commit -m "cdist update" "${WEBBASE}" "${WEBPAGE}"
|
||||
cd "${WEBDIR}" && make pub
|
||||
;;
|
||||
|
||||
release-web)
|
||||
set -e
|
||||
# Fix ikiwiki, which does not like symlinks for pseudo security
|
||||
ssh tee.schottelius.org \
|
||||
"cd /home/services/www/nico/www.nico.schottelius.org/www/software/cdist/man &&
|
||||
rm -f latest && ln -sf "$version" latest"
|
||||
;;
|
||||
|
||||
pub)
|
||||
for remote in "" github sf; do
|
||||
echo "Pushing to $remote"
|
||||
git push --mirror $remote
|
||||
done
|
||||
;;
|
||||
|
||||
clean)
|
||||
rm -f ${MAN7DSTDIR}/cdist-reference.text
|
||||
|
||||
find "${MANDIR}" -mindepth 2 -type l \
|
||||
-o -name "*.1" \
|
||||
-o -name "*.7" \
|
||||
-o -name "*.html" \
|
||||
-o -name "*.xml" \
|
||||
| xargs rm -f
|
||||
|
||||
find * -name __pycache__ | xargs rm -rf
|
||||
;;
|
||||
distclean)
|
||||
rm -f cdist/version.py MANIFEST PKGBUILD
|
||||
rm -rf cache/ dist/
|
||||
|
||||
# Archlinux
|
||||
rm -f cdist-*.pkg.tar.xz cdist-*.tar.gz
|
||||
rm -rf pkg/ src/
|
||||
;;
|
||||
|
||||
test)
|
||||
shift # skip t
|
||||
export PYTHONPATH="$(pwd -P)"
|
||||
|
||||
if [ $# -lt 1 ]; then
|
||||
python3 -m cdist.test
|
||||
else
|
||||
python3 -m unittest "$@"
|
||||
fi
|
||||
;;
|
||||
version)
|
||||
echo "VERSION = \"$(git describe)\"" > cdist/version.py
|
||||
;;
|
||||
|
||||
*)
|
||||
echo "Unknown target $@ - aborting"
|
||||
exit 1
|
||||
;;
|
||||
|
||||
esac
|
||||
Loading…
Add table
Add a link
Reference in a new issue