xref: /aosp_15_r20/build/bazel/json_module_graph/query.sh (revision 7594170e27e0732bc44b93d1440d87a54b6ffe7c)
1*7594170eSAndroid Build Coastguard Worker#!/bin/bash -eu
2*7594170eSAndroid Build Coastguard Worker
3*7594170eSAndroid Build Coastguard WorkerLIBDIR="$(dirname "$(readlink -f "$0")")"
4*7594170eSAndroid Build Coastguard Worker
5*7594170eSAndroid Build Coastguard Workerfunction print_usage() {
6*7594170eSAndroid Build Coastguard Worker  echo "Usage: query.sh [-C] <command> <graph JSON> [argument]" 1>&2
7*7594170eSAndroid Build Coastguard Worker  echo "  -C: colorized output" 1>&2
8*7594170eSAndroid Build Coastguard Worker  echo
9*7594170eSAndroid Build Coastguard Worker  echo "Commands":
10*7594170eSAndroid Build Coastguard Worker  for jq in "$LIBDIR"/*.jq; do
11*7594170eSAndroid Build Coastguard Worker    if ! grep -q "^# CMD:" "$jq"; then
12*7594170eSAndroid Build Coastguard Worker      continue
13*7594170eSAndroid Build Coastguard Worker    fi
14*7594170eSAndroid Build Coastguard Worker
15*7594170eSAndroid Build Coastguard Worker    local CMD="$(echo $(basename "$jq") | sed 's/\..*$//')"
16*7594170eSAndroid Build Coastguard Worker    echo "  $CMD": $(cat "$jq" | grep "^# CMD:" | head -n 1 | sed 's/^# CMD://')
17*7594170eSAndroid Build Coastguard Worker  done
18*7594170eSAndroid Build Coastguard Worker  exit 1
19*7594170eSAndroid Build Coastguard Worker}
20*7594170eSAndroid Build Coastguard Worker
21*7594170eSAndroid Build Coastguard WorkerJQARGS=""
22*7594170eSAndroid Build Coastguard Worker
23*7594170eSAndroid Build Coastguard Workerwhile getopts "C" arg; do
24*7594170eSAndroid Build Coastguard Worker  case "$arg" in
25*7594170eSAndroid Build Coastguard Worker    C)
26*7594170eSAndroid Build Coastguard Worker      JQARGS="$JQARGS -C"
27*7594170eSAndroid Build Coastguard Worker      shift
28*7594170eSAndroid Build Coastguard Worker      ;;
29*7594170eSAndroid Build Coastguard Worker    *)
30*7594170eSAndroid Build Coastguard Worker      print_usage
31*7594170eSAndroid Build Coastguard Worker      ;;
32*7594170eSAndroid Build Coastguard Worker  esac
33*7594170eSAndroid Build Coastguard Workerdone
34*7594170eSAndroid Build Coastguard Worker
35*7594170eSAndroid Build Coastguard Workerif [[ "$#" -lt 2 ]]; then
36*7594170eSAndroid Build Coastguard Worker  print_usage
37*7594170eSAndroid Build Coastguard Workerfi
38*7594170eSAndroid Build Coastguard Worker
39*7594170eSAndroid Build Coastguard WorkerCOMMAND="$1"
40*7594170eSAndroid Build Coastguard WorkerGRAPH="$2"
41*7594170eSAndroid Build Coastguard Worker
42*7594170eSAndroid Build Coastguard Workerif [[ "$#" -gt 2 ]]; then
43*7594170eSAndroid Build Coastguard Worker  ARG="$3"
44*7594170eSAndroid Build Coastguard Workerelse
45*7594170eSAndroid Build Coastguard Worker  ARG=""
46*7594170eSAndroid Build Coastguard Workerfi
47*7594170eSAndroid Build Coastguard Worker
48*7594170eSAndroid Build Coastguard Workerif [[ "$#" -gt 3 ]]; then
49*7594170eSAndroid Build Coastguard Worker  ARG2="$4"
50*7594170eSAndroid Build Coastguard Workerelse
51*7594170eSAndroid Build Coastguard Worker  ARG2=""
52*7594170eSAndroid Build Coastguard Workerfi
53*7594170eSAndroid Build Coastguard Worker
54*7594170eSAndroid Build Coastguard Workerjq $JQARGS -L "$LIBDIR" -f "$LIBDIR/$COMMAND".jq "$GRAPH" --arg arg "$ARG" --arg arg2 "$ARG2"
55