mirror of
ssh://git.janware.com/janware/proj/jw-pkg
synced 2026-04-25 17:45:55 +02:00
cmds.projects.BaseCmdPkgRelations: --expand-semver-revision-range
Add support for --expand-semver-revision-range to cmds.projects.BaseCmdPkgRelations.pkg_relations(). The options turns a dependency in projects.conf pkg.requires.os.devel = jw-pkg-devel = VERSION into jw-pkg-devel >= 1.2.3, jw-pkg-devel < 1.2.4 Note that this will break as soon as a real range is specified in projects.conf. To be fixed later, this commit is at least less breakage than before. Signed-off-by: Jan Lindemann <jan@janware.com>
This commit is contained in:
parent
5bd1f3378b
commit
509fe1c5e0
1 changed files with 35 additions and 9 deletions
|
|
@ -10,18 +10,19 @@ from ..CmdProjects import CmdProjects
|
|||
class BaseCmdPkgRelations(Cmd):
|
||||
|
||||
def pkg_relations(self, rel_type, args):
|
||||
version_pattern=re.compile("[0-9-.]*")
|
||||
|
||||
if args.subsections is None:
|
||||
subsecs = self.app.os_cascade()
|
||||
subsecs.append('jw')
|
||||
else:
|
||||
subsecs = args.subsections.split(',')
|
||||
log(DEBUG, 'flavour = ', args.flavour, ', subsecs = ', ' '.join(subsecs))
|
||||
ignore = args.ignore.split(',')
|
||||
log(DEBUG, "ignore = ", ignore)
|
||||
|
||||
r = []
|
||||
flavours = args.flavour.split(',')
|
||||
|
||||
log(DEBUG, f'flavour="{args.flavour}", subsecs="{", ".join(subsecs)}", "ignore="{args.ignore}"')
|
||||
|
||||
version_pattern = re.compile("[0-9-.]*")
|
||||
r: list[str] = []
|
||||
for flavour in flavours:
|
||||
for s in subsecs:
|
||||
section = 'pkg.' + rel_type + '.' + s
|
||||
|
|
@ -68,10 +69,33 @@ class BaseCmdPkgRelations(Cmd):
|
|||
pass
|
||||
else:
|
||||
raise Exception("Unknown version specifier in " + spec)
|
||||
cleaned_dep = ' '.join(dep)
|
||||
if not cleaned_dep in r:
|
||||
log(DEBUG, "appending", cleaned_dep)
|
||||
r.append(cleaned_dep)
|
||||
if not args.expand_semver_revision_range:
|
||||
expanded_deps = [dep]
|
||||
else:
|
||||
expanded_deps = []
|
||||
if args.expand_semver_revision_range and len(dep) == 3:
|
||||
semver = re.split(r'[.-]', version)
|
||||
if len(semver) != 4:
|
||||
expanded_deps = [dep]
|
||||
else:
|
||||
release = int(semver[2])
|
||||
major_minor = f'{semver[0]}.{semver[1]}'
|
||||
match dep[1]:
|
||||
case '>' | '>=':
|
||||
expanded_deps.append([dep[0], dep[1], dep[2]])
|
||||
expanded_deps.append([dep[0], '<', f'{major_minor}.{release + 1}'])
|
||||
case '<' | '<=':
|
||||
expanded_deps.append([dep[0], dep[1], dep[2]])
|
||||
case '=':
|
||||
expanded_deps.append([dep[0], '>=', f'{major_minor}.{release}'])
|
||||
expanded_deps.append([dep[0], '<', f'{major_minor}.{release + 1}'])
|
||||
case _:
|
||||
raise NotImplementedError(f'Expanding SemVer range "{dep[0]} {dep[1]} {dep[3]}" is not yet implemented')
|
||||
for expanded_dep in expanded_deps:
|
||||
dep_str = ' '.join(expanded_dep)
|
||||
if not dep_str in r:
|
||||
log(DEBUG, f'Appending dependency "{dep_str}"')
|
||||
r.append(dep_str)
|
||||
return args.delimiter.join(r)
|
||||
|
||||
def print_pkg_relations(self, rel_type, args_):
|
||||
|
|
@ -93,6 +117,8 @@ class BaseCmdPkgRelations(Cmd):
|
|||
default=False, help='Don\'t report version information')
|
||||
parser.add_argument('--dont-strip-revision', action='store_true',
|
||||
default=False, help='Always treat VERSION macro as VERSION-REVISION')
|
||||
parser.add_argument('--expand-semver-revision-range', action='store_true',
|
||||
default=False, help='Always treat =VERSION macro as >= VERSION-0 and < (VERSION+1)-0')
|
||||
parser.add_argument('--recursive', action='store_true',
|
||||
default=False, help='Find dependencies recursively')
|
||||
parser.add_argument('--dont-expand-version-macros', action='store_true',
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue