1*d62711e4SAndroid Build Coastguard Worker# Copyright 2019 - The Android Open Source Project 2*d62711e4SAndroid Build Coastguard Worker# 3*d62711e4SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License"); 4*d62711e4SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License. 5*d62711e4SAndroid Build Coastguard Worker# You may obtain a copy of the License at 6*d62711e4SAndroid Build Coastguard Worker# 7*d62711e4SAndroid Build Coastguard Worker# http://www.apache.org/licenses/LICENSE-2.0 8*d62711e4SAndroid Build Coastguard Worker# 9*d62711e4SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software 10*d62711e4SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS, 11*d62711e4SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d62711e4SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and 13*d62711e4SAndroid Build Coastguard Worker# limitations under the License. 14*d62711e4SAndroid Build Coastguard Worker 15*d62711e4SAndroid Build Coastguard Worker############################################################################### 16*d62711e4SAndroid Build Coastguard Worker# This script adds a HTML snippet to the generated reference docs located at 17*d62711e4SAndroid Build Coastguard Worker# developer.android.com/reference. The snippet renders HTML that adds links to 18*d62711e4SAndroid Build Coastguard Worker# toggle between the Java and Kotlin versions of the page. 19*d62711e4SAndroid Build Coastguard Worker############################################################################### 20*d62711e4SAndroid Build Coastguard Worker 21*d62711e4SAndroid Build Coastguard Workerimport getopt 22*d62711e4SAndroid Build Coastguard Workerimport os 23*d62711e4SAndroid Build Coastguard Workerimport sys 24*d62711e4SAndroid Build Coastguard Worker 25*d62711e4SAndroid Build Coastguard Worker 26*d62711e4SAndroid Build Coastguard Worker# GLOBAL FLAGS 27*d62711e4SAndroid Build Coastguard Worker 28*d62711e4SAndroid Build Coastguard Workerglobal stubs 29*d62711e4SAndroid Build Coastguard Workerglobal java_stubs, kotlin_stubs 30*d62711e4SAndroid Build Coastguard Workerglobal work, verbose, show_solo, max_stubs 31*d62711e4SAndroid Build Coastguard Workerglobal java_source_abs_path 32*d62711e4SAndroid Build Coastguard Workerglobal kotlin_source_abs_path 33*d62711e4SAndroid Build Coastguard Worker 34*d62711e4SAndroid Build Coastguard Workerverbose = False # set True to list all files as they are stubbed (--verbose) 35*d62711e4SAndroid Build Coastguard Workerwork = False # set True to insert stubs, False to do a dry run for stats (--work) 36*d62711e4SAndroid Build Coastguard Workershow_solo = False # set True to list files that only appear in one language, rather than both (--solo) 37*d62711e4SAndroid Build Coastguard Workermax_stubs = 0 # set positive to create a limited number of stubs (--max 12) 38*d62711e4SAndroid Build Coastguard Worker 39*d62711e4SAndroid Build Coastguard Worker 40*d62711e4SAndroid Build Coastguard Worker# You must run the script from the refodcs reference/ root directory 41*d62711e4SAndroid Build Coastguard Worker 42*d62711e4SAndroid Build Coastguard Workerjava_ref_root = os.getcwd() 43*d62711e4SAndroid Build Coastguard Workerkotlin_ref_root = os.path.join(java_ref_root, "kotlin") 44*d62711e4SAndroid Build Coastguard Workerroot = os.path.split(java_ref_root)[1] 45*d62711e4SAndroid Build Coastguard Workerif root != "reference": 46*d62711e4SAndroid Build Coastguard Worker print("You must cd to the refocs reference/ root directory") 47*d62711e4SAndroid Build Coastguard Worker sys.exit() 48*d62711e4SAndroid Build Coastguard Worker 49*d62711e4SAndroid Build Coastguard Worker 50*d62711e4SAndroid Build Coastguard Worker# This method inserts the language switcher into the two top-level Android 51*d62711e4SAndroid Build Coastguard Worker# Platform pages: packages.html and classes.html 52*d62711e4SAndroid Build Coastguard Worker# For both Java and Kotlin 53*d62711e4SAndroid Build Coastguard Workerdef insert_platform_summaries(): 54*d62711e4SAndroid Build Coastguard Worker global stubs 55*d62711e4SAndroid Build Coastguard Worker global java_stubs, kotlin_stubs 56*d62711e4SAndroid Build Coastguard Worker global verbose, work, show_solo 57*d62711e4SAndroid Build Coastguard Worker global java_source_abs_path 58*d62711e4SAndroid Build Coastguard Worker global kotlin_source_abs_path 59*d62711e4SAndroid Build Coastguard Worker 60*d62711e4SAndroid Build Coastguard Worker stubs = 0 61*d62711e4SAndroid Build Coastguard Worker java_stubs = 0 62*d62711e4SAndroid Build Coastguard Worker kotlin_stubs = 0 63*d62711e4SAndroid Build Coastguard Worker 64*d62711e4SAndroid Build Coastguard Worker java_source_abs_path = java_ref_root 65*d62711e4SAndroid Build Coastguard Worker kotlin_source_abs_path = kotlin_ref_root 66*d62711e4SAndroid Build Coastguard Worker insert_stub(os.path.join(java_ref_root, "packages.html"), True, True) 67*d62711e4SAndroid Build Coastguard Worker insert_stub(os.path.join(kotlin_ref_root, "packages.html"), False, True) 68*d62711e4SAndroid Build Coastguard Worker 69*d62711e4SAndroid Build Coastguard Worker insert_stub(os.path.join(java_ref_root, "classes.html"), True, True) 70*d62711e4SAndroid Build Coastguard Worker insert_stub(os.path.join(kotlin_ref_root, "classes.html"), False, True) 71*d62711e4SAndroid Build Coastguard Worker 72*d62711e4SAndroid Build Coastguard Worker# This method uses switcher2, which assumes the refdocs stay in their current 73*d62711e4SAndroid Build Coastguard Worker# assymetrical dirs (ref/android and ref/kotlin/android) 74*d62711e4SAndroid Build Coastguard Worker# And just puts the switcher in the existing docs 75*d62711e4SAndroid Build Coastguard Workerdef insert_stub(doc, java, both): 76*d62711e4SAndroid Build Coastguard Worker global stubs 77*d62711e4SAndroid Build Coastguard Worker global java_stubs, kotlin_stubs 78*d62711e4SAndroid Build Coastguard Worker global verbose, work, show_solo 79*d62711e4SAndroid Build Coastguard Worker global java_source_abs_path 80*d62711e4SAndroid Build Coastguard Worker global kotlin_source_abs_path 81*d62711e4SAndroid Build Coastguard Worker 82*d62711e4SAndroid Build Coastguard Worker stubs = stubs+1 83*d62711e4SAndroid Build Coastguard Worker 84*d62711e4SAndroid Build Coastguard Worker if verbose: 85*d62711e4SAndroid Build Coastguard Worker print("File: ", stubs, doc) 86*d62711e4SAndroid Build Coastguard Worker else: 87*d62711e4SAndroid Build Coastguard Worker fn = os.path.split(doc) 88*d62711e4SAndroid Build Coastguard Worker print("File: ", stubs, fn[1], end="\r") 89*d62711e4SAndroid Build Coastguard Worker 90*d62711e4SAndroid Build Coastguard Worker if (java): 91*d62711e4SAndroid Build Coastguard Worker java_stubs = java_stubs + 1 92*d62711e4SAndroid Build Coastguard Worker else: 93*d62711e4SAndroid Build Coastguard Worker kotlin_stubs = kotlin_stubs + 1 94*d62711e4SAndroid Build Coastguard Worker 95*d62711e4SAndroid Build Coastguard Worker if (work): 96*d62711e4SAndroid Build Coastguard Worker with open(doc, "r") as f: 97*d62711e4SAndroid Build Coastguard Worker file_content = f.read() 98*d62711e4SAndroid Build Coastguard Worker 99*d62711e4SAndroid Build Coastguard Worker if (java): 100*d62711e4SAndroid Build Coastguard Worker file_path = doc[len(java_ref_root) + 1 :] 101*d62711e4SAndroid Build Coastguard Worker if (both): 102*d62711e4SAndroid Build Coastguard Worker file_content = file_content.replace( 103*d62711e4SAndroid Build Coastguard Worker "</h1>", 104*d62711e4SAndroid Build Coastguard Worker "</h1>\n{% setvar page_path %}_page_path_{% endsetvar %}\n{% setvar" 105*d62711e4SAndroid Build Coastguard Worker " can_switch %}1{% endsetvar %}\n{% include" 106*d62711e4SAndroid Build Coastguard Worker ' "reference/_java_switcher2.md" %}', 107*d62711e4SAndroid Build Coastguard Worker ) 108*d62711e4SAndroid Build Coastguard Worker file_content = file_content.replace("_page_path_", file_path) 109*d62711e4SAndroid Build Coastguard Worker else: 110*d62711e4SAndroid Build Coastguard Worker file_content = file_content.replace( 111*d62711e4SAndroid Build Coastguard Worker "</h1>", '</h1>\n{% include "reference/_java_switcher2.md" %}' 112*d62711e4SAndroid Build Coastguard Worker ) 113*d62711e4SAndroid Build Coastguard Worker else: 114*d62711e4SAndroid Build Coastguard Worker file_path = doc[len(kotlin_ref_root) + 1 :] 115*d62711e4SAndroid Build Coastguard Worker if (both): 116*d62711e4SAndroid Build Coastguard Worker file_content = file_content.replace( 117*d62711e4SAndroid Build Coastguard Worker "</h1>", 118*d62711e4SAndroid Build Coastguard Worker "</h1>\n{% setvar page_path %}_page_path_{% endsetvar %}\n{% setvar" 119*d62711e4SAndroid Build Coastguard Worker " can_switch %}1{% endsetvar %}\n{% include" 120*d62711e4SAndroid Build Coastguard Worker ' "reference/_kotlin_switcher2.md" %}', 121*d62711e4SAndroid Build Coastguard Worker ) 122*d62711e4SAndroid Build Coastguard Worker file_content = file_content.replace("_page_path_", file_path) 123*d62711e4SAndroid Build Coastguard Worker else: 124*d62711e4SAndroid Build Coastguard Worker file_content = file_content.replace( 125*d62711e4SAndroid Build Coastguard Worker "</h1>", '</h1>\n{% include "reference/_kotlin_switcher2.md" %}' 126*d62711e4SAndroid Build Coastguard Worker ) 127*d62711e4SAndroid Build Coastguard Worker 128*d62711e4SAndroid Build Coastguard Worker with open(doc, "w") as f: 129*d62711e4SAndroid Build Coastguard Worker f.write(file_content) 130*d62711e4SAndroid Build Coastguard Worker os.chmod(doc, 0o644) 131*d62711e4SAndroid Build Coastguard Worker 132*d62711e4SAndroid Build Coastguard Worker 133*d62711e4SAndroid Build Coastguard Workerdef scan_files(stem): 134*d62711e4SAndroid Build Coastguard Worker global work, verbose, show_solo, max_stubs 135*d62711e4SAndroid Build Coastguard Worker global stubs 136*d62711e4SAndroid Build Coastguard Worker global java_stubs, kotlin_stubs 137*d62711e4SAndroid Build Coastguard Worker global java_source_abs_path 138*d62711e4SAndroid Build Coastguard Worker global kotlin_source_abs_path 139*d62711e4SAndroid Build Coastguard Worker 140*d62711e4SAndroid Build Coastguard Worker java_source_abs_path = os.path.join(java_ref_root, stem) 141*d62711e4SAndroid Build Coastguard Worker kotlin_source_abs_path = os.path.join(kotlin_ref_root, stem) 142*d62711e4SAndroid Build Coastguard Worker 143*d62711e4SAndroid Build Coastguard Worker # Pass 1 144*d62711e4SAndroid Build Coastguard Worker # Loop over java content, create stubs for java, 145*d62711e4SAndroid Build Coastguard Worker # and for corresponding Kotlin (when it exsits) 146*d62711e4SAndroid Build Coastguard Worker 147*d62711e4SAndroid Build Coastguard Worker # solo is java-only classes 148*d62711e4SAndroid Build Coastguard Worker # both is java+kotlin 149*d62711e4SAndroid Build Coastguard Worker stubs = 0 150*d62711e4SAndroid Build Coastguard Worker java_stubs = 0 151*d62711e4SAndroid Build Coastguard Worker kotlin_stubs = 0 152*d62711e4SAndroid Build Coastguard Worker solo = 0 153*d62711e4SAndroid Build Coastguard Worker both = 0 154*d62711e4SAndroid Build Coastguard Worker 155*d62711e4SAndroid Build Coastguard Worker print("*** PASS1 (Java) ***") 156*d62711e4SAndroid Build Coastguard Worker maxed_out = False 157*d62711e4SAndroid Build Coastguard Worker for root, dirs, files in os.walk(java_source_abs_path): 158*d62711e4SAndroid Build Coastguard Worker if maxed_out: 159*d62711e4SAndroid Build Coastguard Worker break; 160*d62711e4SAndroid Build Coastguard Worker for file_ in files: 161*d62711e4SAndroid Build Coastguard Worker ext = os.path.splitext(file_) 162*d62711e4SAndroid Build Coastguard Worker ext = ext[1] 163*d62711e4SAndroid Build Coastguard Worker if not ext: 164*d62711e4SAndroid Build Coastguard Worker # this catches package-lists with no extension 165*d62711e4SAndroid Build Coastguard Worker print("***", os.path.join(root, file_)) 166*d62711e4SAndroid Build Coastguard Worker elif ext != ".html": 167*d62711e4SAndroid Build Coastguard Worker # filter out png, yaml, etc 168*d62711e4SAndroid Build Coastguard Worker continue 169*d62711e4SAndroid Build Coastguard Worker else: 170*d62711e4SAndroid Build Coastguard Worker # we have java content 171*d62711e4SAndroid Build Coastguard Worker doc = os.path.join(root, file_) 172*d62711e4SAndroid Build Coastguard Worker 173*d62711e4SAndroid Build Coastguard Worker 174*d62711e4SAndroid Build Coastguard Worker 175*d62711e4SAndroid Build Coastguard Worker # look for matching kotlin file 176*d62711e4SAndroid Build Coastguard Worker kotlinsource = doc.replace(java_source_abs_path, kotlin_source_abs_path) 177*d62711e4SAndroid Build Coastguard Worker if os.path.isfile(kotlinsource): 178*d62711e4SAndroid Build Coastguard Worker # corresponding kotlin content exists 179*d62711e4SAndroid Build Coastguard Worker insert_stub(doc, True, True) 180*d62711e4SAndroid Build Coastguard Worker insert_stub(kotlinsource, False, True) 181*d62711e4SAndroid Build Coastguard Worker both = both+1 182*d62711e4SAndroid Build Coastguard Worker else: 183*d62711e4SAndroid Build Coastguard Worker # no kotlin content 184*d62711e4SAndroid Build Coastguard Worker if (show_solo): 185*d62711e4SAndroid Build Coastguard Worker print("solo: ", doc) 186*d62711e4SAndroid Build Coastguard Worker insert_stub(doc, True, False) 187*d62711e4SAndroid Build Coastguard Worker solo = solo+1 188*d62711e4SAndroid Build Coastguard Worker 189*d62711e4SAndroid Build Coastguard Worker if max_stubs>0 and stubs>=max_stubs: 190*d62711e4SAndroid Build Coastguard Worker print() 191*d62711e4SAndroid Build Coastguard Worker print("max java stubs: ", max_stubs) 192*d62711e4SAndroid Build Coastguard Worker maxed_out = True; 193*d62711e4SAndroid Build Coastguard Worker break 194*d62711e4SAndroid Build Coastguard Worker 195*d62711e4SAndroid Build Coastguard Worker print("Java+Kotlin:", both, "Only Java:", solo) 196*d62711e4SAndroid Build Coastguard Worker print() 197*d62711e4SAndroid Build Coastguard Worker 198*d62711e4SAndroid Build Coastguard Worker 199*d62711e4SAndroid Build Coastguard Worker # PASS 2 200*d62711e4SAndroid Build Coastguard Worker # Loop over kotlin content, create stubs for Kotlin-only APIs 201*d62711e4SAndroid Build Coastguard Worker print("*** PASS2 (Kotlin) ***") 202*d62711e4SAndroid Build Coastguard Worker solo = 0 203*d62711e4SAndroid Build Coastguard Worker both = 0 204*d62711e4SAndroid Build Coastguard Worker maxed_out = False 205*d62711e4SAndroid Build Coastguard Worker stubs = 0 206*d62711e4SAndroid Build Coastguard Worker for root, dirs, files in os.walk(kotlin_source_abs_path): 207*d62711e4SAndroid Build Coastguard Worker if maxed_out: 208*d62711e4SAndroid Build Coastguard Worker break; 209*d62711e4SAndroid Build Coastguard Worker for file_ in files: 210*d62711e4SAndroid Build Coastguard Worker ext = os.path.splitext (file_) 211*d62711e4SAndroid Build Coastguard Worker ext = ext[1] 212*d62711e4SAndroid Build Coastguard Worker if not ext: 213*d62711e4SAndroid Build Coastguard Worker # this catches package-lists with no extension 214*d62711e4SAndroid Build Coastguard Worker print("***", os.path.join(root, file_)) 215*d62711e4SAndroid Build Coastguard Worker elif ext != ".html": 216*d62711e4SAndroid Build Coastguard Worker # filter out png, yaml, etc 217*d62711e4SAndroid Build Coastguard Worker continue 218*d62711e4SAndroid Build Coastguard Worker else: 219*d62711e4SAndroid Build Coastguard Worker # we have kotlin content 220*d62711e4SAndroid Build Coastguard Worker doc = os.path.join(root, file_) 221*d62711e4SAndroid Build Coastguard Worker javadoc = doc.replace(kotlin_source_abs_path, java_source_abs_path) 222*d62711e4SAndroid Build Coastguard Worker file_name = os.path.splitext(file_)[0] 223*d62711e4SAndroid Build Coastguard Worker file_path = doc[len(kotlin_source_abs_path)+1:] 224*d62711e4SAndroid Build Coastguard Worker include_path = os.path.join("/reference/_kotlin", file_path) 225*d62711e4SAndroid Build Coastguard Worker 226*d62711e4SAndroid Build Coastguard Worker if os.path.isfile(javadoc): 227*d62711e4SAndroid Build Coastguard Worker # corresponding java content exists 228*d62711e4SAndroid Build Coastguard Worker # so we already created the kotlin stub file 229*d62711e4SAndroid Build Coastguard Worker # nothing to do 230*d62711e4SAndroid Build Coastguard Worker both = both+1 231*d62711e4SAndroid Build Coastguard Worker else: 232*d62711e4SAndroid Build Coastguard Worker # no java content 233*d62711e4SAndroid Build Coastguard Worker # create the kotlin stub file 234*d62711e4SAndroid Build Coastguard Worker if (show_solo): 235*d62711e4SAndroid Build Coastguard Worker print("solo: ", doc) 236*d62711e4SAndroid Build Coastguard Worker insert_stub(doc , False, False) 237*d62711e4SAndroid Build Coastguard Worker solo = solo+1 238*d62711e4SAndroid Build Coastguard Worker 239*d62711e4SAndroid Build Coastguard Worker if (max_stubs>0 and stubs>=max_stubs): 240*d62711e4SAndroid Build Coastguard Worker print() 241*d62711e4SAndroid Build Coastguard Worker print("max koltin stubs: ", max_stubs) 242*d62711e4SAndroid Build Coastguard Worker maxed_out = True; 243*d62711e4SAndroid Build Coastguard Worker break 244*d62711e4SAndroid Build Coastguard Worker 245*d62711e4SAndroid Build Coastguard Worker 246*d62711e4SAndroid Build Coastguard Worker print("Java+Kotlin:", both, "Only Kotlin:", solo) 247*d62711e4SAndroid Build Coastguard Worker print() 248*d62711e4SAndroid Build Coastguard Worker print("Java: ", java_stubs, " Kotlin: ", kotlin_stubs, "Total: ", java_stubs + kotlin_stubs) 249*d62711e4SAndroid Build Coastguard Worker 250*d62711e4SAndroid Build Coastguard Worker 251*d62711e4SAndroid Build Coastguard Workerdef main(argv): 252*d62711e4SAndroid Build Coastguard Worker 253*d62711e4SAndroid Build Coastguard Worker global work, verbose, show_solo, max_stubs 254*d62711e4SAndroid Build Coastguard Worker global java_source_abs_path 255*d62711e4SAndroid Build Coastguard Worker global kotlin_source_abs_path 256*d62711e4SAndroid Build Coastguard Worker stem = "" 257*d62711e4SAndroid Build Coastguard Worker 258*d62711e4SAndroid Build Coastguard Worker try: 259*d62711e4SAndroid Build Coastguard Worker opts, args = getopt.getopt(argv,"",["work","verbose","solo","max="]) 260*d62711e4SAndroid Build Coastguard Worker except getopt.GetoptError: 261*d62711e4SAndroid Build Coastguard Worker print('USAGE: switcher --work --verbose --solo --max=<max_stubs> platform|androidx|support|chrome') 262*d62711e4SAndroid Build Coastguard Worker sys.exit(2) 263*d62711e4SAndroid Build Coastguard Worker 264*d62711e4SAndroid Build Coastguard Worker for opt, arg in opts: 265*d62711e4SAndroid Build Coastguard Worker if opt == '--work': 266*d62711e4SAndroid Build Coastguard Worker work = True 267*d62711e4SAndroid Build Coastguard Worker elif opt == "--verbose": 268*d62711e4SAndroid Build Coastguard Worker print("verbose") 269*d62711e4SAndroid Build Coastguard Worker verbose = True 270*d62711e4SAndroid Build Coastguard Worker elif opt == "--solo": 271*d62711e4SAndroid Build Coastguard Worker print("verbose") 272*d62711e4SAndroid Build Coastguard Worker show_solo = True 273*d62711e4SAndroid Build Coastguard Worker elif opt == "--max": 274*d62711e4SAndroid Build Coastguard Worker max_stubs = int(arg) 275*d62711e4SAndroid Build Coastguard Worker print("max ", max_stubs) 276*d62711e4SAndroid Build Coastguard Worker 277*d62711e4SAndroid Build Coastguard Worker if len(args)>0: 278*d62711e4SAndroid Build Coastguard Worker source = args[0] 279*d62711e4SAndroid Build Coastguard Worker if source == "platform": 280*d62711e4SAndroid Build Coastguard Worker stem = "android" 281*d62711e4SAndroid Build Coastguard Worker print() 282*d62711e4SAndroid Build Coastguard Worker print("*** PLATFORM PAGES ***") 283*d62711e4SAndroid Build Coastguard Worker print("======================") 284*d62711e4SAndroid Build Coastguard Worker 285*d62711e4SAndroid Build Coastguard Worker # Insert the switchers at the top level first 286*d62711e4SAndroid Build Coastguard Worker insert_platform_summaries() 287*d62711e4SAndroid Build Coastguard Worker 288*d62711e4SAndroid Build Coastguard Worker elif source == "androidx": 289*d62711e4SAndroid Build Coastguard Worker stem = "androidx" 290*d62711e4SAndroid Build Coastguard Worker print() 291*d62711e4SAndroid Build Coastguard Worker print("*** ANDROIDX SUPPORT LIBRARY PAGES ***") 292*d62711e4SAndroid Build Coastguard Worker print("======================================") 293*d62711e4SAndroid Build Coastguard Worker 294*d62711e4SAndroid Build Coastguard Worker elif source == "support": 295*d62711e4SAndroid Build Coastguard Worker stem = "android/support/v4/media" 296*d62711e4SAndroid Build Coastguard Worker print() 297*d62711e4SAndroid Build Coastguard Worker print("*** ANDROIDX SUPPORT LIBRARY PAGES ***") 298*d62711e4SAndroid Build Coastguard Worker print("======================================") 299*d62711e4SAndroid Build Coastguard Worker 300*d62711e4SAndroid Build Coastguard Worker elif source == "chrome": 301*d62711e4SAndroid Build Coastguard Worker stem = "org/chromium/support_lib_boundary" 302*d62711e4SAndroid Build Coastguard Worker print() 303*d62711e4SAndroid Build Coastguard Worker print("*** ANDROIDX CHROMIUM PAGES ***") 304*d62711e4SAndroid Build Coastguard Worker print("===============================") 305*d62711e4SAndroid Build Coastguard Worker 306*d62711e4SAndroid Build Coastguard Worker if (len(stem)>0): 307*d62711e4SAndroid Build Coastguard Worker scan_files(stem) 308*d62711e4SAndroid Build Coastguard Worker print(" *** DONE ***") 309*d62711e4SAndroid Build Coastguard Worker else: 310*d62711e4SAndroid Build Coastguard Worker print('You must specify one of: platform|androidx|support|chrome') 311*d62711e4SAndroid Build Coastguard Worker 312*d62711e4SAndroid Build Coastguard Worker 313*d62711e4SAndroid Build Coastguard Worker 314*d62711e4SAndroid Build Coastguard Workerif __name__ == "__main__": 315*d62711e4SAndroid Build Coastguard Worker main(sys.argv[1:]) 316*d62711e4SAndroid Build Coastguard Worker 317