Mark stable commit / test-unit (push) Has been cancelled
Mark stable commit / test-integration (push) Has been cancelled
Mark stable commit / test-env-virtual (push) Has been cancelled
Mark stable commit / test-env-nix (push) Has been cancelled
Mark stable commit / test-e2e (push) Has been cancelled
Mark stable commit / test-virgin-user (push) Has been cancelled
Mark stable commit / test-virgin-root (push) Has been cancelled
Mark stable commit / lint-shell (push) Has been cancelled
Mark stable commit / lint-python (push) Has been cancelled
Mark stable commit / mark-stable (push) Has been cancelled
https://chatgpt.com/share/69454ef4-e038-800f-a14b-4e633e76f241
75 lines
2.0 KiB
Python
75 lines
2.0 KiB
Python
from __future__ import annotations
|
|
|
|
import os
|
|
from datetime import datetime
|
|
from typing import Optional, Tuple
|
|
|
|
from pkgmgr.core.git.queries import get_config_value
|
|
|
|
|
|
def _get_debian_author() -> Tuple[str, str]:
|
|
name = os.environ.get("DEBFULLNAME")
|
|
email = os.environ.get("DEBEMAIL")
|
|
|
|
if not name:
|
|
name = os.environ.get("GIT_AUTHOR_NAME")
|
|
if not email:
|
|
email = os.environ.get("GIT_AUTHOR_EMAIL")
|
|
|
|
if not name:
|
|
name = get_config_value("user.name")
|
|
if not email:
|
|
email = get_config_value("user.email")
|
|
|
|
if not name:
|
|
name = "Unknown Maintainer"
|
|
if not email:
|
|
email = "unknown@example.com"
|
|
|
|
return name, email
|
|
|
|
|
|
def update_debian_changelog(
|
|
debian_changelog_path: str,
|
|
package_name: str,
|
|
new_version: str,
|
|
message: Optional[str] = None,
|
|
preview: bool = False,
|
|
) -> None:
|
|
if not os.path.exists(debian_changelog_path):
|
|
print("[INFO] debian/changelog not found, skipping.")
|
|
return
|
|
|
|
debian_version = f"{new_version}-1"
|
|
now = datetime.now().astimezone()
|
|
date_str = now.strftime("%a, %d %b %Y %H:%M:%S %z")
|
|
|
|
author_name, author_email = _get_debian_author()
|
|
|
|
first_line = f"{package_name} ({debian_version}) unstable; urgency=medium"
|
|
body_line = message.strip() if message else f"Automated release {new_version}."
|
|
stanza = (
|
|
f"{first_line}\n\n"
|
|
f" * {body_line}\n\n"
|
|
f" -- {author_name} <{author_email}> {date_str}\n\n"
|
|
)
|
|
|
|
if preview:
|
|
print(
|
|
"[PREVIEW] Would prepend the following stanza to debian/changelog:\n"
|
|
f"{stanza}"
|
|
)
|
|
return
|
|
|
|
try:
|
|
with open(debian_changelog_path, "r", encoding="utf-8") as f:
|
|
existing = f.read()
|
|
except Exception as exc:
|
|
print(f"[WARN] Could not read debian/changelog: {exc}")
|
|
existing = ""
|
|
|
|
with open(debian_changelog_path, "w", encoding="utf-8") as f:
|
|
f.write(stanza + existing)
|
|
|
|
print(f"Updated debian/changelog with version {debian_version}")
|