1#!/bin/bash
2
3# Adapted from vendor/google_clockwork/packages/SystemUI/daggervis/visualize_dagger_component.sh
4# Usage: visualize_dagger_component.sh output_file component_name [filter]
5# Example: visualize_dagger_component.sh ~/CarSysUIComponent.svg CarSysUIComponent Keyguard
6if [ -z "$1" ]; then
7  echo "Error: please specify an output file path. Example: \"visualize_dagger_component.sh ~/CarSysUIComponent.svg CarSysUIComponent Keyguard\""
8  exit 1
9fi
10
11if [ -z "$2" ]; then
12  echo "Error: please specify a dagger component name. Example: \"visualize_dagger_component.sh CarSysUIComponent Keyguard\""
13  exit 1
14fi
15
16if [ -z "$ANDROID_BUILD_TOP" ]; then
17  echo "Error: cannot find ANDROID_BUILD_TOP. Please go to Android root folder and run \". build/envsetup.sh\" and lunch a target."
18  exit 1
19fi
20
21ARTIFACTS_FOLDER=$ANDROID_BUILD_TOP/out/target/common/obj/JAVA_LIBRARIES/CarSystemUI-core-daggervis_intermediates
22CLASSES_FILE=$ARTIFACTS_FOLDER/classes.jar
23if [ ! -f $CLASSES_FILE ]; then
24  echo "Error: cannot find CarSystemUI-core-daggervis artifacts. Please run \"m CarSystemUI-core-daggervis\" first."
25  exit 1
26fi
27
28DOT_FOLDER=$ARTIFACTS_FOLDER/dot
29rm -rf $DOT_FOLDER
30mkdir $DOT_FOLDER
31
32echo "Unzipping dot files ..."
33unzip -d $DOT_FOLDER/ $CLASSES_FILE "*.dot" > /dev/null
34
35DOT_FILE=$DOT_FOLDER/$2.dot
36if [ ! -f $DOT_FILE ]; then
37  echo "Error: can't find file $DOT_FILE. Did you forget to rebuild CarSystemUI-core-daggervis?"
38  exit 1
39fi
40
41echo "Parsing $DOT_FILE"
42PARSED_DOT_FILE=$DOT_FOLDER/$2_parsed.dot
43$ANDROID_BUILD_TOP/packages/apps/Car/SystemUI/daggervis/parser.py $DOT_FILE $PARSED_DOT_FILE $3
44if [[ $? -ne 0 ]]; then
45  exit 1
46fi
47
48echo "Visualizing $PARSED_DOT_FILE"
49dot -v -T svg $PARSED_DOT_FILE > $1
50