fix how we collect tags on current commit (#1063)

* fix how we collect tags on current commit

* fix dry-run handling
This commit is contained in:
Ryan Morshead 2023-06-16 10:45:38 -06:00 committed by GitHub
parent 6df7ecdebb
commit 9bf3db7f66
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -209,10 +209,8 @@ def publish(context: Context, dry_run: str = ""):
"js": prepare_js_release,
"py": prepare_py_release,
}
parsed_tags: list[TagInfo] = [
parse_tag(tag) for tag in dry_run.split(",") or get_current_tags(context)
]
current_tags = dry_run.split(",") if dry_run else get_current_tags(context)
parsed_tags = [parse_tag(tag) for tag in current_tags]
publishers: list[Callable[[bool], None]] = []
for tag_info in parsed_tags:
@ -315,23 +313,18 @@ def get_current_tags(context: Context) -> set[str]:
context.run("git diff --cached --exit-code", hide=True)
context.run("git diff --exit-code", hide=True)
except Exception:
log.error("Cannot create a tag - there are uncommitted changes")
log.error("Cannot get current tags - there are uncommitted changes")
return set()
tags_per_commit: dict[str, list[str]] = {}
for commit, tag in map(
str.split,
context.run(
r"git for-each-ref --format '%(objectname) %(refname:short)' refs/tags",
hide=True,
).stdout.splitlines(),
):
tags_per_commit.setdefault(commit, []).append(tag)
current_commit = context.run(
"git rev-parse HEAD", silent=True, external=True
).stdout.strip()
tags = set(tags_per_commit.get(current_commit, set()))
# get tags for current commit
tags = {
line
for line in map(
str.strip,
context.run("git tag --points-at HEAD", hide=True).stdout.splitlines(),
)
if line
}
if not tags:
log.error("No tags found for current commit")