Option to force update

This commit is contained in:
Valentin Niess
2023-11-10 22:52:55 +01:00
parent fd7e28817c
commit 4bc98f48d4

View File

@@ -89,14 +89,17 @@ def update(args):
# Connect to GitHub
if args.token is None:
# Get token from gh app (e.g. for local runs)
p = subprocess.run(
'gh auth token',
shell = True,
capture_output = True,
check = True
)
token = p.stdout.decode().strip()
# First, check for token in env
token = os.getenv('GITHUB_TOKEN')
if token is None:
# Else try to get a token from gh app
p = subprocess.run(
'gh auth token',
shell = True,
capture_output = True,
check = True
)
token = p.stdout.decode().strip()
auth = Auth.Token(token)
session = Github(auth=auth)
@@ -142,7 +145,7 @@ def update(args):
except KeyError:
meta = None
if meta is None or meta.version != version:
if (meta is None) or (meta.version != version) or args.all:
new_meta = AssetMeta(
tag = tag,
abi = abi,
@@ -157,13 +160,15 @@ def update(args):
new_releases.add(rtag)
# Check SHA of tags.
p = subprocess.run(
'git rev-parse HEAD',
shell = True,
capture_output = True,
check = True
)
sha = p.stdout.decode().strip()
sha = os.getenv('GITHUB_SHA')
if sha is None:
p = subprocess.run(
'git rev-parse HEAD',
shell = True,
capture_output = True,
check = True
)
sha = p.stdout.decode().strip()
for tag in releases.keys():
ref = repo.get_git_ref(f'tags/{tag}')
@@ -175,20 +180,20 @@ def update(args):
)
new_sha.append(meta)
# Log foreseen changes.
for tag in new_releases:
meta = ReleaseMeta(tag)
log('FORESEEN', f'create new release for {meta.title()}')
for meta in new_assets:
log('FORESEEN', f'create asset {meta.appimage_name()}')
if meta.asset:
log('FORESEEN', f'remove asset {meta.asset.name}')
for meta in new_sha:
log('FORESEEN', f'update git SHA for refs/tags/{meta.tag}')
if args.dry:
# Log foreseen changes and exit
for tag in new_releases:
meta = ReleaseMeta(tag)
log('DRY', f'new release for {meta.title()}')
for meta in new_assets:
log('DRY', f'create asset {meta.appimage_name()}')
if meta.asset:
log('DRY', f'remove asset {meta.asset.name}')
for meta in new_sha:
log('DRY', f'refs/tags/{meta.tag} -> {sha}')
return
if new_assets:
@@ -213,6 +218,7 @@ def update(args):
prerelease = True
)
releases[tag] = meta
log('UPDATE', f'new release for {title}')
# Update assets.
for meta in new_assets:
@@ -233,12 +239,18 @@ def update(args):
sha = sha,
force = True
)
log('UPDATE', f'refs/tags/{meta.tag} -> {sha}')
if __name__ == '__main__':
parser = argparse.ArgumentParser(
description = 'Update GitHub releases of Python AppImages'
)
parser.add_argument('-a', '--all',
help = 'force update of all available releases',
action = 'store_true',
default = False
)
parser.add_argument('-d', '--dry',
help = 'dry run (only log changes)',
action = 'store_true',
@@ -248,7 +260,5 @@ if __name__ == '__main__':
help = 'GitHub authentication token'
)
# XXX Add --all arg
args = parser.parse_args()
update(args)