fix: only fetch source once

This commit is contained in:
2 * r + 2 * t
2026-06-16 00:57:04 +10:00
parent 1f5b39281c
commit 7d9b685918
+7
View File
@@ -11,6 +11,8 @@ class SourceError(Exception):
class DotsSource: class DotsSource:
_fetched_source: bool = False
def __init__(self) -> None: def __init__(self) -> None:
cfg = get_config().get("dots", {}) cfg = get_config().get("dots", {})
self.url = cfg.get("url", "https://github.com/caelestia-dots/caelestia.git") self.url = cfg.get("url", "https://github.com/caelestia-dots/caelestia.git")
@@ -36,12 +38,17 @@ class DotsSource:
if self.exists(): if self.exists():
if self.current_url() == self.url: if self.current_url() == self.url:
if DotsSource._fetched_source:
return
self._git("fetch", "--prune", "origin", self.branch) self._git("fetch", "--prune", "origin", self.branch)
DotsSource._fetched_source = True
return return
shutil.rmtree(dots_dir) shutil.rmtree(dots_dir)
dots_dir.parent.mkdir(parents=True, exist_ok=True) dots_dir.parent.mkdir(parents=True, exist_ok=True)
self._run("git", "clone", "--branch", self.branch, self.url, str(dots_dir)) self._run("git", "clone", "--branch", self.branch, self.url, str(dots_dir))
DotsSource._fetched_source = True
def current_url(self) -> str: def current_url(self) -> str:
return self._git("remote", "get-url", "origin").strip() return self._git("remote", "get-url", "origin").strip()