aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorTulir Asokan <tulir@maunium.net>2020-10-30 23:32:35 +0200
committerTulir Asokan <tulir@maunium.net>2020-10-30 23:32:35 +0200
commitd3adedf3dfaede63d5b03b263c2cfaad291c4ffe (patch)
treeb42b6b2c7aaf50025a3ab549a620e12971e1a773
parent78fdb6f1755aacd32cd9e5e664610276e4451272 (diff)
Add fancy versioning stuff
-rw-r--r--setup.py13
-rw-r--r--sticker/__init__.py2
-rw-r--r--sticker/get_version.py50
-rw-r--r--sticker/version.py1
4 files changed, 65 insertions, 1 deletions
diff --git a/setup.py b/setup.py
index 4458999..524eaa7 100644
--- a/setup.py
+++ b/setup.py
@@ -1,5 +1,7 @@
import setuptools
+from sticker.get_version import git_tag, git_revision, version, linkified_version
+
with open("requirements.txt") as reqs:
install_requires = reqs.read().splitlines()
@@ -8,9 +10,18 @@ try:
except IOError:
long_desc = "Failed to read README.md"
+with open("sticker/version.py", "w") as version_file:
+ version_file.write(f"""# Generated in setup.py
+
+git_tag = {git_tag!r}
+git_revision = {git_revision!r}
+version = {version!r}
+linkified_version = {linkified_version!r}
+""")
+
setuptools.setup(
name="maunium-stickerpicker",
- version="0.1.0",
+ version=version,
url="https://github.com/maunium/stickerpicker",
author="Tulir Asokan",
diff --git a/sticker/__init__.py b/sticker/__init__.py
index e69de29..86e4dc2 100644
--- a/sticker/__init__.py
+++ b/sticker/__init__.py
@@ -0,0 +1,2 @@
+__version__ = "0.1.0+dev"
+__author__ = "Tulir Asokan <tulir@maunium.net>"
diff --git a/sticker/get_version.py b/sticker/get_version.py
new file mode 100644
index 0000000..3149eb0
--- /dev/null
+++ b/sticker/get_version.py
@@ -0,0 +1,50 @@
+import subprocess
+import shutil
+import os
+
+from . import __version__
+
+cmd_env = {
+ "PATH": os.environ["PATH"],
+ "HOME": os.environ["HOME"],
+ "LANG": "C",
+ "LC_ALL": "C",
+}
+
+
+def run(cmd):
+ return subprocess.check_output(cmd, stderr=subprocess.DEVNULL, env=cmd_env)
+
+
+if (os.path.exists("../.git") or os.path.exists(".git")) and shutil.which("git"):
+ try:
+ git_revision = run(["git", "rev-parse", "HEAD"]).strip().decode("ascii")
+ git_revision_url = f"https://github.com/maunium/stickerpicker/commit/{git_revision}"
+ git_revision = git_revision[:8]
+ except (subprocess.SubprocessError, OSError):
+ git_revision = "unknown"
+ git_revision_url = None
+
+ try:
+ git_tag = run(["git", "describe", "--exact-match", "--tags"]).strip().decode("ascii")
+ except (subprocess.SubprocessError, OSError):
+ git_tag = None
+else:
+ git_revision = "unknown"
+ git_revision_url = None
+ git_tag = None
+
+git_tag_url = (f"https://github.com/maunium/stickerpicker/releases/tag/{git_tag}"
+ if git_tag else None)
+
+if git_tag and __version__ == git_tag[1:].replace("-", ""):
+ version = __version__
+ linkified_version = f"[{version}]({git_tag_url})"
+else:
+ if not __version__.endswith("+dev"):
+ __version__ += "+dev"
+ version = f"{__version__}.{git_revision}"
+ if git_revision_url:
+ linkified_version = f"{__version__}.[{git_revision}]({git_revision_url})"
+ else:
+ linkified_version = version
diff --git a/sticker/version.py b/sticker/version.py
new file mode 100644
index 0000000..47f7fff
--- /dev/null
+++ b/sticker/version.py
@@ -0,0 +1 @@
+from .get_version import git_tag, git_revision, version, linkified_version
send patches to the email below
yukais@pinapelz.com
include the subject [PATCH repo_name]
pinapelz.com
homepage