mirror of
https://github.com/daylinmorgan/viv.git
synced 2024-11-14 04:57:53 -06:00
refactor: don't need to instantiate config and add viv spec
This commit is contained in:
parent
6e173b2383
commit
2864f50176
1 changed files with 28 additions and 20 deletions
|
@ -50,7 +50,7 @@ from typing import (
|
||||||
from urllib.error import HTTPError
|
from urllib.error import HTTPError
|
||||||
from urllib.request import urlopen
|
from urllib.request import urlopen
|
||||||
|
|
||||||
__version__ = "23.5a5-3-g2bc2476-dev"
|
__version__ = "23.5a5-4-g6e173b2-dev"
|
||||||
|
|
||||||
|
|
||||||
class Spinner:
|
class Spinner:
|
||||||
|
@ -352,7 +352,7 @@ if __name__ == "__main__":
|
||||||
("CLI", cli),
|
("CLI", cli),
|
||||||
("Running Source", running),
|
("Running Source", running),
|
||||||
("Local Source", local),
|
("Local Source", local),
|
||||||
("Cache", c._cache),
|
("Cache", Cfg._cache),
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
+ "\n"
|
+ "\n"
|
||||||
|
@ -617,7 +617,7 @@ class Meta:
|
||||||
|
|
||||||
@classmethod
|
@classmethod
|
||||||
def load(cls, name: str) -> "Meta":
|
def load(cls, name: str) -> "Meta":
|
||||||
if not (c.venvcache / name / "vivmeta.json").exists():
|
if not (Cfg.venvcache / "vivmeta.json").exists():
|
||||||
warn(f"possibly corrupted vivenv: {name}")
|
warn(f"possibly corrupted vivenv: {name}")
|
||||||
# add empty values for corrupted vivenvs so it will still load
|
# add empty values for corrupted vivenvs so it will still load
|
||||||
return cls(name=name, spec=[""], files=[""], exe="", id="")
|
return cls(name=name, spec=[""], files=[""], exe="", id="")
|
||||||
|
@ -778,7 +778,7 @@ def use(*packages: str, track_exe: bool = False, name: str = "") -> Path:
|
||||||
name: use as vivenv name, if not provided id is used
|
name: use as vivenv name, if not provided id is used
|
||||||
"""
|
"""
|
||||||
|
|
||||||
vivenv = ViVenv(list(packages), track_exe=track_exe, name=name)
|
vivenv = ViVenv([*list(packages), *c.viv_spec], track_exe=track_exe, name=name)
|
||||||
if not vivenv.loaded or os.getenv("VIV_FORCE"):
|
if not vivenv.loaded or os.getenv("VIV_FORCE"):
|
||||||
vivenv.create()
|
vivenv.create()
|
||||||
vivenv.install_pkgs()
|
vivenv.install_pkgs()
|
||||||
|
@ -871,18 +871,26 @@ def make_executable(path: Path) -> None:
|
||||||
os.chmod(path, mode)
|
os.chmod(path, mode)
|
||||||
|
|
||||||
|
|
||||||
class Config:
|
class Cfg:
|
||||||
"""viv config manager"""
|
"""viv config manager"""
|
||||||
|
|
||||||
def __init__(self) -> None:
|
_cache = Path(
|
||||||
self._cache = Path(
|
os.getenv(
|
||||||
os.getenv(
|
"VIV_CACHE",
|
||||||
"VIV_CACHE",
|
Path(os.getenv("XDG_CACHE_HOME", Path.home() / ".cache")) / "viv",
|
||||||
Path(os.getenv("XDG_CACHE_HOME", Path.home() / ".cache")) / "viv",
|
|
||||||
)
|
|
||||||
)
|
)
|
||||||
|
)
|
||||||
|
|
||||||
def _ensure(self, p: Path) -> Path:
|
@property
|
||||||
|
def viv_spec(self) -> List[str]:
|
||||||
|
env_viv_spec = os.getenv("VIV_SPEC")
|
||||||
|
if env_viv_spec:
|
||||||
|
return env_viv_spec.split(" ")
|
||||||
|
else:
|
||||||
|
return []
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def _ensure(p: Path) -> Path:
|
||||||
p.mkdir(parents=True, exist_ok=True)
|
p.mkdir(parents=True, exist_ok=True)
|
||||||
return p
|
return p
|
||||||
|
|
||||||
|
@ -908,7 +916,7 @@ class Config:
|
||||||
return self._ensure(parent) / "viv.py"
|
return self._ensure(parent) / "viv.py"
|
||||||
|
|
||||||
|
|
||||||
c = Config()
|
c = Cfg()
|
||||||
|
|
||||||
|
|
||||||
class Viv:
|
class Viv:
|
||||||
|
@ -1058,7 +1066,7 @@ class Viv:
|
||||||
|
|
||||||
def _install_local_src(self, sha256: str, src: Path, cli: Path, yes: bool) -> None:
|
def _install_local_src(self, sha256: str, src: Path, cli: Path, yes: bool) -> None:
|
||||||
echo("updating local source copy of viv")
|
echo("updating local source copy of viv")
|
||||||
shutil.copy(c.srccache / f"{sha256}.py", src)
|
shutil.copy(Cfg.srccache / f"{sha256}.py", src)
|
||||||
make_executable(src)
|
make_executable(src)
|
||||||
echo("symlinking cli")
|
echo("symlinking cli")
|
||||||
|
|
||||||
|
@ -1077,7 +1085,7 @@ class Viv:
|
||||||
)
|
)
|
||||||
|
|
||||||
def _get_new_version(self, ref: str) -> Tuple[str, str]:
|
def _get_new_version(self, ref: str) -> Tuple[str, str]:
|
||||||
sys.path.append(str(c.srccache))
|
sys.path.append(str(Cfg.srccache))
|
||||||
return (sha256 := fetch_source(ref)), __import__(sha256).__version__
|
return (sha256 := fetch_source(ref)), __import__(sha256).__version__
|
||||||
|
|
||||||
def manage(self, args: Namespace) -> None:
|
def manage(self, args: Namespace) -> None:
|
||||||
|
@ -1137,11 +1145,11 @@ class Viv:
|
||||||
|
|
||||||
elif args.subcmd == "purge":
|
elif args.subcmd == "purge":
|
||||||
to_remove = []
|
to_remove = []
|
||||||
if c._cache.is_dir():
|
if Cfg._cache.is_dir():
|
||||||
to_remove.append(c._cache)
|
to_remove.append(Cfg._cache)
|
||||||
if args.src.is_file():
|
if args.src.is_file():
|
||||||
to_remove.append(
|
to_remove.append(
|
||||||
args.src.parent if args.src == c.srcdefault else args.src
|
args.src.parent if args.src == Cfg.srcdefault else args.src
|
||||||
)
|
)
|
||||||
if self.local_source and self.local_source.is_file():
|
if self.local_source and self.local_source.is_file():
|
||||||
if self.local_source.parent.name == "viv":
|
if self.local_source.parent.name == "viv":
|
||||||
|
@ -1183,7 +1191,7 @@ class Viv:
|
||||||
"""
|
"""
|
||||||
default_bin, bin = self._pick_bin(args)
|
default_bin, bin = self._pick_bin(args)
|
||||||
output = (
|
output = (
|
||||||
c.binparent / default_bin if not args.output else args.output.absolute()
|
Cfg.binparent / default_bin if not args.output else args.output.absolute()
|
||||||
)
|
)
|
||||||
|
|
||||||
if output.is_file():
|
if output.is_file():
|
||||||
|
@ -1362,7 +1370,7 @@ class Cli:
|
||||||
"-s",
|
"-s",
|
||||||
"--src",
|
"--src",
|
||||||
help="path/to/source_file",
|
help="path/to/source_file",
|
||||||
default=c.srcdefault,
|
default=Cfg.srcdefault,
|
||||||
metavar="<src>",
|
metavar="<src>",
|
||||||
),
|
),
|
||||||
Arg(
|
Arg(
|
||||||
|
|
Loading…
Reference in a new issue