--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/lib/lib.sh Wed Feb 01 13:22:27 2012 +0200
@@ -0,0 +1,199 @@
+## library functions
+
+LOG_DEBUG=
+LOG_CMD=y
+LOG_INFO=y
+LOG_WARN=y
+LOG_ERROR=y
+
+function log_debug () {
+ [ $LOG_DEBUG ] && echo "... $@" >&2
+
+ return 0
+}
+
+function log_debugf () {
+ local fmt=$1; shift 1
+
+ [ $LOG_DEBUG ] && printf "... $fmt\n" "$@" >&2
+
+ return 0
+}
+
+function log_info () {
+ [ $LOG_INFO ] && echo "--- $@" >&2
+
+ return 0
+}
+
+function log_cmd () {
+ [ $LOG_CMD ] && echo ">>> $@" >&2
+
+ return 0
+}
+
+function log_warn () {
+ [ $LOG_WARN ] && echo "XXX $@" >&2
+
+ return 0
+}
+
+function log_error () {
+ [ $LOG_ERROR ] && echo "!!! $@" >&2
+
+ return 0
+}
+
+function die () {
+ log_error "$@"
+
+ exit 1
+}
+
+# Execute command verbosely, and exit on failure
+CMD_MOCK=
+CMD_PROMPT=y
+
+function cmd () {
+ log_cmd "$@"
+
+ [ $CMD_MOCK ] && return 0
+
+ "$@" # return $?
+}
+
+function cmd_confirm () {
+ [ $CMD_PROMPT ] && read -p "Confirm: $* ? "
+
+ cmd "$@"
+}
+
+function expand_MB () {
+ local size=${1^}
+
+ case ${size: -1} in
+ G)
+ size=$(( ${size%G} * 1024))
+
+ ;;
+ esac
+
+ echo $size
+}
+
+function extract_iso () {
+ iso=$1
+ dst=$2
+
+ [ ! -r "$iso" ] && die "Given .iso is not readable: $iso"
+ [ -z "$dst" ] && die "Must give destination: $dst"
+ [ -e "$dst" ] && die "Given destination already exists: $dst"
+
+ # temporary mount
+ mnt=$(mktemp -d mnt.XXXX)
+
+ # clean on exit
+ function cleanup () {
+ if mountpoint -q $mnt; then
+ sudo umount $mnt
+ fi
+
+ [ -d $mnt ] && rmdir $mnt
+
+ return $1
+ }
+
+ # loop-mount
+ cmd sudo mount -o loop $iso $mnt || cleanup 1
+
+ # copy
+ cmd cp -rd $mnt $dst || cleanup 1
+
+ # done, cleanup
+ cleanup 0
+}
+
+function my_md5sum () {
+ /usr/bin/md5sum $1 | (
+ read md5sum path
+ echo $md5sum
+ )
+}
+
+function expand_line () {
+ local line=$1
+
+ # evaluate {...} expressions
+ # a slight hack, but it works \o/
+ # http://stackoverflow.com/questions/415677/how-to-replace-placeholders-in-a-text-file/7633579#7633579
+ line="${line//\\/\\\\}"
+ line="${line//\"/\\\"}"
+ line="${line//\`/\\\`}"
+ line="${line//\$/\\\$}"
+ line="${line//{/\${}" # This is just for vim: } "
+
+ # log_debug "($line)" >&2
+ eval "echo \"$line\""
+}
+
+function expand_template () {
+ local tpl=$1
+ local out=$2
+
+ local linecount=0
+
+ # read in each line at a time
+ while IFS='' read -r line; do
+ linecount=$((linecount + 1))
+
+ if [ "${line:0:1}" == "#" ]; then
+ # ignore comments; pass through as-is
+ echo "$line"
+
+ else
+ expand_line "$line" || die "Error at $tpl:$linecount: $line"
+ fi
+
+ done < $tpl > $out
+}
+
+function expand_file () {
+ local src=$1
+ local dst=$2
+
+ log_info "expand: file $src -> $dst"
+
+ cmd expand_template $src $dst
+}
+
+# Recursive expand_template files from src -> dst
+# XXX: not used
+function expand_tree () {
+ local src=$1
+ local dst=$2
+ local filter=${3:-'*'}
+
+ log_info "expand: tree $src/$filter -> $dst"
+
+ [ ! -d $dst ] && cmd mkdir $dst
+
+ for path in ${src}/${filter}; do
+ local name=$(basename $path)
+ local target=$dst/$name
+
+ log_debug "expand_tree: $src: path=$path, name=$name, target=$target"
+
+ if [ -d $path ]; then
+ log_debug "expand_tree: $src: tree $name -> $target"
+ expand_tree $path $target "$filter"
+
+ elif [ -f $path ]; then
+ log_debug "expand_tree: $src: file $name -> $target"
+ expand_file $path $target
+
+ else
+ log_warn "expand_tree: $src: ignore $name"
+
+ fi
+ done
+}
--- a/pkvlm-create Mon Jan 30 14:57:25 2012 +0200
+++ b/pkvlm-create Wed Feb 01 13:22:27 2012 +0200
@@ -9,8 +9,8 @@
DO_SHOWSPEC=y
DO_VIRTINSTALL=
-scripts=$(dirname $0)/scripts
-. $scripts/lib.sh
+lib=$(dirname $0)/lib
+. $lib/lib.sh
### Command-line input
## Command-line options
--- a/scripts/lib.sh Mon Jan 30 14:57:25 2012 +0200
+++ /dev/null Thu Jan 01 00:00:00 1970 +0000
@@ -1,199 +0,0 @@
-## library functions
-
-LOG_DEBUG=
-LOG_CMD=y
-LOG_INFO=y
-LOG_WARN=y
-LOG_ERROR=y
-
-function log_debug () {
- [ $LOG_DEBUG ] && echo "... $@" >&2
-
- return 0
-}
-
-function log_debugf () {
- local fmt=$1; shift 1
-
- [ $LOG_DEBUG ] && printf "... $fmt\n" "$@" >&2
-
- return 0
-}
-
-function log_info () {
- [ $LOG_INFO ] && echo "--- $@" >&2
-
- return 0
-}
-
-function log_cmd () {
- [ $LOG_CMD ] && echo ">>> $@" >&2
-
- return 0
-}
-
-function log_warn () {
- [ $LOG_WARN ] && echo "XXX $@" >&2
-
- return 0
-}
-
-function log_error () {
- [ $LOG_ERROR ] && echo "!!! $@" >&2
-
- return 0
-}
-
-function die () {
- log_error "$@"
-
- exit 1
-}
-
-# Execute command verbosely, and exit on failure
-CMD_MOCK=
-CMD_PROMPT=y
-
-function cmd () {
- log_cmd "$@"
-
- [ $CMD_MOCK ] && return 0
-
- "$@" # return $?
-}
-
-function cmd_confirm () {
- [ $CMD_PROMPT ] && read -p "Confirm: $* ? "
-
- cmd "$@"
-}
-
-function expand_MB () {
- local size=${1^}
-
- case ${size: -1} in
- G)
- size=$(( ${size%G} * 1024))
-
- ;;
- esac
-
- echo $size
-}
-
-function extract_iso () {
- iso=$1
- dst=$2
-
- [ ! -r "$iso" ] && die "Given .iso is not readable: $iso"
- [ -z "$dst" ] && die "Must give destination: $dst"
- [ -e "$dst" ] && die "Given destination already exists: $dst"
-
- # temporary mount
- mnt=$(mktemp -d mnt.XXXX)
-
- # clean on exit
- function cleanup () {
- if mountpoint -q $mnt; then
- sudo umount $mnt
- fi
-
- [ -d $mnt ] && rmdir $mnt
-
- return $1
- }
-
- # loop-mount
- cmd sudo mount -o loop $iso $mnt || cleanup 1
-
- # copy
- cmd cp -rd $mnt $dst || cleanup 1
-
- # done, cleanup
- cleanup 0
-}
-
-function my_md5sum () {
- /usr/bin/md5sum $1 | (
- read md5sum path
- echo $md5sum
- )
-}
-
-function expand_line () {
- local line=$1
-
- # evaluate {...} expressions
- # a slight hack, but it works \o/
- # http://stackoverflow.com/questions/415677/how-to-replace-placeholders-in-a-text-file/7633579#7633579
- line="${line//\\/\\\\}"
- line="${line//\"/\\\"}"
- line="${line//\`/\\\`}"
- line="${line//\$/\\\$}"
- line="${line//{/\${}" # This is just for vim: } "
-
- # log_debug "($line)" >&2
- eval "echo \"$line\""
-}
-
-function expand_template () {
- local tpl=$1
- local out=$2
-
- local linecount=0
-
- # read in each line at a time
- while IFS='' read -r line; do
- linecount=$((linecount + 1))
-
- if [ "${line:0:1}" == "#" ]; then
- # ignore comments; pass through as-is
- echo "$line"
-
- else
- expand_line "$line" || die "Error at $tpl:$linecount: $line"
- fi
-
- done < $tpl > $out
-}
-
-function expand_file () {
- local src=$1
- local dst=$2
-
- log_info "expand: file $src -> $dst"
-
- cmd expand_template $src $dst
-}
-
-# Recursive expand_template files from src -> dst
-# XXX: not used
-function expand_tree () {
- local src=$1
- local dst=$2
- local filter=${3:-'*'}
-
- log_info "expand: tree $src/$filter -> $dst"
-
- [ ! -d $dst ] && cmd mkdir $dst
-
- for path in ${src}/${filter}; do
- local name=$(basename $path)
- local target=$dst/$name
-
- log_debug "expand_tree: $src: path=$path, name=$name, target=$target"
-
- if [ -d $path ]; then
- log_debug "expand_tree: $src: tree $name -> $target"
- expand_tree $path $target "$filter"
-
- elif [ -f $path ]; then
- log_debug "expand_tree: $src: file $name -> $target"
- expand_file $path $target
-
- else
- log_warn "expand_tree: $src: ignore $name"
-
- fi
- done
-}