-
Notifications
You must be signed in to change notification settings - Fork 0
/
setup.py
85 lines (73 loc) · 2.87 KB
/
setup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
"""Install the runnow library."""
import os
from pathlib import Path
from setuptools import setup
DETECTED_VERSION = None
VERSION_FILEPATH = "VERSION"
POSSIBLE_BRANCH_ENV_VARS = ["BRANCH_NAME", "GITHUB_REF", "BITBUCKET_BRANCH"]
POSSIBLE_RELEASE_BRANCH_NAMES = ["master", "main"]
def _get_build_number():
return os.environ.get("BUILD_NUMBER", os.environ.get("GITHUB_RUN_NUMBER", None))
def _is_prerelease_branch():
for branch_env_var in POSSIBLE_BRANCH_ENV_VARS:
for release_branch in POSSIBLE_RELEASE_BRANCH_NAMES:
if os.environ.get(branch_env_var, "NA").split("/")[-1] == release_branch:
print(
"Running setup.py as 'release' build."
f"Found release branch indicator: {branch_env_var}={release_branch}"
)
return False
print(
"Running setup.py as 'prerelease' build. "
"Did not fine branch indicator in any of: "
", ".join(POSSIBLE_BRANCH_ENV_VARS)
)
return True
if not os.path.exists(VERSION_FILEPATH):
raise FileExistsError(VERSION_FILEPATH)
DETECTED_VERSION = Path(VERSION_FILEPATH).read_text()
if len(DETECTED_VERSION.split(".")) <= 3:
# Three part version detected.
# Appending build number and `.dev0` suffix if prerelease
build_num = _get_build_number()
if build_num:
DETECTED_VERSION = f"{DETECTED_VERSION}.{build_num}"
if _is_prerelease_branch():
# Append `.dev0` prerelease suffix
DETECTED_VERSION = DETECTED_VERSION.replace(".dev0", "")
DETECTED_VERSION = f"{DETECTED_VERSION}.dev0"
DETECTED_VERSION = DETECTED_VERSION.lstrip("v")
print(f"Detected version: {DETECTED_VERSION}")
Path(VERSION_FILEPATH).write_text(f"v{DETECTED_VERSION}")
setup(
name="runnow",
packages=["runnow"],
version=DETECTED_VERSION,
license="MIT",
description="Runnow, an easy-to-use command runner that does all the things.",
author="Aaron (AJ) Steers",
author_email="[email protected]",
url="https://www.github.com/aaronsteers/runnow",
download_url="https://www.github.com/aaronsteers/runnow/archive",
keywords=["DATAOPS", "EXECUTION", "AUTOMATION"],
package_data={"": [VERSION_FILEPATH]},
entry_points={
"console_scripts": [
# Register CLI commands:
"runnow = runnow.runnow:main",
]
},
include_package_data=True,
install_requires=["logless",],
extras_require={},
classifiers=[
"Development Status :: 4 - Beta", # "4 - Beta" or "5 - Production/Stable"
"Intended Audience :: Developers",
"Topic :: Software Development :: Build Tools",
"License :: OSI Approved :: MIT License",
"Programming Language :: Python :: 3.7",
"Programming Language :: Python :: 3.8",
],
)
# Revert `.dev0` suffix
# Path(VERSION_FILEPATH).write_text(f"v{DETECTED_VERSION.replace('.dev0', '')}")