55 lines
1.7 KiB
Python
55 lines
1.7 KiB
Python
|
|
import os
|
||
|
|
import subprocess
|
||
|
|
import sys
|
||
|
|
|
||
|
|
VERSION = "12.2.1"
|
||
|
|
MITMPROXY = "mitmproxy " + VERSION
|
||
|
|
|
||
|
|
# Serialization format version. This is displayed nowhere, it just needs to be incremented by one
|
||
|
|
# for each change in the file format.
|
||
|
|
FLOW_FORMAT_VERSION = 21
|
||
|
|
|
||
|
|
|
||
|
|
def get_dev_version() -> str:
|
||
|
|
"""
|
||
|
|
Return a detailed version string, sourced either from VERSION or obtained dynamically using git.
|
||
|
|
"""
|
||
|
|
|
||
|
|
mitmproxy_version = VERSION
|
||
|
|
|
||
|
|
here = os.path.abspath(os.path.join(os.path.dirname(__file__), ".."))
|
||
|
|
try: # pragma: no cover
|
||
|
|
# Check that we're in the mitmproxy repository: https://github.com/mitmproxy/mitmproxy/issues/3987
|
||
|
|
# cb0e3287090786fad566feb67ac07b8ef361b2c3 is the first mitmproxy commit.
|
||
|
|
subprocess.run(
|
||
|
|
["git", "cat-file", "-e", "cb0e3287090786fad566feb67ac07b8ef361b2c3"],
|
||
|
|
stdout=subprocess.DEVNULL,
|
||
|
|
stderr=subprocess.DEVNULL,
|
||
|
|
cwd=here,
|
||
|
|
check=True,
|
||
|
|
)
|
||
|
|
git_describe = subprocess.check_output(
|
||
|
|
["git", "describe", "--tags", "--long"],
|
||
|
|
stderr=subprocess.STDOUT,
|
||
|
|
cwd=here,
|
||
|
|
)
|
||
|
|
last_tag, tag_dist_str, commit = git_describe.decode().strip().rsplit("-", 2)
|
||
|
|
commit = commit.lstrip("g")[:7]
|
||
|
|
tag_dist = int(tag_dist_str)
|
||
|
|
except Exception:
|
||
|
|
pass
|
||
|
|
else:
|
||
|
|
# Add commit info for non-tagged releases
|
||
|
|
if tag_dist > 0:
|
||
|
|
mitmproxy_version += f" (+{tag_dist}, commit {commit})"
|
||
|
|
|
||
|
|
# PyInstaller build indicator, if using precompiled binary
|
||
|
|
if getattr(sys, "frozen", False):
|
||
|
|
mitmproxy_version += " binary"
|
||
|
|
|
||
|
|
return mitmproxy_version
|
||
|
|
|
||
|
|
|
||
|
|
if __name__ == "__main__": # pragma: no cover
|
||
|
|
print(VERSION)
|