chromium/chrome/updater/enterprise/win/google/build_group_policy_template.py

#!/usr/bin/env python3
# Copyright 2024 The Chromium Authors
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
"""Builds Group Policy ADMX/ADML template files.

  Args:
    updater_admx_file: path to the output ADMX file.
    updater_adml_file: path to the output ADML file.

For example:
```
python3 chrome/updater/enterprise/win/google/build_group_policy_template.py
  --updater_admx_file UpdaterAdmx/updater.admx
  --updater_adml_file UpdaterAdmx/en-US/updater.adml
```

"""

import argparse
import generate_group_policy_template_admx
import os
import os.path
import public_apps


def BuildGroupPolicyTemplateAdmx(target_admx, target_adml, apps):
    for filename in [target_admx, target_adml]:
        dirname = os.path.dirname(filename)
        if not os.path.exists(dirname):
            os.makedirs(dirname)
    generate_group_policy_template_admx.WriteGroupPolicyTemplateAdmx(
        target_admx, apps)
    generate_group_policy_template_admx.WriteGroupPolicyTemplateAdml(
        target_adml, apps)


def main():
    parser = argparse.ArgumentParser(
        description=__doc__,
        formatter_class=argparse.RawDescriptionHelpFormatter)
    parser.add_argument('--updater_admx_file',
                        required=True,
                        help='path to the output updater admx file')
    parser.add_argument('--updater_adml_file',
                        required=True,
                        help='path to the output updater adml file')
    args = parser.parse_args()

    # `public_apps.EXTERNAL_APPS` contains a list of tuples containing
    # information about each app. See `generate_group_policy_template_admx` for
    # details.
    BuildGroupPolicyTemplateAdmx(args.updater_admx_file,
                                 args.updater_adml_file,
                                 public_apps.EXTERNAL_APPS)


if __name__ == '__main__':
    main()