[lxc-devel] [PATCH] lxc-alpine: use getopt to parse options

Kaarle Ritvanen kaarle.ritvanen at datakunkku.fi
Mon Sep 28 11:51:21 UTC 2015


Signed-off-by: Kaarle Ritvanen <kaarle.ritvanen at datakunkku.fi>
---
 templates/lxc-alpine.in | 51 +++++++++++++------------------------------------
 1 file changed, 13 insertions(+), 38 deletions(-)

diff --git a/templates/lxc-alpine.in b/templates/lxc-alpine.in
index d62f891..29c7b7c 100644
--- a/templates/lxc-alpine.in
+++ b/templates/lxc-alpine.in
@@ -277,12 +277,6 @@ usage_err() {
     exit 1
 }
 
-optarg_check() {
-    if [ -z "$2" ]; then
-        usage_err "option '$1' requires an argument"
-    fi
-}
-
 default_path=@LXCPATH@
 release=
 arch=$(uname -m)
@@ -293,58 +287,39 @@ if [ $(id -u) -ne 0 ]; then
    exit 1
 fi
 
+options=$(getopt -o hn:p:r:R:a: -l help,name:,rootfs:,path:,repository:,release:,arch: -- "$@")
+[ $? -eq 0 ] || usage_err
+eval set -- "$options"
+
 while [ $# -gt 0 ]; do
-    opt="$1"
-    shift
-    case "$opt" in
+    case "$1" in
     -h|--help)
         usage
         exit 0
         ;;
     -n|--name)
-        optarg_check $opt "$1"
-        name=$1
-        shift
+        name=$2
         ;;
     --rootfs)
-        optarg_check $opt "$1"
-        rootfs=$1
-        shift
+        rootfs=$2
         ;;
     -p|--path)
-        optarg_check $opt "$1"
-        path=$1
-        shift
+        path=$2
         ;;
     -r|--repository)
-        optarg_check $opt "$1"
-        repository=$1
-        shift
+        repository=$2
 	;;
     -R|--release)
-        optarg_check $opt "$1"
-        release=$1
-        shift
+        release=$2
         ;;
     -a|--arch)
-        optarg_check $opt "$1"
-        arch=$1
-        shift
+        arch=$2
         ;;
     --)
+	shift
         break;;
-    --*=*)
-        # split --myopt=foo=bar into --myopt foo=bar
-        set -- ${opt%=*} ${opt#*=} "$@"
-        ;;
-    -?)
-        usage_err "unknown option '$opt'"
-        ;;
-    -*)
-        # split opts -abc into -a -b -c
-        set -- $(echo "${opt#-}" | sed 's/\(.\)/ -\1/g') "$@"
-        ;;
     esac
+    shift 2
 done
 
 
-- 
2.1.0



More information about the lxc-devel mailing list