various: fancier readconfig, permit env overrides

This commit is contained in:
Dubiousjim 2013-07-05 00:21:39 -04:00 committed by Natanael Copa
parent 89afa41792
commit cfa6c7d67a
4 changed files with 71 additions and 24 deletions

View File

@ -30,7 +30,7 @@ get_privkey_file() {
default_name="${emailaddr:-$USER}-$(printf "%x" $(date +%s))"
privkey="$abuild_home/$default_name.rsa"
privkey="$ABUILD_USERDIR/$default_name.rsa"
[ -n "$non_interactive" ] && return 0
msg "Generating public/private rsa key pair for abuild"
echo -n "Enter file in which to save the key [$privkey]: "
@ -42,7 +42,7 @@ get_privkey_file() {
}
do_keygen() {
mkdir -p "$abuild_home"
mkdir -p "$ABUILD_USERDIR"
get_privkey_file
pubkey="$privkey.pub"
@ -68,14 +68,14 @@ do_keygen() {
fi
if [ -n "$append_config" ]; then
if [ -f "$abuild_userconf" ]; then
if [ -f "$ABUILD_USERCONF" ]; then
# comment out the existing values
sed -i -e 's/^PACKAGER_PRIVKEY=/\#&/' "$abuild_userconf"
sed -i -e 's/^PACKAGER_PRIVKEY=/\#&/' "$ABUILD_USERCONF"
fi
echo "PACKAGER_PRIVKEY=\"$privkey\"" >> "$abuild_userconf"
echo "PACKAGER_PRIVKEY=\"$privkey\"" >> "$ABUILD_USERCONF"
else
msg ""
msg "You might want add following line to $abuild_userconf:"
msg "You might want add following line to $ABUILD_USERCONF:"
msg ""
msg "PACKAGER_PRIVKEY=\"$privkey\""
msg ""
@ -92,7 +92,7 @@ usage() {
$prog $abuild_ver - generate signing keys
Usage: $prog [-a|--append] [-i|--install] [-n]
Options:
-a, --append Set PACKAGER_PRIVKEY=<generated key> in $abuild_userconf
-a, --append Set PACKAGER_PRIVKEY=<generated key> in $ABUILD_USERCONF
-i, --install Install public key into /etc/apk/keys using sudo
-n Non-interactive. Use defaults
-q, --quiet

View File

@ -85,9 +85,9 @@ if [ -z "$privkey" ]; then
cat >&2 << __EOF__
No private key found. Use 'abuild-keygen' to generate the keys.
Then you can either:
* set the PACKAGER_PRIVKEY in $abuild_userconf
* set the PACKAGER_PRIVKEY in $ABUILD_USERCONF
('abuild-keygen -a' does this for you)
* set the PACKAGER_PRIVKEY in $abuild_conf
* set the PACKAGER_PRIVKEY in $ABUILD_CONF
* specify the key with the -k option to $prog
__EOF__

View File

@ -31,7 +31,7 @@ if [ $# -gt 0 ]; then
exit 2
fi
if ! [ -f "$abuild_conf" ] && ! [ -f "$abuild_userconf" ]; then
if ! [ -f "$ABUILD_CONF" ] && ! [ -f "$ABUILD_USERCONF" ]; then
die "no abuild.conf found"
fi

View File

@ -3,20 +3,67 @@
sysconfdir=@sysconfdir@
prog=${0##*/}
abuild_conf=${ABUILD_CONF:-"$sysconfdir/abuild.conf"}
abuild_home=${ABUILD_USERDIR:-"$HOME/.abuild"}
abuild_userconf=${ABUILD_USERCONF:-"$abuild_home/abuild.conf"}
# read config
if [ -f "$abuild_conf" ]; then
. "$abuild_conf" || abuild_conf=
fi
# read user config if exists
if [ -f "$abuild_userconf" ]; then
. "$abuild_userconf" || abuild_userconf=
fi
readconfig() {
local _APORTSDIR _BUILDDIR _PKGDEST _SRCPKGDEST _REPODEST _SRCDEST
local _CARCH _CHOST _CTARGET _CPPFLAGS _CFLAGS _CXXFLAGS _LDFLAGS
local _JOBS _MAKEFLAGS _PACKAGER _USE_COLORS
local gitbase=
[ -n "${APORTSDIR+x}" ] && _APORTSDIR=$APORTSDIR
[ -n "${BUILDDIR+x}" ] && _BUILDDIR=$BUILDDIR
[ -n "${PKGDEST+x}" ] && _PKGDEST=$PKGDEST
[ -n "${SRCPKGDEST+x}" ] && _SRCPKGDEST=$SRCPKGDEST
[ -n "${REPODEST+x}" ] && _REPODEST=$REPODEST
[ -n "${SRCDEST+x}" ] && _SRCDEST=$SRCDEST
[ -n "${CARCH+x}" ] && _CARCH=$CARCH
[ -n "${CHOST+x}" ] && _CHOST=$CHOST
[ -n "${CTARGET+x}" ] && _CTARGET=$CTARGET
[ -n "${CPPFLAGS+x}" ] && _CPPFLAGS=$CPPFLAGS
[ -n "${CFLAGS+x}" ] && _CFLAGS=$CFLAGS
[ -n "${CXXFLAGS+x}" ] && _CXXFLAGS=$CXXFLAGS
[ -n "${LDFLAGS+x}" ] && _LDFLAGS=$LDFLAGS
[ -n "${JOBS+x}" ] && _JOBS=$JOBS
[ -n "${MAKEFLAGS+x}" ] && _MAKEFLAGS=$MAKEFLAGS
[ -n "${PACKAGER+x}" ] && _PACKAGER=$PACKAGER
[ -n "${USE_COLORS+x}" ] && _USE_COLORS="$USE_COLORS"
: ${ABUILD_CONF:=$sysconfdir/abuild.conf}
: ${ABUILD_USERDIR:=$HOME/.abuild}
: ${ABUILD_USERCONF:=$ABUILD_USERDIR/abuild.conf}
[ -f "$ABUILD_CONF" ] && . "$ABUILD_CONF"
[ -f "$ABUILD_USERCONF" ] && . "$ABUILD_USERCONF"
APORTSDIR=${_APORTSDIR-$APORTSDIR}
gitbase=$(git rev-parse --show-toplevel 2>/dev/null) # already is -P
if [ -d "$APORTSDIR" ]; then
APORTSDIR=$(cd "$APORTSDIR"; pwd -P)
elif [ -z "$APORTSDIR" ] && [ -d "$HOME/aports" ]; then
APORTSDIR=$(cd "$HOME/aports"; pwd -P)
else
if [ -n "$gitbase" ]; then
case $(git config remote.origin.url) in
*/aports) APORTSDIR=$gitbase ;;
*) APORTSDIR= ;;
esac
else
APORTSDIR=
fi
fi
BUILDDIR=${_BUILDDIR-$BUILDDIR}
PKGDEST=${_PKGDEST-$PKGDEST}
SRCPKGDEST=${_SRCPKGDEST-$SRCPKGDEST}
REPODEST=${_REPODEST-$REPODEST}
SRCDEST=${_SRCDEST-$SRCDEST}
CARCH=${_CARCH-$CARCH}
CHOST=${_CHOST-$CHOST}
CTARGET=${_CTARGET-$CTARGET}
CPPFLAGS=${_CPPFLAGS-$CPPFLAGS}
CFLAGS=${_CFLAGS-$CFLAGS}
CXXFLAGS=${_CXXFLAGS-$CXXFLAGS}
LDFLAGS=${_LDFLAGS-$LDFLAGS}
JOBS=${_JOBS-$JOBS}
MAKEFLAGS=${_MAKEFLAGS-$MAKEFLAGS}
PACKAGER=${_PACKAGER-$PACKAGER}
USE_COLORS=${_USE_COLORS-$USE_COLORS}
}
readconfig
# expects $1 to be a package directory in the aports tree ('foo' or 'main/foo')