Get version from git with setuptools_scm

Signed-off-by: Alfred Wingate <parona@protonmail.com>
This commit is contained in:
Alfred Wingate 2023-11-14 21:25:38 +02:00
parent cc2d715b6d
commit 50a23b71dd
No known key found for this signature in database
GPG Key ID: A12750536B5E7010
5 changed files with 6 additions and 64 deletions

1
.gitignore vendored
View File

@ -21,3 +21,4 @@
/target/ /target/
__pycache__/ __pycache__/
_build/ _build/
src/euscan/_version.py

View File

@ -11,7 +11,6 @@ import os
__author__ = "Corentin Chary (iksaif)" __author__ = "Corentin Chary (iksaif)"
__email__ = "corentin.chary@gmail.com" __email__ = "corentin.chary@gmail.com"
__version__ = "git"
__productname__ = "euscan" __productname__ = "euscan"
__description__ = "A tool to detect new upstream releases." __description__ = "A tool to detect new upstream releases."
@ -32,6 +31,7 @@ from gentoolkit.errors import GentoolkitException
from euscan import CONFIG, output from euscan import CONFIG, output
from euscan.out import progress_bar from euscan.out import progress_bar
from euscan._version import __version__
# Globals # Globals

View File

@ -1,5 +1,5 @@
[build-system] [build-system]
requires = ["setuptools"] requires = ["setuptools>=60","setuptools-scm>=8.0"]
build-backend = "setuptools.build_meta" build-backend = "setuptools.build_meta"
[project] [project]
@ -24,3 +24,6 @@ homepage = "https://gitlab.com/src_prepare/euscan-ng"
[tool.setuptools] [tool.setuptools]
script-files = ["bin/euscan"] script-files = ["bin/euscan"]
[tool.setuptools_scm]
version_file = "src/euscan/_version.py"

View File

@ -1,60 +0,0 @@
#!/usr/bin/env python
from setuptools import setup, Command
import io
import os
import re
__version__ = os.getenv('VERSION', default='9999')
cwd = os.getcwd()
# Load EPREFIX from Portage, fall back to the empty string if it fails
try:
from portage.const import EPREFIX
except ImportError:
EPREFIX = ''
# Python files that need `__version__ = ""` subbed, relative to this dir:
python_scripts = [os.path.join(cwd, path) for path in (
'bin/euscan',
)]
class SetVersion(Command):
"""Set python __version__ to our __version__."""
description = "hardcode scripts' version using VERSION from environment"
user_options = [] # [(long_name, short_name, desc),]
def initialize_options(self):
pass
def finalize_options(self):
pass
def run(self):
ver = 'git' if __version__ == '9999' else __version__
print(("Settings version to %s" % ver))
def sub(files, pattern):
for f in files:
updated_file = []
with io.open(f, 'r', 1, 'utf_8') as s:
for line in s:
newline = re.sub(pattern, '"%s"' % ver, line, 1)
if newline != line:
log.info("%s: %s" % (f, newline))
updated_file.append(newline)
with io.open(f, 'w', 1, 'utf_8') as s:
s.writelines(updated_file)
quote = r'[\'"]{1}'
python_re = r'(?<=^__version__ = )' + quote + '[^\'"]*' + quote
sub(python_scripts, python_re)
setup(
version=__version__,
cmdclass={
'set_version': SetVersion,
},
)

View File

@ -3,8 +3,6 @@
# Copyright 2011 Corentin Chary <corentin.chary@gmail.com> # Copyright 2011 Corentin Chary <corentin.chary@gmail.com>
# Distributed under the terms of the GNU General Public License v2 # Distributed under the terms of the GNU General Public License v2
__version__ = "git"
import configparser import configparser
import os import os
from ast import literal_eval from ast import literal_eval