diff --git a/src/pickley/__init__.py b/src/pickley/__init__.py index e878d9d..8dc67f9 100644 --- a/src/pickley/__init__.py +++ b/src/pickley/__init__.py @@ -13,6 +13,7 @@ from runez.pyenv import PypiStd, PythonDepot, Version from pickley import bstrap +from pickley.bstrap import PICKLEY LOG = logging.getLogger(__name__) DEFAULT_VERSION_CHECK_DELAY = 300 @@ -588,6 +589,9 @@ def save_manifest(self): manifest.package_manager = venv_settings.package_manager manifest.python_executable = venv_settings.python_executable + if self.canonical_name == PICKLEY: + runez.save_json(manifest.install_info, CFG.manifests / ".bootstrap.json") + payload = manifest.to_dict() runez.save_json(payload, self.manifest_path) folder = self.target_installation_folder() diff --git a/src/pickley/cli.py b/src/pickley/cli.py index 61522fa..04ef84e 100644 --- a/src/pickley/cli.py +++ b/src/pickley/cli.py @@ -14,7 +14,7 @@ from runez.pyenv import Version from runez.render import PrettyTable -from pickley import bstrap, CFG, PackageSpec, Reporter, ResolvedPackage, TrackedInstallInfo, TrackedSettings +from pickley import bstrap, CFG, PackageSpec, PICKLEY, Reporter, ResolvedPackage, TrackedSettings from pickley.package import VenvPackager LOG = logging.getLogger(__name__) @@ -342,7 +342,10 @@ def auto_heal(): @click.argument("package", required=True) def auto_upgrade(force, package): """Background auto-upgrade command (called by wrapper)""" - CFG.require_bootstrap() + if package != PICKLEY: + # Auto-upgrade of pickley will mark current installation as bootstrapped + CFG.require_bootstrap() + canonical_name = CFG.required_canonical_name(package) pspec = PackageSpec(canonical_name) cooldown_path = CFG.cache / f"{canonical_name}.cooldown" @@ -409,7 +412,6 @@ def bootstrap(base_folder, pickley_spec): pspec = PackageSpec(pickley_spec or bstrap.PICKLEY, authoritative=bool(pickley_spec)) perform_install(pspec) - runez.save_json(TrackedInstallInfo.current(), bootstrap_marker) @main.command()