summaryrefslogtreecommitdiff
path: root/requirements/scripts/req-list
diff options
context:
space:
mode:
authorJoe Carstairs <me@joeac.net>2025-07-15 23:06:51 +0100
committerJoe Carstairs <me@joeac.net>2025-07-15 23:06:51 +0100
commita0dd70b3413ca033535ae3d216a9c17b93fd76dd (patch)
tree42d42f9f98c768535d02192644308d44f94fdd29 /requirements/scripts/req-list
parent74a8961ab375b460ed600ef4bcd0993134dea3de (diff)
add req-list script
Diffstat (limited to 'requirements/scripts/req-list')
-rwxr-xr-xrequirements/scripts/req-list77
1 files changed, 77 insertions, 0 deletions
diff --git a/requirements/scripts/req-list b/requirements/scripts/req-list
new file mode 100755
index 0000000..093d0d2
--- /dev/null
+++ b/requirements/scripts/req-list
@@ -0,0 +1,77 @@
+#!/bin/bash
+
+requirements_dir="$(realpath "$(dirname $0)/..")"
+
+usage()
+{
+ echo "
+Usage: req.sh list [options...] <type>
+
+ <type>: req | dml | ass | need
+
+ options:
+
+ -S lists only unsatisfied requirements
+"
+}
+
+while getopts ":S" o
+do
+ case "$o" in
+ S)
+ unsatisfied=1
+ shift 1
+ ;;
+ *)
+ usage
+ exit 1
+ ;;
+ esac
+done
+
+type="$1"
+id="$2"
+
+if [ "$type" == "" ]
+then
+ usage
+ exit 1
+fi
+
+case "$type" in
+ req)
+ dir="${requirements_dir}/catalogue"
+ ;;
+ dml)
+ dir="${requirements_dir}/data_models"
+ ;;
+ ass)
+ dir="${requirements_dir}/assumptions"
+ ;;
+ need)
+ dir="${requirements_dir}/needs"
+ ;;
+ *)
+ usage
+ exit 1
+esac
+
+if [ "$unsatisfied" == 1 ]
+then
+ filenames=(${dir}/${type}-*${id}.md)
+ for filename in "${filenames[@]}"
+ do
+ satisfied="$(cat $filename | grep -E "^Satisfied by:")"
+ if [ -z "$satisfied" ]
+ then
+ echo "$(basename "$filename" | sed "s/.md$//")"
+ fi
+ done
+ exit 0
+fi
+
+filenames=(${dir}/${type}-*${id}.md)
+for filename in "${filenames[@]}"
+do
+ echo "$(basename "$filename" | sed "s/.md$//")"
+done