diff options
Diffstat (limited to 'main/util-vserver/setup-vs-template')
-rw-r--r-- | main/util-vserver/setup-vs-template | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/main/util-vserver/setup-vs-template b/main/util-vserver/setup-vs-template new file mode 100644 index 0000000000..8ad7f3fae8 --- /dev/null +++ b/main/util-vserver/setup-vs-template @@ -0,0 +1,44 @@ +#!/bin/sh + +# create a vserver template +PROG=$0 + +usage() { + echo "usage: $PROG [-fhq] [-o OUTFILE] [-X repository] [packages...]" + exit $1 +} + +clean_exit() { + rm -rf "$tmpdir" + exit $1 +} + +outfile=template.tar.gz +fakeroot= +repos= +while getopts "ho:qX:" opt; do + case "$opt" in + h) usage 0;; + o) outfile="$OPTARG";; + q) quiet=-q;; + X) repos="$repos --repository $OPTARG";; + esac +done +shift $(( $OPTIND - 1 )) + +if [ "$(whoami)" != "root" ]; then + echo "Warning: you need root permissions" >&2 +fi + +tmpdir=$(mktemp -d ${TMPDIR:-/tmp}/setup-vs-template-XXXXXX) + +apk add --root "$tmpdir" --initdb --keys-dir /etc/apk/keys -U \ + $quiet ${repos:---repositories-file /etc/apk/repositories} \ + alpine-base $@ \ + || clean_exit 1 + +tar -czf "$outfile" -C "$tmpdir" $(ls "$tmpdir") || clean_exit 1 + +[ -z "$quiet" ] && echo "Created $outfile" +clean_exit 0 + |