cdist configuration management
Latest manual: https://www.cdi.st/manual/latest/
Home page: https://www.cdi.st
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
199 lines
5.0 KiB
199 lines
5.0 KiB
#!/bin/sh |
|
# |
|
# 2011 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/>. |
|
# |
|
# |
|
# Push a directory to a target, both sides have the same name (i.e. explorers) |
|
# or |
|
# Pull a directory from a target, both sides have the same name (i.e. explorers) |
|
# |
|
|
|
# exit on any error |
|
#set -e |
|
|
|
basedir=${0%/*} |
|
version=$(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/niconetz |
|
WEBBASE=$WEBDIR/software/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 |
|
man) |
|
set -e |
|
"$0" mangen |
|
"$0" mantype |
|
"$0" manbuild |
|
;; |
|
|
|
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 conf/type/*/man.text; do |
|
dst="$(echo $mansrc | sed -e 's;conf/;cdist-;' -e 's;/;;' -e 's;/man;;' -e 's;^;docs/man/man7/;')" |
|
ln -sf "../../../$mansrc" "$dst" |
|
done |
|
;; |
|
|
|
mangen) |
|
${MANDIR}/cdist-reference.text.sh |
|
;; |
|
|
|
release) |
|
./docs/dev/releasechecklist |
|
;; |
|
|
|
pypi) |
|
#$0 very-clean |
|
#$0 man |
|
$0 version-dist |
|
$0 sdist |
|
$0 version-dynamic |
|
;; |
|
sdist) |
|
python3 setup.py sdist |
|
;; |
|
|
|
speeches) |
|
cd "$SPEECHESDIR" |
|
for speech in *tex; do |
|
pdflatex "$speech" |
|
pdflatex "$speech" |
|
pdflatex "$speech" |
|
done |
|
;; |
|
|
|
webmain) |
|
cp README ${WEBPAGE} |
|
cd ${WEBDIR} && git commit -m "cdist main update" ${WEBPAGE} |
|
cd ${WEBDIR} && make pub |
|
;; |
|
|
|
web) |
|
cp README ${WEBPAGE} |
|
rm -rf ${WEBMAN} |
|
mkdir -p ${WEBMAN}/man1 ${WEBMAN}/man7 |
|
|
|
# old stuff |
|
# rm -rf ${WEBDIR}/${WEBBASE}/speeches && mkdir ${WEBDIR}/${WEBBASE}/speeches |
|
# cp ${SPEECHESDIR}/*.pdf ${WEBDIR}/${WEBBASE}/speeches |
|
# git describe > ${WEBDIR}/${WEBBASE}/man/VERSION |
|
|
|
cp ${MAN1DSTDIR}/*.html ${MAN1DSTDIR}/*.css ${WEBMAN}/man1 |
|
cp ${MAN7DSTDIR}/*.html ${MAN7DSTDIR}/*.css ${WEBMAN}/man7 |
|
|
|
cd ${WEBDIR} && git add ${WEBBASE} |
|
cd ${WEBDIR} && git commit -m "cdist update" ${WEBBASE} ${WEBPAGE} |
|
cd ${WEBDIR} && make pub |
|
|
|
# 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" |
|
;; |
|
|
|
p|pu|pub) |
|
for remote in "" github sf ethz; do |
|
echo "Pushing to $remote" |
|
git push --mirror $remote |
|
done |
|
;; |
|
|
|
clean) |
|
rm -f ${MAN7DSTDIR}/cdist-reference.text |
|
rm -f cdist/version.py |
|
rm -f MANIFEST |
|
|
|
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 |
|
;; |
|
very-clean) |
|
$0 clean |
|
rm -rf cache/ |
|
;; |
|
|
|
test) |
|
shift # skip t |
|
|
|
if [ $# -lt 1 ]; then |
|
python3 -m cdist.test |
|
else |
|
python3 -m unittest "$@" |
|
fi |
|
;; |
|
|
|
version) |
|
echo "VERSION=\"$version\"" > cdist/version.py |
|
;; |
|
|
|
*) |
|
echo '' |
|
echo 'Welcome to cdist!' |
|
echo '' |
|
echo 'Here are the possible targets:' |
|
echo '' |
|
echo ' clean: Remove build stuff' |
|
echo ' man: Build manpages (requires Asciidoc)' |
|
echo ' test: Run tests' |
|
echo '' |
|
echo '' |
|
echo "Unknown target, \"$1\"" >&2 |
|
exit 1 |
|
;; |
|
|
|
esac
|
|
|