chromium/tools/resources/filter_resource_allowlist.py

#!/usr/bin/env python
# Copyright 2017 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.

"""filter_resource_allowlist.py [-h] [--input INPUT] [--filter FILTER]
[--output OUTPUT]

INPUT specifies a resource allowlist file containing resource IDs that should
be allowed, where each line of INPUT contains a single resource ID.

FILTER specifies a resource denylist file containing resource IDs that should
not be allowed, where each line of FILTER contains a single resource ID.

Filters a resource allowlist by removing resource IDs that are contained in a
another resource allowlist.

This script is used to generate Monochrome's locale paks.
"""

import argparse
import sys


def main():
  parser = argparse.ArgumentParser(usage=__doc__)
  parser.add_argument(
      '--input', type=argparse.FileType('r'), required=True,
      help='A resource allowlist where each line contains one resource ID. '
           'These IDs, excluding the ones in FILTER, are to be included.')
  parser.add_argument(
      '--filter', type=argparse.FileType('r'), required=True,
      help='A resource allowlist where each line contains one resource ID. '
           'These IDs are to be excluded.')
  parser.add_argument(
      '--output', type=argparse.FileType('w'), default=sys.stdout,
      help='The resource list path to write (default stdout)')

  args = parser.parse_args()

  input_resources = list(int(resource_id) for resource_id in args.input)
  filter_resources = set(int(resource_id) for resource_id in args.filter)
  output_resources = [resource_id for resource_id in input_resources
                      if resource_id not in filter_resources]

  for resource_id in sorted(output_resources):
    args.output.write('%d\n' % resource_id)

if __name__ == '__main__':
  main()