Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

tools/versions: quality-of-life improvements #1689

Merged
merged 4 commits into from
Sep 15, 2024
Merged
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
56 changes: 40 additions & 16 deletions tools/versions.py
Original file line number Diff line number Diff line change
Expand Up @@ -195,30 +195,44 @@ def do_autoupdate(args: Namespace) -> None:
for name in names:
if name not in upstream_vers:
raise ValueError(f'{name} is not tracked in Anitya; upstream version is unknown')
if name in ports:
raise ValueError(f'{name} upstream does not use Meson; cannot update automatically')
if name in ports and not args.port:
raise ValueError(f'{name} upstream does not use Meson; cannot update automatically. Use -p/--port to update everything but the packagefiles.')
else:
names = [
name for name in cur_vers
if name not in ports and name in upstream_vers
]
names = [name for name in cur_vers if name in upstream_vers]
if not args.port:
names = [name for name in names if name not in ports]

# update
failures = 0
for name in names:
cur_ver, upstream_ver = cur_vers[name], upstream_vers[name]
if cur_ver != upstream_ver:
try:
print(f'Updating {name}...')
try:
if cur_ver != upstream_ver:
if name in ports:
# manual packagefiles changes will also be needed
print(f'Updating {name}.wrap and releases.json...')
else:
print(f'Updating {name}...')
update_wrap(name, cur_ver, upstream_ver)
releases[name]['versions'].insert(0, f'{upstream_ver}-1')
with open('releases.json.new', 'w') as f:
json.dump(releases, f, indent=2, sort_keys=True)
f.write('\n')
os.rename('releases.json.new', 'releases.json')
except Exception as e:
print(e, file=sys.stderr)
failures += 1
elif name in ports and args.revision:
# only allow for ports, since official wraps can't have
# downstream changes
print(f'Updating {name} revision...')
cur_rev = int(releases[name]['versions'][0].split('-')[1])
releases[name]['versions'].insert(
0, f'{cur_vers[name]}-{cur_rev + 1}'
)
else:
continue

with open('releases.json.new', 'w') as f:
json.dump(releases, f, indent=2, sort_keys=True)
f.write('\n')
os.rename('releases.json.new', 'releases.json')
except Exception as e:
print(e, file=sys.stderr)
failures += 1
if failures:
raise Exception(f"Couldn't update {failures} wraps")

Expand Down Expand Up @@ -325,16 +339,26 @@ def main() -> None:

autoupdate = subparsers.add_parser(
'autoupdate',
aliases=['au'],
help='automatically update non-port wraps',
description='Attempt to automatically update wraps that support Meson upstream.'
)
autoupdate.add_argument(
'names', metavar='name', nargs='*', help='wrap to update'
)
autoupdate.add_argument(
'-p', '--port', action='store_true',
help='allow updating wraps with Meson support added in wrapdb'
)
autoupdate.add_argument(
'-r', '--revision', action='store_true',
help="update port's revision if version is current"
)
autoupdate.set_defaults(func=do_autoupdate)

list = subparsers.add_parser(
'list',
aliases=['ls'],
help='list wraps and their versions',
description='List wraps and their versions.',
)
Expand Down
Loading