new: validate groups when creating new test
authorEryu Guan <eguan@redhat.com>
Fri, 28 Jul 2017 05:24:51 +0000 (13:24 +0800)
committerEryu Guan <eguan@redhat.com>
Thu, 3 Aug 2017 12:44:04 +0000 (20:44 +0800)
Allow only lower case letters, digits, spaces and underscore when
adding groups, give prompt if there's any not-allowed characters.
Also remove redundant spaces between groups.

Reviewed-by: Brian Foster <bfoster@redhat.com>
Signed-off-by: Eryu Guan <eguan@redhat.com>
new

diff --git a/new b/new
index eb7da0f..4eacccd 100755 (executable)
--- a/new
+++ b/new
@@ -239,7 +239,7 @@ then
 
     while true
     do
-       echo -n "Add to group(s) [other] (? for list): "
+       echo -n "Add to group(s) [other] (separate by space, ? for list): "
        read ans
        [ -z "$ans" ] && ans=other
        if [ "X$ans" = "X?" ]
@@ -254,7 +254,17 @@ then
            lst=`for word in $grpl; do echo $word; done | sort| uniq `
            echo $lst
        else
-           break
+           # only allow lower cases, spaces, digits and underscore in group
+           inval=`echo $ans | tr -d '[:lower:][:space:][:digit:]_'`
+           if [ "$inval" != "" ]; then
+               echo "Invalid characters in group(s): $inval"
+               echo "Only lower cases, digits and underscore are allowed in groups, separated by space"
+               continue
+           else
+               # remove redundant spaces/tabs
+               ans=`echo "$ans" | sed 's/\s\+/ /g'`
+               break
+           fi
        fi
     done
 else