mirror of
https://github.com/caelestia-dots/cli.git
synced 2026-06-19 07:20:01 -05:00
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:
@@ -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(
|
||||||
|
|||||||
@@ -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"),
|
||||||
)
|
)
|
||||||
|
|||||||
Reference in New Issue
Block a user