xref: /aosp_15_r20/tools/doc_generation/switcher4.py (revision d62711e4cc089316f3222ca133eddbbd1a97649b)
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