Fix release-tool merge cmd and rename to "tag"

This commit is contained in:
Janek Bevendorff 2025-11-23 22:55:36 +01:00 committed by Janek Bevendorff
parent 97d4edd9b8
commit 0f3def03b6

View file

@ -25,12 +25,10 @@ import lzma
import os import os
from pathlib import Path from pathlib import Path
import platform import platform
import random
import re import re
import signal import signal
import shutil import shutil
import stat import stat
import string
import subprocess import subprocess
import sys import sys
import tarfile import tarfile
@ -43,7 +41,7 @@ from urllib.request import urlretrieve
########################################################################################### ###########################################################################################
# class Check(Command) # class Check(Command)
# class Merge(Command) # class Tag(Command)
# class Build(Command) # class Build(Command)
# class BuildSrc(Command) # class BuildSrc(Command)
# class AppSign(Command) # class AppSign(Command)
@ -131,7 +129,8 @@ fmt = LogFormatter()
console_handler = logging.StreamHandler() console_handler = logging.StreamHandler()
console_handler.setFormatter(fmt) console_handler.setFormatter(fmt)
logger = logging.getLogger(__file__) logger = logging.getLogger(__file__)
logger.setLevel(os.getenv('LOGLEVEL') if 'LOGLEVEL' in os.environ else logging.INFO) logger.setLevel(os.getenv('LOGLEVEL')
if type(logging.getLevelName(os.environ.get('LOGLEVEL'))) is int else logging.INFO)
logger.addHandler(console_handler) logger.addHandler(console_handler)
########################################################################################### ###########################################################################################
@ -188,11 +187,12 @@ def _run(cmd, *args, cwd, path=None, env=None, input=None, capture_output=True,
env['FORCE_COLOR'] = '1' env['FORCE_COLOR'] = '1'
if docker_image: if docker_image:
docker_cmd = ['docker', 'run', '--rm', '--tty=true', f'--workdir={cwd}', f'--user={os.getuid()}:{os.getgid()}'] cwd2 = cwd or '.'
docker_cmd = ['docker', 'run', '--rm', '--tty=true', f'--workdir={cwd2}', f'--user={os.getuid()}:{os.getgid()}']
docker_cmd.extend([f'--env={k}={v}' for k, v in env.items() if k in ['FORCE_COLOR', 'CC', 'CXX']]) docker_cmd.extend([f'--env={k}={v}' for k, v in env.items() if k in ['FORCE_COLOR', 'CC', 'CXX']])
if path: if path:
docker_cmd.append(f'--env=PATH={path}') docker_cmd.append(f'--env=PATH={path}')
docker_cmd.append(f'--volume={Path(cwd).absolute()}:{Path(cwd).absolute()}:rw') docker_cmd.append(f'--volume={Path(cwd2).absolute()}:{Path(cwd2).absolute()}:rw')
if docker_mounts: if docker_mounts:
docker_cmd.extend([f'--volume={Path(d).absolute()}:{Path(d).absolute()}:rw' for d in docker_mounts]) docker_cmd.extend([f'--volume={Path(d).absolute()}:{Path(d).absolute()}:rw' for d in docker_mounts])
if docker_privileged: if docker_privileged:
@ -203,7 +203,7 @@ def _run(cmd, *args, cwd, path=None, env=None, input=None, capture_output=True,
cmd = docker_cmd + cmd cmd = docker_cmd + cmd
try: try:
logger.debug('Running command: %s', ' '.join(cmd)) logger.debug('Running command: %s', ' '.join(map(str, cmd)))
return subprocess.run( return subprocess.run(
cmd, *args, cmd, *args,
input=input, input=input,
@ -450,6 +450,7 @@ class Check(Command):
cls.check_version_in_cmake(version, src_dir) cls.check_version_in_cmake(version, src_dir)
cls.check_changelog(version, src_dir) cls.check_changelog(version, src_dir)
cls.check_app_stream_info(version, src_dir) cls.check_app_stream_info(version, src_dir)
return git_ref
@staticmethod @staticmethod
def check_src_dir_exists(src_dir): def check_src_dir_exists(src_dir):
@ -541,8 +542,8 @@ class Check(Command):
raise Error('xcrun command not found! Please check that you have correctly installed Xcode.') raise Error('xcrun command not found! Please check that you have correctly installed Xcode.')
class Merge(Command): class Tag(Command):
"""Merge release branch into main branch and create release tags.""" """Update translations and tag release."""
@classmethod @classmethod
def setup_arg_parser(cls, parser: argparse.ArgumentParser): def setup_arg_parser(cls, parser: argparse.ArgumentParser):
@ -564,7 +565,7 @@ class Merge(Command):
skip_translations, tx_resource, tx_min_perc): skip_translations, tx_resource, tx_min_perc):
major, minor, patch = _split_version(version) major, minor, patch = _split_version(version)
Check.perform_basic_checks(src_dir) Check.perform_basic_checks(src_dir)
Check.perform_version_checks(version, src_dir, release_branch) release_branch = Check.perform_version_checks(version, src_dir, release_branch)
Check.check_gnupg() Check.check_gnupg()
sign_key = GPGSign.get_secret_key(sign_key) sign_key = GPGSign.get_secret_key(sign_key)
@ -844,7 +845,7 @@ class Build(Command):
_run(['cmake', '--install', '.', '--strip', _run(['cmake', '--install', '.', '--strip',
'--prefix', (app_dir.absolute() / install_prefix.lstrip('/')).as_posix()], '--prefix', (app_dir.absolute() / install_prefix.lstrip('/')).as_posix()],
cwd=build_dir, capture_output=False, **docker_args) cwd=build_dir, capture_output=False, **docker_args)
shutil.copytree(app_dir, output_dir / app_dir.name, symlinks=True) shutil.copytree(app_dir, output_dir / app_dir.name, symlinks=True, dirs_exist_ok=True)
if appimage: if appimage:
self._build_linux_appimage( self._build_linux_appimage(
@ -885,7 +886,7 @@ class Build(Command):
_run(['linuxdeploy', '--plugin=qt', f'--appdir={app_dir}', f'--custom-apprun={app_run}', _run(['linuxdeploy', '--plugin=qt', f'--appdir={app_dir}', f'--custom-apprun={app_run}',
f'--desktop-file={desktop_file}', f'--icon-file={icon_file}', f'--desktop-file={desktop_file}', f'--icon-file={icon_file}',
*[f'--executable={ex}' for ex in executables]], *[f'--executable={ex}' for ex in executables]],
cwd=build_dir, capture_output=False, path=env_path, **docker_args) cwd=build_dir, capture_output=False, path=env_path, **docker_args, docker_privileged=True)
logger.debug('Running appimagetool...') logger.debug('Running appimagetool...')
appimage_name = f'KeePassXC-{version}-{platform_target}.AppImage' appimage_name = f'KeePassXC-{version}-{platform_target}.AppImage'
@ -1196,9 +1197,9 @@ def main():
Check.setup_arg_parser(check_parser) Check.setup_arg_parser(check_parser)
check_parser.set_defaults(_cmd=Check) check_parser.set_defaults(_cmd=Check)
merge_parser = subparsers.add_parser('merge', help=Merge.__doc__) merge_parser = subparsers.add_parser('tag', help=Tag.__doc__)
Merge.setup_arg_parser(merge_parser) Tag.setup_arg_parser(merge_parser)
merge_parser.set_defaults(_cmd=Merge) merge_parser.set_defaults(_cmd=Tag)
build_parser = subparsers.add_parser('build', help=Build.__doc__) build_parser = subparsers.add_parser('build', help=Build.__doc__)
Build.setup_arg_parser(build_parser) Build.setup_arg_parser(build_parser)