103 lines
1.8 KiB
Plaintext
103 lines
1.8 KiB
Plaintext
|
#!/bin/bash
|
||
|
|
||
|
function find_garlic_conf() {
|
||
|
grep -o '^cp /nix/store/[^ ]*-garlic_config.json' "$1" | sed 's/^cp //g'
|
||
|
}
|
||
|
|
||
|
function show_units() {
|
||
|
exp=$1
|
||
|
|
||
|
units=$(grep '^/nix/store/.*-unit$' $exp)
|
||
|
|
||
|
nunits=$(echo "$units" | wc -l)
|
||
|
echo " Experiment: $exp"
|
||
|
echo " Units: $nunits"
|
||
|
echo
|
||
|
echo " Unit file Name"
|
||
|
|
||
|
for unit in $units; do
|
||
|
gconf=$(find_garlic_conf $unit)
|
||
|
unitName=$(jq -r .unitName "$gconf")
|
||
|
|
||
|
printf " %s %s %s %s\n" "$unit" "$present" "$unitName"
|
||
|
done
|
||
|
}
|
||
|
|
||
|
function query_tre() {
|
||
|
tre=$1
|
||
|
exp=$(grep "^# */nix/store/[^ ]*-experiment$" "$tre" | sed 's/# *//g')
|
||
|
|
||
|
echo
|
||
|
echo " Trebuchet: $tre"
|
||
|
show_units $exp
|
||
|
echo
|
||
|
}
|
||
|
|
||
|
function query_exp() {
|
||
|
exp=$1
|
||
|
|
||
|
echo
|
||
|
show_units "$exp"
|
||
|
echo
|
||
|
}
|
||
|
|
||
|
function query_unit() {
|
||
|
unit=$1
|
||
|
|
||
|
stages=$(grep '^# */nix/store/.*$' $unit | sed 's/^# */ /g')
|
||
|
gconf=$(find_garlic_conf $unit)
|
||
|
unitName=$(jq -r .unitName "$gconf")
|
||
|
|
||
|
echo
|
||
|
echo " Unit: $unit"
|
||
|
echo " Name: $unitName"
|
||
|
echo " Stages:"
|
||
|
echo
|
||
|
echo "$stages"
|
||
|
echo
|
||
|
echo " Config: $gconf"
|
||
|
echo
|
||
|
jq . "$gconf"
|
||
|
}
|
||
|
|
||
|
function query_result() {
|
||
|
tree=$1
|
||
|
|
||
|
tre=$(readlink -f $tree/trebuchet)
|
||
|
exp=$(readlink -f $tree/experiment)
|
||
|
|
||
|
echo
|
||
|
echo " Result tree: $tree"
|
||
|
echo " Trebuchet: $tre"
|
||
|
show_units $exp
|
||
|
echo
|
||
|
}
|
||
|
|
||
|
element=$1
|
||
|
|
||
|
if [ "$1" == "--help" -o -z "$1" ]; then
|
||
|
cat <<EOF
|
||
|
Retrieves information about garlic experiments
|
||
|
|
||
|
Usage: garlic-query <path>
|
||
|
|
||
|
The path may be a trebuchet, experiment, unit or resultTree.
|
||
|
EOF
|
||
|
exit 1
|
||
|
fi
|
||
|
|
||
|
# Try prepending the nix store
|
||
|
if [ ! -e $element ]; then
|
||
|
element=/nix/store/$element*
|
||
|
fi
|
||
|
|
||
|
element=$(readlink -f $element)
|
||
|
|
||
|
case "$element" in
|
||
|
*-trebuchet) query_tre $element ;;
|
||
|
*-experiment) query_exp $element ;;
|
||
|
*-unit) query_unit $element ;;
|
||
|
*-resultTree) query_result $element ;;
|
||
|
*) echo "unknown: $element"; exit 1 ;;
|
||
|
esac
|