forked from rarias/bscpkgs
		
	
		
			
				
	
	
		
			103 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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
 |