12VERSION_STRING =
"1.0.0"
18logger = logging.getLogger(
"searx")
21 "PATH": os.environ[
"PATH"],
28 """Call :py:func:`subprocess.run` and return (striped) stdout. If returncode is
29 non-zero, raise a :py:func:`subprocess.CalledProcessError`.
31 if not isinstance(args, (list, tuple)):
32 args = shlex.split(args)
34 kwargs[
"env"] = kwargs.get(
"env", SUBPROCESS_RUN_ENV)
35 kwargs[
"encoding"] = kwargs.get(
"encoding",
"utf-8")
36 kwargs[
"stdout"] = subprocess.PIPE
37 kwargs[
"stderr"] = subprocess.PIPE
39 kwargs[
"check"] =
True
40 proc = subprocess.run(args, **kwargs)
41 return proc.stdout.strip()
46 if "GITHUB_REPOSITORY" in os.environ
and "GITHUB_REF_NAME" in os.environ:
47 git_url = f
"https://github.com/{os.environ['GITHUB_REPOSITORY']}"
48 git_branch = os.environ[
"GITHUB_REF_NAME"]
49 return git_url, git_branch
53 except subprocess.CalledProcessError:
54 ref =
subprocess_run(
"git rev-parse --abbrev-ref master@{upstream}")
55 origin, git_branch = ref.split(
"/", 1)
59 if git_url.startswith(
"git@"):
60 git_url = git_url.replace(
":",
"/", 2).replace(
"git@",
"https://", 1)
61 if git_url.endswith(
".git"):
62 git_url = git_url.replace(
".git",
"", 1)
64 return git_url, git_branch
68 git_commit_date_hash =
subprocess_run(
r"git show -s --date='format:%Y.%m.%d' --format='%cd+%h'")
71 git_commit_date_hash = git_commit_date_hash.replace(
'.0',
'.')
72 tag_version = git_version = git_commit_date_hash
73 docker_tag = git_commit_date_hash.replace(
"+",
"-")
77 subprocess_run(
"git diff --quiet -- . ':!searx/settings.yml' ':!utils/brand.env'")
78 except subprocess.CalledProcessError
as e:
80 git_version +=
"+dirty"
82 logger.warning(
'"%s" returns an unexpected return code %i', e.returncode, e.cmd)
84 return git_version, tag_version, docker_tag
88 version_string = VERSION_STRING
89 version_tag = VERSION_TAG
90 docker_tag = DOCKER_TAG
92 git_branch = GIT_BRANCH
96 except subprocess.CalledProcessError
as ex:
97 logger.error(
"Error while getting the version: %s", ex.stderr)
100 except subprocess.CalledProcessError
as ex:
101 logger.error(
"Error while getting the git URL & branch: %s", ex.stderr)
103 return version_string, version_tag, docker_tag, git_url, git_branch
107 vf = importlib.import_module(
'searx.version_frozen')
108 VERSION_STRING, VERSION_TAG, DOCKER_TAG, GIT_URL, GIT_BRANCH = (
116 VERSION_STRING, VERSION_TAG, DOCKER_TAG, GIT_URL, GIT_BRANCH =
get_information()
118logger.info(
"version: %s", VERSION_STRING)
120if __name__ ==
"__main__":
123 if len(sys.argv) >= 2
and sys.argv[1] ==
"freeze":
124 VERSION_STRING, VERSION_TAG, DOCKER_TAG, GIT_URL, GIT_BRANCH =
get_information()
127 python_code = f
"""# SPDX-License-Identifier: AGPL-3.0-or-later
128# pylint: disable=missing-module-docstring
129# this file is generated automatically by searx/version.py
131VERSION_STRING = "{VERSION_STRING}"
132VERSION_TAG = "{VERSION_TAG}"
133DOCKER_TAG = "{DOCKER_TAG}"
135GIT_BRANCH = "{GIT_BRANCH}"
137 path = os.path.join(os.path.dirname(__file__),
"version_frozen.py")
138 with open(path,
"w", encoding=
"utf8")
as f:
140 print(f
"{f.name} created")
144 os.utime(path, (commit_timestamp, commit_timestamp))
149VERSION_STRING="{VERSION_STRING}"
150VERSION_TAG="{VERSION_TAG}"
151DOCKER_TAG="{DOCKER_TAG}"
153GIT_BRANCH="{GIT_BRANCH}"
subprocess_run(args, **kwargs)