katalon-cli 0.1.8__tar.gz → 0.1.9__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: katalon-cli
3
- Version: 0.1.8
3
+ Version: 0.1.9
4
4
  Summary: Installer & Updater CLI für Katalon Production-Instanzen
5
5
  Author: Karl Krägelin
6
6
  Author-email: Karl Krägelin <karlkraegelin@gmail.com>
@@ -66,7 +66,7 @@ uv run pytest
66
66
  ## Architektur
67
67
 
68
68
  - `core/state.py` — `installation.json`, Single Source of Truth für laufende Version.
69
- - `core/release.py` — GitHub-Release-Metadaten (`katalon-release.json` Asset), 1h Cache. Enthält
69
+ - `core/release.py` — GitHub-Release-Metadaten (`katalon-release.json` Asset). Enthält
70
70
  optional `env_vars`/`deprecated_env_vars`: `install`/`update` ergänzen neue Pflichtvariablen
71
71
  automatisch (Secret generieren oder Default übernehmen), fragen bei fehlendem Default interaktiv
72
72
  nach (`--yes` bricht dann ab), tragen neue optionale Variablen auskommentiert in `.env` ein und
@@ -52,7 +52,7 @@ uv run pytest
52
52
  ## Architektur
53
53
 
54
54
  - `core/state.py` — `installation.json`, Single Source of Truth für laufende Version.
55
- - `core/release.py` — GitHub-Release-Metadaten (`katalon-release.json` Asset), 1h Cache. Enthält
55
+ - `core/release.py` — GitHub-Release-Metadaten (`katalon-release.json` Asset). Enthält
56
56
  optional `env_vars`/`deprecated_env_vars`: `install`/`update` ergänzen neue Pflichtvariablen
57
57
  automatisch (Secret generieren oder Default übernehmen), fragen bei fehlendem Default interaktiv
58
58
  nach (`--yes` bricht dann ab), tragen neue optionale Variablen auskommentiert in `.env` ein und
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "katalon-cli"
3
- version = "0.1.8"
3
+ version = "0.1.9"
4
4
  description = "Installer & Updater CLI für Katalon Production-Instanzen"
5
5
  readme = "README.md"
6
6
  requires-python = ">=3.12"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "katalon-cli"
3
- version = "0.1.8"
3
+ version = "0.1.9"
4
4
  description = "Installer & Updater CLI für Katalon Production-Instanzen"
5
5
  readme = "README.md"
6
6
  authors = [
@@ -2,16 +2,10 @@
2
2
 
3
3
  from __future__ import annotations
4
4
 
5
- import json
6
- import time
7
- from pathlib import Path
8
-
9
5
  import httpx
10
6
  from pydantic import BaseModel, Field
11
7
 
12
8
  GITHUB_REPO = "katalon-collections/katalon"
13
- CACHE_TTL_SECONDS = 3600
14
- CACHE_PATH = Path.home() / ".cache" / "katalon-cli" / "releases.json"
15
9
 
16
10
 
17
11
  class ReleaseRequirements(BaseModel):
@@ -69,6 +63,16 @@ def _fetch_release_asset(tag: str | None) -> dict:
69
63
  asset_resp.raise_for_status()
70
64
  return asset_resp.json()
71
65
 
66
+ def get_release_notes(tag: str) -> str:
67
+ """Lädt den Changelog-Text (Release-Body) für einen Tag."""
68
+ with httpx.Client(timeout=15) as client:
69
+ release = client.get(
70
+ f"https://api.github.com/repos/{GITHUB_REPO}/releases/tags/{tag}"
71
+ )
72
+ release.raise_for_status()
73
+ return release.json().get("body") or ""
74
+
75
+
72
76
  def _fetch_releases() -> list[dict]:
73
77
  """Lädt alle veröffentlichten Katalon-Releases."""
74
78
  releases: list[dict] = []
@@ -119,15 +123,8 @@ def get_releases_between(installed_version: str, target_version: str) -> list[Re
119
123
  ]
120
124
 
121
125
 
122
- def get_latest_release(*, use_cache: bool = True) -> ReleaseMetadata:
123
- if use_cache and CACHE_PATH.exists():
124
- age = time.time() - CACHE_PATH.stat().st_mtime
125
- if age < CACHE_TTL_SECONDS:
126
- return ReleaseMetadata.model_validate_json(CACHE_PATH.read_text())
127
-
126
+ def get_latest_release() -> ReleaseMetadata:
128
127
  payload = _fetch_release_asset(tag=None)
129
- CACHE_PATH.parent.mkdir(parents=True, exist_ok=True)
130
- CACHE_PATH.write_text(json.dumps(payload))
131
128
  return ReleaseMetadata.model_validate(payload)
132
129
 
133
130
 
@@ -593,6 +593,15 @@ def update(
593
593
  state.record(meta.version, meta.compose_revision, "update")
594
594
  state.save(dir)
595
595
  console.print(f"[green]✔[/] Update auf {meta.version} abgeschlossen.")
596
+
597
+ try:
598
+ notes = release.get_release_notes(f"v{meta.version}")
599
+ except Exception:
600
+ notes = ""
601
+ if notes:
602
+ console.rule("Changelog")
603
+ console.print(notes)
604
+
596
605
  _print_next_steps(dir, state.base_url)
597
606
 
598
607