| #!/bin/sh |
| # The contents of this file are subject to the Mozilla Public |
| # License Version 1.1 (the "License"); you may not use this file |
| # except in compliance with the License. You may obtain a copy of |
| # the License at http://www.mozilla.org/MPL/ |
| # |
| # Software distributed under the License is distributed on an "AS |
| # IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or |
| # implied. See the License for the specific language governing |
| # rights and limitations under the License. |
| # |
| # The Original Code is the Bugzilla Bug Tracking System. |
| # |
| # The Initial Developer of the Original Code is |
| # Andreas Franke <afranke@mathweb.org>. |
| # Corporation. Portions created by Andreas Franke are |
| # Copyright (C) 2001,2005 Andreas Franke. All |
| # Rights Reserved. |
| # |
| # Contributor(s): |
| |
| 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 <<EOF |
| Use short options like -P1 or long options like --priority=1 , |
| or enable the 'default' behaviour in the 'query.conf' file. |
| EOF |
| else |
| echo "Unknown field name '$name'." 1>&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}" |