xref: /aosp_15_r20/build/make/tools/fileslist_util.py (revision 9e94795a3d4ef5c1d47486f9a02bb378756cea8a)
1*9e94795aSAndroid Build Coastguard Worker#!/usr/bin/env python3
2*9e94795aSAndroid Build Coastguard Worker#
3*9e94795aSAndroid Build Coastguard Worker# Copyright (C) 2016 The Android Open Source Project
4*9e94795aSAndroid Build Coastguard Worker#
5*9e94795aSAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the 'License');
6*9e94795aSAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
7*9e94795aSAndroid Build Coastguard Worker# You may obtain a copy of the License at
8*9e94795aSAndroid Build Coastguard Worker#
9*9e94795aSAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
10*9e94795aSAndroid Build Coastguard Worker#
11*9e94795aSAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
12*9e94795aSAndroid Build Coastguard Worker# distributed under the License is distributed on an 'AS IS' BASIS,
13*9e94795aSAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*9e94795aSAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
15*9e94795aSAndroid Build Coastguard Worker# limitations under the License.
16*9e94795aSAndroid Build Coastguard Worker#
17*9e94795aSAndroid Build Coastguard Worker
18*9e94795aSAndroid Build Coastguard Workerimport argparse
19*9e94795aSAndroid Build Coastguard Workerimport json
20*9e94795aSAndroid Build Coastguard Workerimport sys
21*9e94795aSAndroid Build Coastguard Worker
22*9e94795aSAndroid Build Coastguard Workerdef PrintFileNames(path):
23*9e94795aSAndroid Build Coastguard Worker  with open(path) as jf:
24*9e94795aSAndroid Build Coastguard Worker    data = json.load(jf)
25*9e94795aSAndroid Build Coastguard Worker  for line in data:
26*9e94795aSAndroid Build Coastguard Worker    print(line["Name"])
27*9e94795aSAndroid Build Coastguard Worker
28*9e94795aSAndroid Build Coastguard Workerdef PrintCanonicalList(path):
29*9e94795aSAndroid Build Coastguard Worker  with open(path) as jf:
30*9e94795aSAndroid Build Coastguard Worker    data = json.load(jf)
31*9e94795aSAndroid Build Coastguard Worker  for line in data:
32*9e94795aSAndroid Build Coastguard Worker    print(f"{line['Size']:12d}  {line['Name']}")
33*9e94795aSAndroid Build Coastguard Worker
34*9e94795aSAndroid Build Coastguard Workerdef main():
35*9e94795aSAndroid Build Coastguard Worker  parser = argparse.ArgumentParser()
36*9e94795aSAndroid Build Coastguard Worker  parser.add_argument("-n", action="store_true",
37*9e94795aSAndroid Build Coastguard Worker                      help="produces list of files only")
38*9e94795aSAndroid Build Coastguard Worker  parser.add_argument("-c", action="store_true",
39*9e94795aSAndroid Build Coastguard Worker                      help="produces classic installed-files.txt")
40*9e94795aSAndroid Build Coastguard Worker  parser.add_argument("json_files_list")
41*9e94795aSAndroid Build Coastguard Worker  args = parser.parse_args()
42*9e94795aSAndroid Build Coastguard Worker
43*9e94795aSAndroid Build Coastguard Worker  if args.n and args.c:
44*9e94795aSAndroid Build Coastguard Worker    sys.exit("Cannot specify both -n and -c")
45*9e94795aSAndroid Build Coastguard Worker  elif args.n:
46*9e94795aSAndroid Build Coastguard Worker    PrintFileNames(args.json_files_list)
47*9e94795aSAndroid Build Coastguard Worker  elif args.c:
48*9e94795aSAndroid Build Coastguard Worker    PrintCanonicalList(args.json_files_list)
49*9e94795aSAndroid Build Coastguard Worker  else:
50*9e94795aSAndroid Build Coastguard Worker    sys.exit("No conversion option specified")
51*9e94795aSAndroid Build Coastguard Worker
52*9e94795aSAndroid Build Coastguard Workerif __name__ == '__main__':
53*9e94795aSAndroid Build Coastguard Worker  main()
54