Explorar el Código

mkimage-yum.sh: handle spaces properly & allow mutiple packages & groups

Signed-off-by: Ankit Jain <ajatkj@yahoo.co.in>
Ankit Jain hace 6 años
padre
commit
8233910503
Se han modificado 1 ficheros con 9 adiciones y 7 borrados
  1. 9 7
      contrib/mkimage-yum.sh

+ 9 - 7
contrib/mkimage-yum.sh

@@ -13,9 +13,9 @@ usage() {
 $(basename $0) [OPTIONS] <name>
 OPTIONS:
   -p "<packages>"  The list of packages to install in the container.
-                   The default is blank.
+                   The default is blank. Can use multiple times.
   -g "<groups>"    The groups of packages to install in the container.
-                   The default is "Core".
+                   The default is "Core". Can use multiple times.
   -y <yumconf>     The path to the yum config to install packages from. The
                    default is /etc/yum.conf for Centos/RHEL and /etc/dnf/dnf.conf for Fedora
   -t <tag>         Specify Tag information.
@@ -30,7 +30,9 @@ if [ -f /etc/dnf/dnf.conf ] && command -v dnf &> /dev/null; then
 	yum_config=/etc/dnf/dnf.conf
 	alias yum=dnf
 fi
-install_groups="Core"
+install_groups=('Core')
+# for names with spaces, use double quotes (") as install_groups=('Core' '"Compute Node"')
+install_packages=('')
 version=
 while getopts ":y:p:g:t:h" opt; do
     case $opt in
@@ -41,10 +43,10 @@ while getopts ":y:p:g:t:h" opt; do
             usage
             ;;
         p)
-            install_packages="$OPTARG"
+            install_packages+=("\"$OPTARG\"")
             ;;
         g)
-            install_groups="$OPTARG"
+            install_groups+=("\"$OPTARG\"")
             ;;
         t)
             version="$OPTARG"
@@ -87,13 +89,13 @@ fi
 if [[ -n "$install_groups" ]];
 then
     yum -c "$yum_config" --installroot="$target" --releasever=/ --setopt=tsflags=nodocs \
-        --setopt=group_package_types=mandatory -y groupinstall "$install_groups"
+        --setopt=group_package_types=mandatory -y groupinstall "${install_groups[*]}"
 fi
 
 if [[ -n "$install_packages" ]];
 then
     yum -c "$yum_config" --installroot="$target" --releasever=/ --setopt=tsflags=nodocs \
-        --setopt=group_package_types=mandatory -y install "$install_packages"
+        --setopt=group_package_types=mandatory -y install "${install_packages[*]}"
 fi
 
 yum -c "$yum_config" --installroot="$target" -y clean all