azure-devops/azext_devops/dev/artifacts/universal.py (54 lines of code) (raw):

# -------------------------------------------------------------------------------------------- # Copyright (c) Microsoft Corporation. All rights reserved. # Licensed under the MIT License. See License.txt in the project root for license information. # -------------------------------------------------------------------------------------------- import colorama from knack.log import get_logger from knack.util import CLIError from azext_devops.dev.common.services import resolve_instance, resolve_instance_and_project from azext_devops.dev.common.artifacttool import ArtifactToolInvoker from azext_devops.dev.common.artifacttool_updater import ArtifactToolUpdater from azext_devops.dev.common.external_tool import ProgressReportingExternalToolInvoker logger = get_logger(__name__) def publish_package(feed, name, version, path, description=None, scope='organization', organization=None, project=None, detect=None): """Publish a package to a feed. :param scope: Scope of the feed: 'project' if the feed was created in a project, and 'organization' otherwise. :type scope: str :param feed: Name or ID of the feed. :type feed: str :param name: Name of the package, e.g. 'foo-package'. :type name: str :param version: Version of the package, e.g. '1.0.0'. :type version: str :param description: Description of the package. :type description: str :param path: Directory containing the package contents. :type path: str """ colorama.init() # Needed for humanfriendly spinner to display correctly if scope == 'project': organization, project = resolve_instance_and_project( detect=detect, organization=organization, project=project) else: if project is not None: raise CLIError('--scope \'project\' is required when specifying a value in --project') organization = resolve_instance( detect=detect, organization=organization) artifact_tool = ArtifactToolInvoker(ProgressReportingExternalToolInvoker(), ArtifactToolUpdater()) return artifact_tool.publish_universal(organization, project, feed, name, version, description, path) def download_package(feed, name, version, path, file_filter=None, scope='organization', organization=None, project=None, detect=None): """Download a package. :param scope: Scope of the feed: 'project' if the feed was created in a project, and 'organization' otherwise. :type scope: str :param feed: Name or ID of the feed. :type feed: str :param name: Name of the package, e.g. 'foo-package'. :type name: str :param version: Version of the package, e.g. 1.0.0. :type version: str :param path: Directory to place the package contents. :type path: str :param file_filter: Wildcard filter for file download. :type file_filter: str """ colorama.init() # Needed for humanfriendly spinner to display correctly if scope == 'project': organization, project = resolve_instance_and_project( detect=detect, organization=organization, project=project) else: if project is not None: raise CLIError('--scope \'project\' is required when specifying a value in --project') organization = resolve_instance( detect=detect, organization=organization) artifact_tool = ArtifactToolInvoker(ProgressReportingExternalToolInvoker(), ArtifactToolUpdater()) return artifact_tool.download_universal(organization, project, feed, name, version, path, file_filter)