| # Copyright 2022 The Chromium Authors |
| # Use of this source code is governed by a BSD-style license that can be |
| # found in the LICENSE file. |
| """Implements commands for managing Fuchsia repos via the ffx tool.""" |
| |
| import argparse |
| |
| from typing import Iterable |
| |
| from common import run_ffx_command |
| |
| |
| def publish_packages(packages: Iterable[str], |
| repo: str, |
| new_repo: bool = False) -> None: |
| """Publish packages to a repo directory, initializing it if necessary.""" |
| if new_repo: |
| run_ffx_command(cmd=['repository', 'create', repo]) |
| |
| args = ['repository', 'publish'] |
| for package in packages: |
| args += ['--package-archive', package] |
| args += [repo] |
| run_ffx_command(cmd=args) |
| |
| |
| def register_package_args(parser: argparse.ArgumentParser, |
| allow_temp_repo: bool = False) -> None: |
| """Register common arguments for package publishing.""" |
| package_args = parser.add_argument_group( |
| 'package', 'Arguments for package publishing.') |
| package_args.add_argument('--packages', |
| action='append', |
| help='Paths of the package archives to install') |
| package_args.add_argument('--repo', |
| help='Directory packages will be published to.') |
| package_args.add_argument('--purge-repo', |
| action='store_true', |
| help='If clear the content in the repo.') |
| if allow_temp_repo: |
| package_args.add_argument( |
| '--no-repo-init', |
| action='store_true', |
| default=False, |
| help='Do not initialize the package repository.') |