summaryrefslogtreecommitdiff
path: root/requirements/scripts/req-list
diff options
context:
space:
mode:
Diffstat (limited to 'requirements/scripts/req-list')
-rwxr-xr-xrequirements/scripts/req-list46
1 files changed, 42 insertions, 4 deletions
diff --git a/requirements/scripts/req-list b/requirements/scripts/req-list
index 4e40bc8..5641734 100755
--- a/requirements/scripts/req-list
+++ b/requirements/scripts/req-list
@@ -13,11 +13,12 @@ Usage: req.sh list [options...] <type> [id]
options:
-S lists unsatisfied requirements
+ -p lists requirements sourced from [id]
-P lists unsourced requirements
"
}
-while getopts ":S:P" o
+while getopts ":S:P:p" o
do
case "$o" in
S)
@@ -28,6 +29,10 @@ do
unsourced=1
shift 1
;;
+ p)
+ sourced=1
+ shift 1
+ ;;
*)
echo "ERROR: ${o} is not a valid option!"
usage
@@ -64,8 +69,30 @@ case "$type" in
exit 1
esac
+if [ "$sourced" == 1 ]
+then
+ echo "
+${type} items sourced from id ${type}-*${id}
+---------------------------------------------------------------------------
+"
+ filenames=(${dir}/${type}-*.md)
+ for filename in "${filenames[@]}"
+ do
+ is_sourced="$(cat $filename | grep -E "^Sources?:.*\b${type}-[0-9]*${id}\b")"
+ if [ -n "$is_sourced" ]
+ then
+ echo "$(basename "$filename" | sed "s/.md$//")"
+ fi
+ done
+ echo ""
+fi
+
if [ "$unsatisfied" == 1 ]
then
+ echo "
+Unsatisfied ${type} items matching id *${id}
+---------------------------------------------------------------------------
+"
filenames=(${dir}/${type}-*${id}.md)
for filename in "${filenames[@]}"
do
@@ -75,26 +102,37 @@ then
echo "$(basename "$filename" | sed "s/.md$//")"
fi
done
+ echo ""
fi
if [ "$unsourced" == 1 ]
then
+ echo "
+Unsourced ${type} items matching id *${id}
+---------------------------------------------------------------------------
+"
filenames=(${dir}/${type}-*${id}.md)
for filename in "${filenames[@]}"
do
- sourced="$(cat $filename | grep -E "^Sources?:")"
- if [ -z "$sourced" ]
+ is_sourced="$(cat $filename | grep -E "^Sources?:")"
+ if [ -z "$is_sourced" ]
then
echo "$(basename "$filename" | sed "s/.md$//")"
fi
done
+ echo ""
fi
-if [ "$unsatisfied" == "" ] && [ "$unsourced" == "" ]
+if [ "$sourced" == "" ] && [ "$unsatisfied" == "" ] && [ "$unsourced" == "" ]
then
+ echo "
+All ${type} items matching id *${id}
+---------------------------------------------------------------------------
+"
filenames=(${dir}/${type}-*${id}.md)
for filename in "${filenames[@]}"
do
echo "$(basename "$filename" | sed "s/.md$//")"
done
+ echo ""
fi