spcd/spcd/util.py
2024-08-19 17:20:41 +02:00

60 lines
1.5 KiB
Python

"""Basic utilities."""
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
def add_url_path(url: str, extra_path: str) -> str:
"""Append an extra segment to an existing URL."""
parts = urlparse(url)
parts = parts._replace(path=str(Path(parts.path) / extra_path))
return urlunparse(parts)
def browse(root: str) -> None:
"""Frame the browsing of a root directory in the log output."""
paths = []
for directory, _, files in os.walk(root):
for file in files:
absolute_path = Path(directory) / file
relative_path = os.path.relpath(absolute_path, start=root)
paths.append(relative_path)
frame(root)
for path in sorted(paths):
log.info(path)
shut(root)
def cat(file: str) -> None:
"""Frame the content of a file in the log output."""
frame(file)
log.info(fs.read_file_text(file).rstrip())
shut(file)
def frame(text: str) -> None:
"""Open a new frame in the log output."""
log.info(f"{env.SPCD_OPEN}{text}")
def shut(text: str) -> None:
"""Close current frame in the log output."""
log.info(f"{env.SPCD_SHUT}{text}")
def split() -> None:
"""Separate previous log outputs from the ones following."""
log.info(env.SPCD_SPLT)
def step(text: str) -> None:
"""Increment the step number of the current build process."""
env.SPCD_STEP += 1
log.info(env.SPCD_DOWN)
log.info(f"{env.SPCD_VERT} {env.SPCD_STEP} {text}")
log.info(env.SPCD___UP)