Compare commits

...

19 commits

Author SHA1 Message Date
ae015fdfc4
tasks/link
Some checks failed
/ arch (push) Failing after 14s
/ alpine (push) Failing after 11s
/ fedora (push) Failing after 13s
/ opensuse (push) Failing after 10s
/ alma (push) Failing after 11s
/ rocky (push) Failing after 10s
/ ubuntu (push) Failing after 10s
/ debian (push) Failing after 12s
2024-09-15 22:44:49 +02:00
69b06db6ad
pydoclint 2024-09-15 15:04:52 +02:00
b112043e10
pyproject/pydoclint 2024-09-15 15:03:31 +02:00
725bf8b981
projects/repr 2024-09-15 01:19:51 +02:00
d3d09445a0
project/repr 2024-09-15 01:14:39 +02:00
e0da3ad50c
%s 2024-09-15 01:00:17 +02:00
844543f755
×4 cyclic 2024-09-15 00:43:23 +02:00
10941ad0d8
step/upper 2024-09-15 00:09:47 +02:00
201ba91e00
rename 2024-09-15 00:03:48 +02:00
c7cb8316e9
pylint 2024-09-14 21:48:38 +02:00
400fefeecc
self/:useless 2024-09-14 15:55:12 +02:00
4bd86a8880
shell/step 2024-09-14 11:36:14 +02:00
bfc4538dcf
main/importlib
Some checks failed
/ arch (push) Successful in 3m1s
/ alpine (push) Successful in 1m59s
/ fedora (push) Successful in 15m45s
/ opensuse (push) Successful in 4m57s
/ alma (push) Successful in 12m45s
/ rocky (push) Successful in 13m51s
/ ubuntu (push) Successful in 10m53s
/ debian (push) Failing after 6m59s
2024-09-14 03:28:35 +02:00
a9fa0d911d
shell/env
Some checks failed
/ arch (push) Failing after 3m14s
/ alpine (push) Failing after 2m25s
/ fedora (push) Has started running
/ debian (push) Has been cancelled
/ opensuse (push) Has been cancelled
/ ubuntu (push) Has been cancelled
/ alma (push) Has been cancelled
/ rocky (push) Has been cancelled
2024-09-14 03:17:28 +02:00
3e85c6e421
mypy
Some checks failed
/ arch (push) Failing after 1m34s
/ alpine (push) Failing after 41s
/ fedora (push) Failing after 8m39s
/ debian (push) Failing after 7m48s
/ opensuse (push) Failing after 2m46s
/ alma (push) Has been cancelled
/ ubuntu (push) Has been cancelled
/ rocky (push) Has been cancelled
2024-09-14 02:44:50 +02:00
96d08df70d
env/init,cmd,util 2024-09-14 01:42:36 +02:00
051c91a195
env/main 2024-09-14 01:24:43 +02:00
6142dd763d
shadow 2024-09-14 00:35:47 +02:00
eda963ba49
mypy/project,util 2024-09-14 00:33:55 +02:00
9 changed files with 62 additions and 34 deletions

View file

@ -31,6 +31,11 @@ requires-python = ">= 3.11"
[tool.hatch.version]
path = "spcd/__init__.py"
[tool.pydoclint]
allow-init-docstring = true
skip-checking-short-docstrings = false
style = "sphinx"
[tool.ruff]
line-length = 80

View file

@ -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

View file

