def create_app_version()

in ebcli/operations/commonops.py [0:0]


def create_app_version(app_name, process=False, label=None, message=None, staged=False, build_config=None, source_bundle=None):
    cwd = os.getcwd()

    fileoperations.ProjectRoot.traverse()
    try:
        if heuristics.directory_is_empty():
            io.echo('NOTE: {}'.format(strings['appversion.none']))
            return None
    finally:
        os.chdir(cwd)

    source_control = SourceControl.get_source_control()
    if source_control.untracked_changes_exist():
        io.log_warning(strings['sc.unstagedchanges'])

    if label:
        version_label = label
    else:
        version_label = source_control.get_version_label()
        if staged:
            timestamp = datetime.now().strftime("%y%m%d_%H%M%S%f")
            version_label = version_label + '-stage-' + timestamp
    if message:
        description = message
    else:
        description = source_control.get_message()

    if len(description) > 200:
        description = description[:195] + '...'
    artifact = fileoperations.get_config_setting('deploy', 'artifact')
    if artifact:
        file_name, file_extension = os.path.splitext(artifact)
        file_name = version_label + file_extension
        file_path = artifact
        s3_key = None
        s3_bucket = None
    else:
        s3_bucket, s3_key = get_app_version_s3_location(app_name, version_label)

        file_name, file_path = None, None
        if s3_bucket is None and s3_key is None:
            if not source_bundle:
                file_name, file_path = _zip_up_project(
                    version_label, source_control, staged=staged)
            elif zipfile.is_zipfile(source_bundle):
                if not label:
                    label = f"{source_control.get_version_label()}.zip"
                file_name, file_path = label, source_bundle

    return handle_upload_target(
        app_name,
        s3_bucket,
        s3_key,
        file_name,
        file_path,
        version_label,
        description,
        process,
        build_config,
    )