mirror of
https://github.com/daylinmorgan/viv.git
synced 2024-12-22 10:40:44 -06:00
fix: use correct name and static/class methods on template
This commit is contained in:
parent
1848a7edb5
commit
e151534c01
1 changed files with 40 additions and 28 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-11-g92da092-dev"
|
__version__ = "23.5a5-12-g1848a7e-dev"
|
||||||
|
|
||||||
|
|
||||||
class Spinner:
|
class Spinner:
|
||||||
|
@ -245,14 +245,6 @@ a = Ansi()
|
||||||
|
|
||||||
|
|
||||||
class Template:
|
class Template:
|
||||||
description = f"""
|
|
||||||
|
|
||||||
{a.tagline()}
|
|
||||||
to create/activate a vivenv:
|
|
||||||
- from command line: `{a.style("viv -h","bold")}`
|
|
||||||
- within python script: {a.style('__import__("viv").use("typer", "rich-click")','bold')}
|
|
||||||
"""
|
|
||||||
|
|
||||||
_standalone_func = r"""def _viv_use(*pkgs, track_exe=False, name=""):
|
_standalone_func = r"""def _viv_use(*pkgs, track_exe=False, name=""):
|
||||||
import hashlib, json, os, site, shutil, sys, venv # noqa
|
import hashlib, json, os, site, shutil, sys, venv # noqa
|
||||||
from pathlib import Path # noqa
|
from pathlib import Path # noqa
|
||||||
|
@ -292,20 +284,33 @@ to create/activate a vivenv:
|
||||||
return env
|
return env
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def noqa(self, txt: str) -> str:
|
@staticmethod
|
||||||
|
def description(name: str) -> str:
|
||||||
|
return f"""
|
||||||
|
|
||||||
|
{a.tagline()}
|
||||||
|
to create/activate a vivenv:
|
||||||
|
- from command line: `{a.bold}{name} --help{a.end}`
|
||||||
|
- within python script: {a.style('__import__("viv").use("typer", "rich-click")','bold')}
|
||||||
|
"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
|
def noqa(txt: str) -> str:
|
||||||
max_length = max(map(len, txt.splitlines()))
|
max_length = max(map(len, txt.splitlines()))
|
||||||
return "\n".join((f"{line:{max_length}} # noqa" for line in txt.splitlines()))
|
return "\n".join((f"{line:{max_length}} # noqa" for line in txt.splitlines()))
|
||||||
|
|
||||||
def _use_str(self, spec: List[str], standalone: bool = False) -> str:
|
@staticmethod
|
||||||
|
def _use_str(spec: List[str], standalone: bool = False) -> str:
|
||||||
spec_str = ", ".join(f'"{req}"' for req in spec)
|
spec_str = ", ".join(f'"{req}"' for req in spec)
|
||||||
if standalone:
|
if standalone:
|
||||||
return f"""_viv_use({fill(spec_str,width=90,subsequent_indent=" ",)})"""
|
return f"""_viv_use({fill(spec_str,width=90,subsequent_indent=" ",)})"""
|
||||||
else:
|
else:
|
||||||
return f"""__import__("viv").use({spec_str})"""
|
return f"""__import__("viv").use({spec_str})"""
|
||||||
|
|
||||||
def standalone(self, spec: List[str]) -> str:
|
@classmethod
|
||||||
|
def standalone(cls, spec: List[str]) -> str:
|
||||||
func_use = "\n".join(
|
func_use = "\n".join(
|
||||||
(self._standalone_func, self.noqa(self._use_str(spec, standalone=True)))
|
(cls._standalone_func, cls.noqa(cls._use_str(spec, standalone=True)))
|
||||||
)
|
)
|
||||||
return f"""
|
return f"""
|
||||||
# AUTOGENERATED by viv (v{__version__})
|
# AUTOGENERATED by viv (v{__version__})
|
||||||
|
@ -313,7 +318,8 @@ to create/activate a vivenv:
|
||||||
{func_use}
|
{func_use}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def _rel_import(self, local_source: Optional[Path]) -> str:
|
@staticmethod
|
||||||
|
def _rel_import(local_source: Optional[Path]) -> str:
|
||||||
if not local_source:
|
if not local_source:
|
||||||
raise ValueError("local source must exist")
|
raise ValueError("local source must exist")
|
||||||
|
|
||||||
|
@ -325,29 +331,32 @@ to create/activate a vivenv:
|
||||||
f""".path.expanduser("{path_to_viv}")) # noqa"""
|
f""".path.expanduser("{path_to_viv}")) # noqa"""
|
||||||
)
|
)
|
||||||
|
|
||||||
def _absolute_import(self, local_source: Optional[Path]) -> str:
|
@staticmethod
|
||||||
|
def _absolute_import(local_source: Optional[Path]) -> str:
|
||||||
if not local_source:
|
if not local_source:
|
||||||
raise ValueError("local source must exist")
|
raise ValueError("local source must exist")
|
||||||
|
|
||||||
path_to_viv = local_source.resolve().absolute().parent.parent
|
path_to_viv = local_source.resolve().absolute().parent.parent
|
||||||
return f"""__import__("sys").path.append("{path_to_viv}") # noqa"""
|
return f"""__import__("sys").path.append("{path_to_viv}") # noqa"""
|
||||||
|
|
||||||
|
@classmethod
|
||||||
def frozen_import(
|
def frozen_import(
|
||||||
self, path: str, local_source: Optional[Path], spec: List[str]
|
cls, path: str, local_source: Optional[Path], spec: List[str]
|
||||||
) -> str:
|
) -> str:
|
||||||
if path == "abs":
|
if path == "abs":
|
||||||
imports = self._absolute_import(local_source)
|
imports = cls._absolute_import(local_source)
|
||||||
elif path == "rel":
|
elif path == "rel":
|
||||||
imports = self._rel_import(local_source)
|
imports = cls._rel_import(local_source)
|
||||||
else:
|
else:
|
||||||
imports = ""
|
imports = ""
|
||||||
return f"""\
|
return f"""\
|
||||||
{imports}
|
{imports}
|
||||||
{self.noqa(self._use_str(spec))}
|
{cls.noqa(cls._use_str(spec))}
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@classmethod
|
||||||
def shim(
|
def shim(
|
||||||
self,
|
cls,
|
||||||
path: str,
|
path: str,
|
||||||
local_source: Optional[Path],
|
local_source: Optional[Path],
|
||||||
standalone: bool,
|
standalone: bool,
|
||||||
|
@ -355,11 +364,11 @@ to create/activate a vivenv:
|
||||||
bin: str,
|
bin: str,
|
||||||
) -> str:
|
) -> str:
|
||||||
if standalone:
|
if standalone:
|
||||||
imports = self._standalone_func
|
imports = cls._standalone_func
|
||||||
elif path == "abs":
|
elif path == "abs":
|
||||||
imports = self._absolute_import(local_source)
|
imports = cls._absolute_import(local_source)
|
||||||
elif path == "rel":
|
elif path == "rel":
|
||||||
imports = self._rel_import(local_source)
|
imports = cls._rel_import(local_source)
|
||||||
else:
|
else:
|
||||||
imports = ""
|
imports = ""
|
||||||
return f"""\
|
return f"""\
|
||||||
|
@ -372,12 +381,13 @@ import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
vivenv = {self.noqa(self._use_str(spec, standalone))}
|
vivenv = {cls.noqa(cls._use_str(spec, standalone))}
|
||||||
sys.exit(subprocess.run([vivenv / "bin" / "{bin}", *sys.argv[1:]]).returncode)
|
sys.exit(subprocess.run([vivenv / "bin" / "{bin}", *sys.argv[1:]]).returncode)
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def update(
|
def update(
|
||||||
self, src: Optional[Path], cli: Path, local_version: str, next_version: str
|
src: Optional[Path], cli: Path, local_version: str, next_version: str
|
||||||
) -> str:
|
) -> str:
|
||||||
return f"""
|
return f"""
|
||||||
Update source at {a.green}{src}{a.end}
|
Update source at {a.green}{src}{a.end}
|
||||||
|
@ -386,15 +396,17 @@ if __name__ == "__main__":
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
def install(self, src: Path, cli: Path) -> str:
|
@staticmethod
|
||||||
|
def install(src: Path, cli: Path) -> str:
|
||||||
return f"""
|
return f"""
|
||||||
Install viv.py to {a.green}{src}{a.end}
|
Install viv.py to {a.green}{src}{a.end}
|
||||||
Symlink {a.bold}{src}{a.end} to {a.bold}{cli}{a.end}
|
Symlink {a.bold}{src}{a.end} to {a.bold}{cli}{a.end}
|
||||||
|
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
@staticmethod
|
||||||
def show(
|
def show(
|
||||||
self, cli: Optional[Path | str], running: Path, local: Optional[Path | str]
|
cli: Optional[Path | str], running: Path, local: Optional[Path | str]
|
||||||
) -> str:
|
) -> str:
|
||||||
return (
|
return (
|
||||||
"\n".join(
|
"\n".join(
|
||||||
|
@ -1524,7 +1536,7 @@ class Cli:
|
||||||
|
|
||||||
def __init__(self, viv: Viv) -> None:
|
def __init__(self, viv: Viv) -> None:
|
||||||
self.viv = viv
|
self.viv = viv
|
||||||
self.parser = ArgumentParser(prog=viv.name, description=t.description)
|
self.parser = ArgumentParser(prog=viv.name, description=t.description(viv.name))
|
||||||
self._cmd_arg_group_map()
|
self._cmd_arg_group_map()
|
||||||
self.parsers = self._make_parsers()
|
self.parsers = self._make_parsers()
|
||||||
self._add_args()
|
self._add_args()
|
||||||
|
|
Loading…
Reference in a new issue