feat: add post package hook + deploy after package

Deploy after package install on install command. Update command stays
the same
This commit is contained in:
2 * r + 2 * t
2026-06-19 01:28:47 +10:00
parent 6c3b69cb84
commit 8535338e6f
2 changed files with 9 additions and 3 deletions
+2 -1
View File
@@ -38,11 +38,12 @@ class Command:
legacy_dir = detect_legacy_repo() # Detect legacy repo first cause deploy overwrites legacy syms legacy_dir = detect_legacy_repo() # Detect legacy repo first cause deploy overwrites legacy syms
source, tip, manifest = self.fetch_manifest() source, tip, manifest = self.fetch_manifest()
deployed = self.deploy_configs(source, manifest)
try: try:
installer, packages, local_packages = self.install_packages(source, manifest) installer, packages, local_packages = self.install_packages(source, manifest)
except PackageError as e: except PackageError as e:
fatal(e) fatal(e)
run_hooks(manifest, "post_package")
deployed = self.deploy_configs(source, manifest)
run_hooks(manifest, "post_install") run_hooks(manifest, "post_install")
DotsState( DotsState(
+7 -2
View File
@@ -66,6 +66,7 @@ class ManifestComponent:
default: bool = False default: bool = False
packages: list[str] = field(default_factory=list) packages: list[str] = field(default_factory=list)
entries: list[ManifestEntry] = field(default_factory=list) entries: list[ManifestEntry] = field(default_factory=list)
post_package: list[str] = field(default_factory=list)
post_install: list[str] = field(default_factory=list) post_install: list[str] = field(default_factory=list)
post_update: list[str] = field(default_factory=list) post_update: list[str] = field(default_factory=list)
@@ -80,8 +81,9 @@ class _ManifestData:
class Manifest: class Manifest:
components: dict[str, ManifestComponent] = field(default_factory=dict) components: dict[str, ManifestComponent] = field(default_factory=dict)
packages: list[str] = field(default_factory=list) packages: list[str] = field(default_factory=list)
post_install: list[str] = field(default_factory=list) post_package: list[str] = field(default_factory=list) # Post package install (install cmd only)
post_update: list[str] = field(default_factory=list) post_install: list[str] = field(default_factory=list) # Very end of install cmd
post_update: list[str] = field(default_factory=list) # Very end of update cmd
_data: _ManifestData = field(default_factory=_ManifestData, init=False, repr=False) _data: _ManifestData = field(default_factory=_ManifestData, init=False, repr=False)
@property @property
@@ -99,6 +101,7 @@ class Manifest:
except tomllib.TOMLDecodeError as e: except tomllib.TOMLDecodeError as e:
raise ManifestError(f"invalid TOML: {e}") from e raise ManifestError(f"invalid TOML: {e}") from e
post_package = _validate_str_list(raw.get("post_package", []), "post_package")
post_install = _validate_str_list(raw.get("post_install", []), "post_install") post_install = _validate_str_list(raw.get("post_install", []), "post_install")
post_update = _validate_str_list(raw.get("post_update", []), "post_update") post_update = _validate_str_list(raw.get("post_update", []), "post_update")
@@ -114,6 +117,7 @@ class Manifest:
return Manifest( return Manifest(
components=components, components=components,
packages=packages, packages=packages,
post_package=post_package,
post_install=post_install, post_install=post_install,
post_update=post_update, post_update=post_update,
) )
@@ -218,6 +222,7 @@ def _parse_component(d: dict[str, Any]) -> ManifestComponent:
default=bool(d.get("default", False)), default=bool(d.get("default", False)),
packages=_validate_str_list(d.get("packages", []), f"component '{name}' packages"), packages=_validate_str_list(d.get("packages", []), f"component '{name}' packages"),
entries=[_parse_entry(e) for e in d.get("entries", [])], entries=[_parse_entry(e) for e in d.get("entries", [])],
post_package=_validate_str_list(d.get("post_package", []), f"component '{name}' post_package"),
post_install=_validate_str_list(d.get("post_install", []), f"component '{name}' post_install"), post_install=_validate_str_list(d.get("post_install", []), f"component '{name}' post_install"),
post_update=_validate_str_list(d.get("post_update", []), f"component '{name}' post_update"), post_update=_validate_str_list(d.get("post_update", []), f"component '{name}' post_update"),
) )