#!/bin/sh # This Source Code Form is subject to the terms of the Mozilla Public # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. # # This Source Code Form is "Incompatible With Secondary Licenses", as # defined by the Mozilla Public License, v. 2.0. conf="`dirname $0`/query.conf" query="https://bugzilla.mozilla.org/buglist.cgi?ctype=csv" chart=0 and=0 while test "X$1" != "X"; do arg="$1" shift if test 0 != `expr "X$arg" : 'X--[^=]*\$'`; then # long option: --name val (without '=') name=`expr "X$arg" : 'X--\(.*\)'` val="$1" shift elif test 0 != `expr "X$arg" : 'X--[^=][^=]*='`; then # long option: --name=val name=`expr "X$arg" : 'X--\([^=]*\)'` val=`expr "X$arg" : 'X--[^=]*=\(.*\)'` elif test 0 != `expr "X$arg" : 'X-[a-zA-Z]\$'`; then # short option like -X foo (with space in between) name=`expr "X$arg" : 'X-\(.\)'` val="$1" shift elif test 0 != `expr "X$arg" : 'X-[a-zA-Z]='`; then # reject things like -X=foo echo "Unrecognized option $arg" 1>&2 echo "Use -Xfoo or -X foo instead of -X=foo" 1>&2 exit 1 elif test 0 != `expr "X$arg" : 'X-[a-zA-Z]'`; then # short option like -Xfoo (without space) name=`expr "X$arg" : 'X-\(.\)'` val=`expr "X$arg" : 'X-.\(.*\)'` else name="default" val="$arg" #echo "Unrecognized option $arg" 1>&2 #exit 1 fi # plausibility check: val must not be empty, nor start with '-' if test "X$val" = "X"; then echo "No value found for '$name'!" 1>&2 exit 1 elif test 0 != `expr "X$val" : "X-"` && \ test 0 = `expr "X$val" : "X---"`; then echo "Suspicious value for '$name': '$val' looks like an option!" 1>&2 exit 1 fi # find field and comparison type for option ${name} field=`grep "\"$name\"" "$conf" | awk '{printf $1}'` type=`grep "\"$name\"" "$conf" | awk '{printf $2}'` if test "X$field" = "X" || test "X$type" = "X"; then if test "X$name" = "Xdefault"; then echo 1>&2 "Error: unexpected argument '$arg'" cat 1>&2 <&2 fi exit 1 fi # split val into comma-separated alternative values or=0 while test "X$val" != "X"; do # val1 gets everything before the first comma; val gets the rest if test 0 != `expr "X$val" : 'X[^,]*,'`; then val1=`expr "X$val" : 'X\([^,]*\),'` val=`expr "X$val" : 'X[^,]*,\(.*\)'` else val1="$val" val="" fi # append to query query="${query}&field${chart}-${and}-${or}=${field}" query="${query}&type${chart}-${and}-${or}=${type}" query="${query}&value${chart}-${and}-${or}=${val1}" #echo "----- ${name} : ${field} : ${type} : ${val1} -----" 1>&2 or=`expr ${or} + 1` done chart=`expr ${chart} + 1` done echo "${query}"