예제 #1
0
def _detect_stage_version(stage_name):
    """
  Stage version is defined as:
    - `v1` for bash script stage definitions
    - `v2+` for python stage definitions

  Starts by checking for latest version.

  Returns:
      (version, filepath)
  """
    stage_python_filepath = shared.get_stage_file(stage_name)
    if os.path.exists(stage_python_filepath):
        stage = shared.get_stage_object(stage_name)
        stage_version = getattr(stage, "spec_version", STAGE_VERSION_2_0)
        if stage_version not in SUPPORTED_STAGE_VERSIONS:
            raise ValueError("Unsupported spec version: '%s'. "
                             "Supported versions are %s" %
                             (stage_version, SUPPORTED_STAGE_VERSIONS))
        return stage_version, stage_python_filepath

    stage_bash_filepath = os.path.join(constants.PROJECT_DIR,
                                       "scripts/variables/stages",
                                       "%s.sh" % stage_name)
    if os.path.exists(stage_bash_filepath):
        return STAGE_VERSION_1_0, stage_bash_filepath

    raise ValueError("No stage file found for name: '%s'" % stage_name)
예제 #2
0
def fetch_stage_or_default(stage_name=None, debug=False):
  if not stage_name:
    stage_name = shared.get_default_stage_name(debug=debug)

  if not shared.check_stage_file(stage_name):
    click.echo(click.style("Stage file '%s' not found." % stage_name, fg='red', bold=True))
    return None

  stage = shared.get_stage_object(stage_name)
  return stage_name, stage