def common_options(f): """Decorator to add common options for all CLI commands""" f = click.option( '-p', '--projects', help='Set path to projects.cfg', type=click.Path(dir_okay=False, exists=True), callback=set_project_config_file_path, expose_value=False, is_eager=True)(f) return click_log.simple_verbosity_option(logger)(f)
def run_steps(name: str, steps: List[Step]): def command(config): _steps(steps, config) command.__name__ = name return cli.command()(click_log.simple_verbosity_option(logger)(capture( click.pass_obj(command))))
click.option('--skip-host-plugins', is_flag=True, help='Do not install host OS plugins provided by the package (CLI, etc). ' 'NOTE: In case when package host OS plugins are set as mandatory in ' 'package manifest this option will fail the installation.') ] PACKAGE_COMMON_OPERATION_OPTIONS = [ click.option('-f', '--force', is_flag=True, help='Force operation by ignoring package dependency tree and package manifest validation failures.'), click.option('-y', '--yes', is_flag=True, help='Automatically answer yes on prompts.'), click_log.simple_verbosity_option(log, help='Either CRITICAL, ERROR, WARNING, INFO or DEBUG. Default is INFO.'), ] def get_package_status(package: PackageEntry): """ Returns the installation status message for package. """ if package.built_in: return 'Built-In' elif package.installed: return 'Installed' else: return 'Not Installed' @click.group()
push_new_version, tag_new_version, update_changelog_file, ) logger = logging.getLogger("semantic_release") SECRET_NAMES = [ "PYPI_USERNAME", "PYPI_PASSWORD", "GH_TOKEN", "GL_TOKEN", ] COMMON_OPTIONS = [ click_log.simple_verbosity_option(logger), click.option( "--major", "force_level", flag_value="major", help="Force major version." ), click.option( "--minor", "force_level", flag_value="minor", help="Force minor version." ), click.option( "--patch", "force_level", flag_value="patch", help="Force patch version." ), click.option("--post", is_flag=True, help="Post changelog."), click.option("--retry", is_flag=True, help="Retry the same release, do not bump."), click.option( "--noop", is_flag=True, help="No-operations mode, finds the new version number without changing it.",
class NaturalOrderGroup(cloup.Group): def list_commands(self, ctx): return self.commands.keys() CONTEXT_SETTINGS = dict(help_option_names=["-h", "--help"]) @cloup.group(cls=NaturalOrderGroup, context_settings=CONTEXT_SETTINGS) def cli(): if not SUPPORTED_PLATFORMS.get(PLATFORM): return Manager.exit(1, f"{PLATFORM} is not supported yet") def validate_serials(ctx, param, value): if value is not None: serials = value if isinstance(value, (tuple, list)) else (value,) for serial in serials: if not SERIAL_RE.match(serial): raise click.BadParameter(f"{serial} is not a valid serial number") return value common_options = { "optional_serial": cloup.argument("serial", nargs=-1, required=False, callback=validate_serials), "optional_serials": cloup.argument("serials", nargs=-1, required=False, callback=validate_serials), "verbosity": click_log.simple_verbosity_option( logger, "--verbosity", help="Either CRITICAL, ERROR, WARNING, INFO or DEBUG", show_default=True ), }