@ -6,13 +6,13 @@ import sys
from os import environ, pathsep
from pathlib import Path
import env
from rwx import fs
from rwx.log import stream as log
from rwx.ps import run
from spcd import cmd
from spcd.ci import project, projects
from spcd.shell import env
from spcd.util import browse, cat, split, step
COMMANDS_PREFIX = "spcd-"
@ -26,10 +26,10 @@ def clone_project_branch() -> None:
split()
log.info(project)
split()
log.info(f"""\
{project.url}
log.info("""\
%s
""")
""", project.url)
run(
"git",
"clone",
@ -37,7 +37,7 @@ def clone_project_branch() -> None:
project.branch,
"--",
project.url,
project.root,
str(project.root),
)
@ -66,6 +66,8 @@ def install_python_packages() -> None:
"hatch",
"mypy",
"pelican",
"pydoclint",
"pylint",
"pytest",
"ruff",
"sphinx",
@ -82,12 +84,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,11 +100,11 @@ def main(main: str) -> None:
list_environment_variables()
clone_project_branch()
set_ssh()
install_commands(main)
install_commands(main_file)
install_python_packages()
else:
function = getattr(cmd, name.replace("-", "_"))
function(*arguments)
f = getattr(cmd, name.replace("-", "_"))
f(*arguments)
def set_ssh() -> None:

View file

@ -2,11 +2,11 @@
"""Entry point."""
import importlib
import sys
import env
if __name__ == "__main__":
env = importlib.import_module("env")
if env.SPCD_PYTHON_VENV_PACKAGES not in sys.path:
sys.path.insert(0, env.SPCD_PYTHON_VENV_PACKAGES)
from spcd import main

View file

@ -3,10 +3,10 @@
import os
from pathlib import Path
import env
from rwx import ps
from spcd.ci import project, projects
from spcd.shell import env
from spcd.util import browse
@ -18,12 +18,10 @@ def spcd_browse_workspace() -> None:
def spcd_build_project() -> None:
"""Perform the actual building process."""
for extension in ["py", "sh"]:
path = Path(project.root) / f"build.{extension}"
path = project.root / f"build.{extension}"
if path.exists():
ps.run(path)
ps.run(str(path))
break
else:
pass
def spcd_check_project() -> None:

View file

@ -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
@ -41,11 +41,15 @@ class Project:
# root
for variable in ROOT:
if value := projects.environment.get(variable, None):
self.root = value
self.root = Path(value)
# 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}

View file

@ -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,7 +34,11 @@ class Projects:
if value := self.environment.get(variable, None):
self.url = add_url_path(value, self.group)
def __str__(self: Projects) -> str:
def __repr__(self) -> str:
"""Represent projects."""
return "Projects()"
def __str__(self) -> str:
"""List group, name & url."""
return f"""\
group = {self.group}

10
spcd/shell.py Normal file
View file

@ -0,0 +1,10 @@
"""Shell for environment module."""
import importlib
env = importlib.import_module("env")
try:
STEP = int(env.SPCD_STEP)
except AttributeError:
STEP = 1

View file

@ -4,10 +4,12 @@ import os
from pathlib import Path
from urllib.parse import urlparse, urlunparse
import env
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."""
@ -16,7 +18,7 @@ def add_url_path(url: str, extra_path: str) -> str:
return urlunparse(parts)
def browse(root: str) -> None:
def browse(root: Path) -> None:
"""Frame the browsing of a root directory in the log output."""
paths = []
for directory, _, files in os.walk(root):
@ -24,27 +26,29 @@ def browse(root: str) -> None:
absolute_path = Path(directory) / file
relative_path = os.path.relpath(absolute_path, start=root)
paths.append(relative_path)
frame(root)
text = str(root)
frame(text)
for path in sorted(paths):
log.info(path)
shut(root)
shut(text)
def cat(file: str) -> None:
def cat(file: Path) -> None:
"""Frame the content of a file in the log output."""
frame(file)
text = str(file)
frame(text)
log.info(fs.read_file_text(file).rstrip())
shut(file)
shut(text)
def frame(text: str) -> None:
"""Open a new frame in the log output."""
log.info(f"{env.SPCD_OPEN}{text}")
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}")
log.info("%s%s", env.SPCD_SHUT, text)
def split() -> None:
@ -54,7 +58,7 @@ def split() -> None:
def step(text: str) -> None:
"""Increment the step number of the current build process."""
env.SPCD_STEP += 1
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)