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):
|
class BaseCmdPkgRelations(Cmd):
|
||||||
|
|
||||||
def pkg_relations(self, rel_type, args):
|
def pkg_relations(self, rel_type, args):
|
||||||
version_pattern=re.compile("[0-9-.]*")
|
|
||||||
if args.subsections is None:
|
if args.subsections is None:
|
||||||
subsecs = self.app.os_cascade()
|
subsecs = self.app.os_cascade()
|
||||||
subsecs.append('jw')
|
subsecs.append('jw')
|
||||||
else:
|
else:
|
||||||
subsecs = args.subsections.split(',')
|
subsecs = args.subsections.split(',')
|
||||||
log(DEBUG, 'flavour = ', args.flavour, ', subsecs = ', ' '.join(subsecs))
|
|
||||||
ignore = args.ignore.split(',')
|
ignore = args.ignore.split(',')
|
||||||
log(DEBUG, "ignore = ", ignore)
|
|
||||||
|
|
||||||
r = []
|
|
||||||
flavours = args.flavour.split(',')
|
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 flavour in flavours:
|
||||||
for s in subsecs:
|
for s in subsecs:
|
||||||
section = 'pkg.' + rel_type + '.' + s
|
section = 'pkg.' + rel_type + '.' + s
|
||||||
|
|
@ -68,10 +69,33 @@ class BaseCmdPkgRelations(Cmd):
|
||||||
pass
|
pass
|
||||||
else:
|
else:
|
||||||
raise Exception("Unknown version specifier in " + spec)
|
raise Exception("Unknown version specifier in " + spec)
|
||||||
cleaned_dep = ' '.join(dep)
|
if not args.expand_semver_revision_range:
|
||||||
if not cleaned_dep in r:
|
expanded_deps = [dep]
|
||||||
log(DEBUG, "appending", cleaned_dep)
|
else:
|
||||||
r.append(cleaned_dep)
|
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)
|
return args.delimiter.join(r)
|
||||||
|
|
||||||
def print_pkg_relations(self, rel_type, args_):
|
def print_pkg_relations(self, rel_type, args_):
|
||||||
|
|
@ -93,6 +117,8 @@ class BaseCmdPkgRelations(Cmd):
|
||||||
default=False, help='Don\'t report version information')
|
default=False, help='Don\'t report version information')
|
||||||
parser.add_argument('--dont-strip-revision', action='store_true',
|
parser.add_argument('--dont-strip-revision', action='store_true',
|
||||||
default=False, help='Always treat VERSION macro as VERSION-REVISION')
|
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',
|
parser.add_argument('--recursive', action='store_true',
|
||||||
default=False, help='Find dependencies recursively')
|
default=False, help='Find dependencies recursively')
|
||||||
parser.add_argument('--dont-expand-version-macros', action='store_true',
|
parser.add_argument('--dont-expand-version-macros', action='store_true',
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue