def execute()

in package.py [0:0]


def execute() -> None:
    expected_cwd = os.path.abspath(os.path.dirname(__file__))
    os.chdir(expected_cwd)

    if not os.path.exists("libs"):
        os.makedirs("libs")

    argument_parser = argparse.ArgumentParser(
        "Builds CycleCloud HPC Pack project with all dependencies.\n"
        + "If you don't specify local copies of scalelib or cyclecloud-api they will be downloaded from github."
    )
    argument_parser.add_argument("--scalelib", default=None)
    argument_parser.add_argument("--cyclecloud-api", default=None)
    args = argument_parser.parse_args()

    cycle_libs = get_cycle_libs(args)

    parser = configparser.ConfigParser()
    ini_path = os.path.abspath("project.ini")

    with open(ini_path) as fr:
        parser.read_file(fr)

    version = parser.get("project", "version")
    if not version:
        raise RuntimeError("Missing [project] -> version in {}".format(ini_path))

    if not os.path.exists("dist"):
        os.makedirs("dist")

    zf = zipfile.ZipFile(
        "dist/cyclecloud-hpcpack-pkg-{}.zip".format(version), "w", zipfile.ZIP_DEFLATED
    )

    build_dir = tempfile.mkdtemp("cyclecloud-hpcpack")

    def _add(name: str, path: Optional[str] = None) -> None:
        path = path or name
        print(f"Adding : {name} from {path}")
        zf.write(path, name)

    packages = []
    for dep in cycle_libs:
        dep_path = os.path.abspath(os.path.join("libs", dep))
        #_add(os.path.join("packages", dep), dep_path)
        packages.append(dep_path)

    check_call(['pip', 'download', '--only-binary=:all:', '--platform', 'any'] + packages, cwd=build_dir)

    print("Using build dir", build_dir)
    for fil in os.listdir(build_dir):
        if fil.startswith("certifi-2019"):
            print("WARNING: Ignoring duplicate certifi {}".format(fil))
            continue
        path = os.path.join(build_dir, fil)
        _add("packages/" + fil, path)

    _add("install.ps1")
    _add("logging.conf", "hpcpack-autoscaler/logging.conf")