xref: /aosp_15_r20/external/perfetto/infra/perfetto.dev/mime_util/file (revision 6dbdd20afdafa5e3ca9b8809fa73465d530080dc)
1*6dbdd20aSAndroid Build Coastguard Worker#!/usr/bin/env python3
2*6dbdd20aSAndroid Build Coastguard Worker
3*6dbdd20aSAndroid Build Coastguard Workerimport sys
4*6dbdd20aSAndroid Build Coastguard Workerimport os
5*6dbdd20aSAndroid Build Coastguard Worker
6*6dbdd20aSAndroid Build Coastguard Worker
7*6dbdd20aSAndroid Build Coastguard Workerdef main():
8*6dbdd20aSAndroid Build Coastguard Worker  # Typically the target file argument is the last arg. gsutil invokes:
9*6dbdd20aSAndroid Build Coastguard Worker  # `file -b --mime /path/to/file`. Rathter than depending on it, just pick
10*6dbdd20aSAndroid Build Coastguard Worker  # the right-most argument which points to a valid file.
11*6dbdd20aSAndroid Build Coastguard Worker  fname = None
12*6dbdd20aSAndroid Build Coastguard Worker  for arg in reversed(sys.argv[1:]):
13*6dbdd20aSAndroid Build Coastguard Worker    if os.path.exists(arg):
14*6dbdd20aSAndroid Build Coastguard Worker      fname = arg
15*6dbdd20aSAndroid Build Coastguard Worker      break
16*6dbdd20aSAndroid Build Coastguard Worker  if fname is None:
17*6dbdd20aSAndroid Build Coastguard Worker    raise 'File not found in ' + ' '.join(sys.argv)
18*6dbdd20aSAndroid Build Coastguard Worker
19*6dbdd20aSAndroid Build Coastguard Worker  ext = os.path.splitext(fname)[1].lower()
20*6dbdd20aSAndroid Build Coastguard Worker  ext_map = {
21*6dbdd20aSAndroid Build Coastguard Worker      '.html': 'text/html',
22*6dbdd20aSAndroid Build Coastguard Worker      '.css': 'text/css',
23*6dbdd20aSAndroid Build Coastguard Worker      '.js': 'text/javascript',
24*6dbdd20aSAndroid Build Coastguard Worker      '.jpg': 'image/jpeg',
25*6dbdd20aSAndroid Build Coastguard Worker      '.png': 'image/png',
26*6dbdd20aSAndroid Build Coastguard Worker      '.svg': 'image/svg+xml',
27*6dbdd20aSAndroid Build Coastguard Worker  }
28*6dbdd20aSAndroid Build Coastguard Worker  print(ext_map.get(ext, 'text/html'))
29*6dbdd20aSAndroid Build Coastguard Worker  return 0
30*6dbdd20aSAndroid Build Coastguard Worker
31*6dbdd20aSAndroid Build Coastguard Worker
32*6dbdd20aSAndroid Build Coastguard Workerif __name__ == '__main__':
33*6dbdd20aSAndroid Build Coastguard Worker  sys.exit(main())
34