Compare commits
18 commits
bfc4538dcf
...
f0aa902904
Author | SHA1 | Date | |
---|---|---|---|
f0aa902904 | |||
0d1ad96295 | |||
ac72fb1331 | |||
7251ca35fa | |||
40bb13c39a | |||
ba8c9baa54 | |||
ae015fdfc4 | |||
69b06db6ad | |||
b112043e10 | |||
725bf8b981 | |||
d3d09445a0 | |||
e0da3ad50c | |||
844543f755 | |||
10941ad0d8 | |||
201ba91e00 | |||
c7cb8316e9 | |||
400fefeecc | |||
4bd86a8880 |
7 changed files with 84 additions and 22 deletions
|
@ -31,6 +31,12 @@ requires-python = ">= 3.11"
|
|||
[tool.hatch.version]
|
||||
path = "spcd/__init__.py"
|
||||
|
||||
[tool.pydoclint]
|
||||
allow-init-docstring = true
|
||||
quiet = true
|
||||
skip-checking-short-docstrings = false
|
||||
style = "sphinx"
|
||||
|
||||
[tool.ruff]
|
||||
line-length = 80
|
||||
|
||||
|
|
|
@ -286,6 +286,7 @@ Handle project workflows in a unified way:
|
|||
* automate versions fetching
|
||||
* gource, xvfb, xauth
|
||||
* handle openh264 repositories
|
||||
* link from workspace to actions root
|
||||
* rpm fusion
|
||||
* tex
|
||||
* translate to french
|
||||
|
|
|
@ -26,10 +26,13 @@ def clone_project_branch() -> None:
|
|||
split()
|
||||
log.info(project)
|
||||
split()
|
||||
log.info(f"""\
|
||||
{project.url}
|
||||
log.info(
|
||||
"""\
|
||||
%s
|
||||
↓
|
||||
""")
|
||||
""",
|
||||
project.url,
|
||||
)
|
||||
run(
|
||||
"git",
|
||||
"clone",
|
||||
|
@ -66,6 +69,8 @@ def install_python_packages() -> None:
|
|||
"hatch",
|
||||
"mypy",
|
||||
"pelican",
|
||||
"pydoclint",
|
||||
"pylint",
|
||||
"pytest",
|
||||
"ruff",
|
||||
"sphinx",
|
||||
|
@ -82,12 +87,12 @@ def list_environment_variables() -> None:
|
|||
step("List environment variables")
|
||||
for variable, value in sorted(projects.environment.items()):
|
||||
if variable not in ["SPCD", "SPCD_SSH_KEY"]:
|
||||
log.info(f"{variable} = {value}")
|
||||
log.info("%s = %s", variable, value)
|
||||
else:
|
||||
log.info(f"{variable}")
|
||||
log.info("%s", variable)
|
||||
|
||||
|
||||
def main(main: str) -> None:
|
||||
def main(main_file: str) -> None:
|
||||
"""Entry point to initialize environment or run a specific command."""
|
||||
paths = environ["PATH"].split(pathsep)
|
||||
if env.SPCD_PYTHON_VENV_BINARIES not in paths:
|
||||
|
@ -98,7 +103,7 @@ def main(main: str) -> None:
|
|||
list_environment_variables()
|
||||
clone_project_branch()
|
||||
set_ssh()
|
||||
install_commands(main)
|
||||
install_commands(main_file)
|
||||
install_python_packages()
|
||||
else:
|
||||
f = getattr(cmd, name.replace("-", "_"))
|
||||
|
|
|
@ -27,7 +27,7 @@ ROOT = [
|
|||
class Project:
|
||||
"""Current project."""
|
||||
|
||||
def __init__(self: Project, projects: Projects) -> None:
|
||||
def __init__(self, projects: Projects) -> None:
|
||||
"""Set projects, branch, name, root & url."""
|
||||
self.projects = projects
|
||||
# branch
|
||||
|
@ -45,7 +45,11 @@ class Project:
|
|||
# url
|
||||
self.url = add_url_path(projects.url, self.name)
|
||||
|
||||
def __str__(self: Project) -> str:
|
||||
def __repr__(self) -> str:
|
||||
"""Represent project."""
|
||||
return f"Project(projects={self.projects!r})"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""List branch, name, root & url."""
|
||||
return f"""\
|
||||
branch = {self.branch}
|
||||
|
|
|
@ -20,7 +20,7 @@ SERVER_URL = [
|
|||
class Projects:
|
||||
"""Other projects."""
|
||||
|
||||
def __init__(self: Projects) -> None:
|
||||
def __init__(self) -> None:
|
||||
"""Set environment, group, name & url."""
|
||||
self.environment = os.environ
|
||||
# group, name
|
||||
|
@ -34,8 +34,20 @@ class Projects:
|
|||
if value := self.environment.get(variable, None):
|
||||
self.url = add_url_path(value, self.group)
|
||||
|
||||
def __str__(self: Projects) -> str:
|
||||
"""List group, name & url."""
|
||||
def __repr__(self) -> str:
|
||||
"""Represent projects.
|
||||
|
||||
:return: representation
|
||||
:rtype: str
|
||||
"""
|
||||
return "Projects()"
|
||||
|
||||
def __str__(self) -> str:
|
||||
"""List group, name & url.
|
||||
|
||||
:return: string
|
||||
:rtype: str
|
||||
"""
|
||||
return f"""\
|
||||
group = {self.group}
|
||||
name = {self.name}
|
||||
|
|
|
@ -3,3 +3,8 @@
|
|||
import importlib
|
||||
|
||||
env = importlib.import_module("env")
|
||||
|
||||
try:
|
||||
STEP = int(env.SPCD_STEP)
|
||||
except AttributeError:
|
||||
STEP = 1
|
||||
|
|
49
spcd/util.py
49
spcd/util.py
|
@ -7,18 +7,31 @@ from urllib.parse import urlparse, urlunparse
|
|||
from rwx import fs
|
||||
from rwx.log import stream as log
|
||||
|
||||
from spcd import shell
|
||||
from spcd.shell import env
|
||||
|
||||
|
||||
def add_url_path(url: str, extra_path: str) -> str:
|
||||
"""Append an extra segment to an existing URL."""
|
||||
"""Append an extra segment to an existing URL.
|
||||
|
||||
:param url: base URL
|
||||
:type url: str
|
||||
:param extra_path: path to append
|
||||
:type extra_path: str
|
||||
:return: new URL
|
||||
:rtype: str
|
||||
"""
|
||||
parts = urlparse(url)
|
||||
parts = parts._replace(path=str(Path(parts.path) / extra_path))
|
||||
return urlunparse(parts)
|
||||
|
||||
|
||||
def browse(root: Path) -> None:
|
||||
"""Frame the browsing of a root directory in the log output."""
|
||||
"""Frame the browsing of a root directory in the log output.
|
||||
|
||||
:param root: directory to browse
|
||||
:type root: Path
|
||||
"""
|
||||
paths = []
|
||||
for directory, _, files in os.walk(root):
|
||||
for file in files:
|
||||
|
@ -33,7 +46,11 @@ def browse(root: Path) -> None:
|
|||
|
||||
|
||||
def cat(file: Path) -> None:
|
||||
"""Frame the content of a file in the log output."""
|
||||
"""Frame the content of a file in the log output.
|
||||
|
||||
:param file: file to read the content from
|
||||
:type file: Path
|
||||
"""
|
||||
text = str(file)
|
||||
frame(text)
|
||||
log.info(fs.read_file_text(file).rstrip())
|
||||
|
@ -41,13 +58,21 @@ def cat(file: Path) -> None:
|
|||
|
||||
|
||||
def frame(text: str) -> None:
|
||||
"""Open a new frame in the log output."""
|
||||
log.info(f"{env.SPCD_OPEN}{text}")
|
||||
"""Open a new frame in the log output.
|
||||
|
||||
:param text: text to start the frame with
|
||||
:type text: str
|
||||
"""
|
||||
log.info("%s%s", env.SPCD_OPEN, text)
|
||||
|
||||
|
||||
def shut(text: str) -> None:
|
||||
"""Close current frame in the log output."""
|
||||
log.info(f"{env.SPCD_SHUT}{text}")
|
||||
"""Close current frame in the log output.
|
||||
|
||||
:param text: text to shut the frame with
|
||||
:type text: str
|
||||
"""
|
||||
log.info("%s%s", env.SPCD_SHUT, text)
|
||||
|
||||
|
||||
def split() -> None:
|
||||
|
@ -56,8 +81,12 @@ def split() -> None:
|
|||
|
||||
|
||||
def step(text: str) -> None:
|
||||
"""Increment the step number of the current build process."""
|
||||
env.SPCD_STEP += 1
|
||||
"""Increment the step number of the current build process.
|
||||
|
||||
:param text: text to display
|
||||
:type text: str
|
||||
"""
|
||||
shell.STEP += 1
|
||||
log.info(env.SPCD_DOWN)
|
||||
log.info(f"{env.SPCD_VERT} {env.SPCD_STEP} {text}")
|
||||
log.info("%s %s %s", env.SPCD_VERT, shell.STEP, text)
|
||||
log.info(env.SPCD___UP)
|
||||
|
|
Loading…
Reference in a new issue