Synchronize public module directory publication
This commit is contained in:
@@ -28,6 +28,7 @@ from govoplan_release.catalog_entry_synthesis import ( # noqa: E402
|
||||
synthesize_repository_catalog_entries,
|
||||
validate_initial_entry_closure,
|
||||
)
|
||||
from govoplan_release.module_directory import write_module_directory # noqa: E402
|
||||
|
||||
|
||||
SHA256 = re.compile(r"^[0-9a-f]{64}$")
|
||||
@@ -44,6 +45,11 @@ def main() -> int:
|
||||
parser.add_argument("--expires-days", type=int, default=90)
|
||||
parser.add_argument("--catalog-output", type=Path, required=True)
|
||||
parser.add_argument("--keyring-output", type=Path)
|
||||
parser.add_argument(
|
||||
"--module-directory-output",
|
||||
type=Path,
|
||||
help="Catalog v1 root under which the browsable modules directory is synchronized.",
|
||||
)
|
||||
parser.add_argument(
|
||||
"--catalog-signing-key",
|
||||
action="append",
|
||||
@@ -84,17 +90,32 @@ def main() -> int:
|
||||
output.parent.mkdir(parents=True, exist_ok=True)
|
||||
output.write_text(json.dumps(catalog, indent=2, sort_keys=True) + "\n", encoding="utf-8")
|
||||
|
||||
keyring = _keyring(signing_keys=signing_keys, generated_at=generated_at)
|
||||
if args.keyring_output is not None:
|
||||
keyring_output = args.keyring_output.expanduser()
|
||||
keyring_output.parent.mkdir(parents=True, exist_ok=True)
|
||||
keyring_output.write_text(
|
||||
json.dumps(_keyring(signing_keys=signing_keys, generated_at=generated_at), indent=2, sort_keys=True) + "\n",
|
||||
json.dumps(keyring, indent=2, sort_keys=True) + "\n",
|
||||
encoding="utf-8",
|
||||
)
|
||||
|
||||
module_directory_files: tuple[Path, ...] = ()
|
||||
if args.module_directory_output is not None:
|
||||
module_directory_files = write_module_directory(
|
||||
catalog_payload=catalog,
|
||||
keyring_payload=keyring,
|
||||
output_root=args.module_directory_output.expanduser(),
|
||||
channel=args.channel,
|
||||
public_base_url=args.public_base_url,
|
||||
prune=True,
|
||||
)
|
||||
|
||||
print(f"catalog={output}")
|
||||
if args.keyring_output is not None:
|
||||
print(f"keyring={args.keyring_output.expanduser()}")
|
||||
if args.module_directory_output is not None:
|
||||
print(f"module_directory={args.module_directory_output.expanduser()}")
|
||||
print(f"module_directory_files={len(module_directory_files)}")
|
||||
print(f"channel={args.channel}")
|
||||
print(f"sequence={sequence}")
|
||||
print(f"version={version}")
|
||||
@@ -164,11 +185,17 @@ def _catalog_payload(
|
||||
for entry in entries:
|
||||
python_ref = _python_ref(name, python_artifact)
|
||||
entry["python_ref"] = python_ref
|
||||
repository_url = f"https://git.add-ideas.de/GovOPlaN/{repository}"
|
||||
source_commit = str(package["commit"])
|
||||
entry["source"] = {
|
||||
"repository": repository,
|
||||
"tag": package["tag"],
|
||||
"commit": package["commit"],
|
||||
"commit": source_commit,
|
||||
"repository_url": repository_url,
|
||||
"revision_url": f"{repository_url}/commit/{source_commit}",
|
||||
}
|
||||
entry["availability"] = "available"
|
||||
entry["release_notes_url"] = f"{repository_url}/releases/tag/{package['tag']}"
|
||||
integrity: dict[str, object] = {
|
||||
"python": _artifact_integrity(python_artifact, ref=python_ref),
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user