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