From 1e7458a1eb2c076a99be8b46d205a56ad1dcf810 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Mon, 24 Jun 2024 15:19:58 +0200 Subject: [PATCH 1/4] cmd --- pidd/cmd.py | 168 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 168 insertions(+) create mode 100644 pidd/cmd.py diff --git a/pidd/cmd.py b/pidd/cmd.py new file mode 100644 index 0000000..b121df6 --- /dev/null +++ b/pidd/cmd.py @@ -0,0 +1,168 @@ +"""Python Integration, Delivery & Deployment.""" + +__version__ = "0.0.1" + +import os +import sys +from pathlib import Path + +import env +from rwx import fs, ps +from rwx.log import stream as log + +import pidd +from pidd.project import Project +from pidd.projects import Projects + +COMMANDS_PREFIX = "pidd-" + +projects = Projects() +project = Project(projects) + + +def pidd_browse_workspace() -> None: + browse(project.root) + + +def pidd_build_project() -> None: + for extension in ["py", "sh"]: + path = Path(project.root) / f"build.{extension}" + if path.exists(): + ps.run(path) + break + else: + pass + + +def pidd_clone_branch() -> None: + log.info(projects) + split() + log.info(project) + split() + log.info(f"""\ +{project.url} +↓ +""") + ps.run( + "git", + "clone", + "--branch", + project.branch, + "--", + project.url, + project.root, + ) + + +def pidd_list_environment() -> None: + for variable, value in sorted(projects.environment.items()): + log.info(f"{variable} = {value}") + + +def pidd_synchronize() -> None: + host = "rwx.work" + source = "out" + user = "cd" + # + root = Path(os.sep) / user / project.branch / projects.group / project.name + # + target = f"{user}@{host}:{root}" + ps.run( + "rsync", + "--archive", + "--delete-before", + "--verbose", + f"{source}/", + f"{target}/", + "--dry-run", + ) + + +def browse(root: str) -> None: + 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(file) + log.info(fs.read_file_text(file).rstrip()) + shut(file) + + +def install_commands(path: str) -> None: + step("Install commands") + user = Path("/usr/local/bin") + for command in [ + "browse-workspace", + "build-project", + "clone-branch", + "list-environment", + "synchronize", + ]: + log.info(command) + (user / f"{COMMANDS_PREFIX}{command}").symlink_to(path) + + +def main(main: str) -> None: + path, *arguments = sys.argv + name = Path(path).name + if name == "__main__.py": + pidd.set_ssh(*arguments) + pidd.install_commands(main) + else: + function = getattr(pidd, name.replace("-", "_")) + function(*arguments) + + +def set_ssh(*arguments: list[str]) -> None: + step("Set SSH") + # + ssh_key, ssh_hosts = arguments + # + ssh_type = "ed25519" + # + home = Path("~").expanduser() + # + ssh = home / ".ssh" + ssh.mkdir(exist_ok=True, parents=True) + ssh.chmod(0o700) + # + key = ssh / f"id_{ssh_type}" + if ssh_key: + fs.write(key, ssh_key) + key.chmod(0o400) + # + known = ssh / "known_hosts" + if ssh_hosts: + fs.write(known, ssh_hosts) + known.chmod(0o400) + # + browse(ssh) + cat(known) + + +def frame(text: str) -> None: + log.info(f"{env.PIDD_OPEN}{text}") + + +def shut(text: str) -> None: + log.info(f"{env.PIDD_SHUT}{text}") + + +def split() -> None: + log.info(env.PIDD_SPLT) + + +def step(text: str) -> None: + env.PIDD_STEP += 1 + log.info(env.PIDD_DOWN) + log.info(f"{env.PIDD_VERT} {env.PIDD_STEP} {text}") + log.info(env.PIDD___UP) From 42dd496a7f70d4a4d3435d9931e88da193b34fe2 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Mon, 24 Jun 2024 15:27:49 +0200 Subject: [PATCH 2/4] cut --- pidd/__init__.py | 58 ------------------------ pidd/cmd.py | 112 ----------------------------------------------- 2 files changed, 170 deletions(-) diff --git a/pidd/__init__.py b/pidd/__init__.py index b121df6..33b89bf 100644 --- a/pidd/__init__.py +++ b/pidd/__init__.py @@ -20,64 +20,6 @@ projects = Projects() project = Project(projects) -def pidd_browse_workspace() -> None: - browse(project.root) - - -def pidd_build_project() -> None: - for extension in ["py", "sh"]: - path = Path(project.root) / f"build.{extension}" - if path.exists(): - ps.run(path) - break - else: - pass - - -def pidd_clone_branch() -> None: - log.info(projects) - split() - log.info(project) - split() - log.info(f"""\ -{project.url} -↓ -""") - ps.run( - "git", - "clone", - "--branch", - project.branch, - "--", - project.url, - project.root, - ) - - -def pidd_list_environment() -> None: - for variable, value in sorted(projects.environment.items()): - log.info(f"{variable} = {value}") - - -def pidd_synchronize() -> None: - host = "rwx.work" - source = "out" - user = "cd" - # - root = Path(os.sep) / user / project.branch / projects.group / project.name - # - target = f"{user}@{host}:{root}" - ps.run( - "rsync", - "--archive", - "--delete-before", - "--verbose", - f"{source}/", - f"{target}/", - "--dry-run", - ) - - def browse(root: str) -> None: paths = [] for directory, _, files in os.walk(root): diff --git a/pidd/cmd.py b/pidd/cmd.py index b121df6..94feebc 100644 --- a/pidd/cmd.py +++ b/pidd/cmd.py @@ -1,25 +1,3 @@ -"""Python Integration, Delivery & Deployment.""" - -__version__ = "0.0.1" - -import os -import sys -from pathlib import Path - -import env -from rwx import fs, ps -from rwx.log import stream as log - -import pidd -from pidd.project import Project -from pidd.projects import Projects - -COMMANDS_PREFIX = "pidd-" - -projects = Projects() -project = Project(projects) - - def pidd_browse_workspace() -> None: browse(project.root) @@ -76,93 +54,3 @@ def pidd_synchronize() -> None: f"{target}/", "--dry-run", ) - - -def browse(root: str) -> None: - 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(file) - log.info(fs.read_file_text(file).rstrip()) - shut(file) - - -def install_commands(path: str) -> None: - step("Install commands") - user = Path("/usr/local/bin") - for command in [ - "browse-workspace", - "build-project", - "clone-branch", - "list-environment", - "synchronize", - ]: - log.info(command) - (user / f"{COMMANDS_PREFIX}{command}").symlink_to(path) - - -def main(main: str) -> None: - path, *arguments = sys.argv - name = Path(path).name - if name == "__main__.py": - pidd.set_ssh(*arguments) - pidd.install_commands(main) - else: - function = getattr(pidd, name.replace("-", "_")) - function(*arguments) - - -def set_ssh(*arguments: list[str]) -> None: - step("Set SSH") - # - ssh_key, ssh_hosts = arguments - # - ssh_type = "ed25519" - # - home = Path("~").expanduser() - # - ssh = home / ".ssh" - ssh.mkdir(exist_ok=True, parents=True) - ssh.chmod(0o700) - # - key = ssh / f"id_{ssh_type}" - if ssh_key: - fs.write(key, ssh_key) - key.chmod(0o400) - # - known = ssh / "known_hosts" - if ssh_hosts: - fs.write(known, ssh_hosts) - known.chmod(0o400) - # - browse(ssh) - cat(known) - - -def frame(text: str) -> None: - log.info(f"{env.PIDD_OPEN}{text}") - - -def shut(text: str) -> None: - log.info(f"{env.PIDD_SHUT}{text}") - - -def split() -> None: - log.info(env.PIDD_SPLT) - - -def step(text: str) -> None: - env.PIDD_STEP += 1 - log.info(env.PIDD_DOWN) - log.info(f"{env.PIDD_VERT} {env.PIDD_STEP} {text}") - log.info(env.PIDD___UP) From e18bf4178ff52f91f3e1780809e4955975d0cac9 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Mon, 24 Jun 2024 15:33:12 +0200 Subject: [PATCH 3/4] imports --- pidd/__init__.py | 2 +- pidd/cmd.py | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/pidd/__init__.py b/pidd/__init__.py index 33b89bf..16fff0b 100644 --- a/pidd/__init__.py +++ b/pidd/__init__.py @@ -7,7 +7,7 @@ import sys from pathlib import Path import env -from rwx import fs, ps +from rwx import fs from rwx.log import stream as log import pidd diff --git a/pidd/cmd.py b/pidd/cmd.py index 94feebc..f86be7d 100644 --- a/pidd/cmd.py +++ b/pidd/cmd.py @@ -1,3 +1,11 @@ +import os +from pathlib import Path + +from cd import browse, project, projects +from rwx import ps, split +from rwx.log import log + + def pidd_browse_workspace() -> None: browse(project.root) From 04af7ef182cc987d37692c9ac08a87ba0fcd8035 Mon Sep 17 00:00:00 2001 From: Marc Beninca Date: Mon, 24 Jun 2024 15:34:38 +0200 Subject: [PATCH 4/4] cmd --- pidd/__init__.py | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pidd/__init__.py b/pidd/__init__.py index 16fff0b..a025f92 100644 --- a/pidd/__init__.py +++ b/pidd/__init__.py @@ -11,6 +11,7 @@ from rwx import fs from rwx.log import stream as log import pidd +from pidd import cmd from pidd.project import Project from pidd.projects import Projects @@ -60,7 +61,7 @@ def main(main: str) -> None: pidd.set_ssh(*arguments) pidd.install_commands(main) else: - function = getattr(pidd, name.replace("-", "_")) + function = getattr(cmd, name.replace("-", "_")) function(*arguments)