1cb93a386Sopenharmony_ci#!/usr/bin/env python
2cb93a386Sopenharmony_ci
3cb93a386Sopenharmony_ci# Copyright 2019 Google LLC. All rights reserved.
4cb93a386Sopenharmony_ci# Use of this source code is governed by a BSD-style license that can be
5cb93a386Sopenharmony_ci# found in the LICENSE file.
6cb93a386Sopenharmony_ci
7cb93a386Sopenharmony_ci"""
8cb93a386Sopenharmony_ci Builds a Fuchsia FAR archive.
9cb93a386Sopenharmony_ci"""
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_ciimport argparse
12cb93a386Sopenharmony_ciimport os
13cb93a386Sopenharmony_ciimport subprocess
14cb93a386Sopenharmony_ciimport sys
15cb93a386Sopenharmony_ci
16cb93a386Sopenharmony_cidef main():
17cb93a386Sopenharmony_ci  parser = argparse.ArgumentParser()
18cb93a386Sopenharmony_ci
19cb93a386Sopenharmony_ci  parser.add_argument('--pm-bin', dest='pm_bin', action='store', required=True)
20cb93a386Sopenharmony_ci  parser.add_argument(
21cb93a386Sopenharmony_ci      '--pkg-dir', dest='pkg_dir', action='store', required=True)
22cb93a386Sopenharmony_ci  parser.add_argument(
23cb93a386Sopenharmony_ci      '--pkg-name', dest='pkg_name', action='store', required=True)
24cb93a386Sopenharmony_ci  parser.add_argument(
25cb93a386Sopenharmony_ci      '--pkg-version', dest='pkg_version', action='store', required=True)
26cb93a386Sopenharmony_ci  parser.add_argument(
27cb93a386Sopenharmony_ci      '--pkg-manifest', dest='pkg_manifest', action='store', required=True)
28cb93a386Sopenharmony_ci
29cb93a386Sopenharmony_ci  args = parser.parse_args()
30cb93a386Sopenharmony_ci
31cb93a386Sopenharmony_ci  assert os.path.exists(args.pm_bin)
32cb93a386Sopenharmony_ci  assert os.path.exists(args.pkg_dir)
33cb93a386Sopenharmony_ci
34cb93a386Sopenharmony_ci  pkg_dir = args.pkg_dir
35cb93a386Sopenharmony_ci  pkg_name = args.pkg_name
36cb93a386Sopenharmony_ci  pkg_manifest = args.pkg_manifest
37cb93a386Sopenharmony_ci  pkg_version = args.pkg_version
38cb93a386Sopenharmony_ci
39cb93a386Sopenharmony_ci  pm_command_base = [
40cb93a386Sopenharmony_ci      args.pm_bin,
41cb93a386Sopenharmony_ci      '-o',
42cb93a386Sopenharmony_ci      pkg_dir,
43cb93a386Sopenharmony_ci  ]
44cb93a386Sopenharmony_ci
45cb93a386Sopenharmony_ci  # Create the package ID file.
46cb93a386Sopenharmony_ci  subprocess.check_call(pm_command_base + ['-n'] + [pkg_name] + ['init'])
47cb93a386Sopenharmony_ci
48cb93a386Sopenharmony_ci  # Build the package.
49cb93a386Sopenharmony_ci  subprocess.check_call(pm_command_base + ['-m'] + [pkg_manifest] + ['build'])
50cb93a386Sopenharmony_ci
51cb93a386Sopenharmony_ci  # Archive the package.
52cb93a386Sopenharmony_ci  subprocess.check_call(pm_command_base + ['-m'] + [pkg_manifest] + ['-version'] + [pkg_version] + ['archive'])
53cb93a386Sopenharmony_ci
54cb93a386Sopenharmony_ci  return 0
55cb93a386Sopenharmony_ci
56cb93a386Sopenharmony_ci
57cb93a386Sopenharmony_ciif __name__ == '__main__':
58cb93a386Sopenharmony_ci  sys.exit(main())
59