Added version
Some checks failed
Test before pr merge / test-lint (pull_request) Failing after 8s

This commit is contained in:
2025-10-09 20:51:17 +02:00
parent c4334f32ed
commit a8cd40df20
8 changed files with 114 additions and 4 deletions

View File

@@ -36,6 +36,12 @@ jobs:
echo "Set version to $(cat /workspace/sh-edraft.de/cpl/version.txt)" echo "Set version to $(cat /workspace/sh-edraft.de/cpl/version.txt)"
cat pyproject.toml cat pyproject.toml
- name: Set package version
run: |
sed -i -E "s/^__version__ = \".*\"/__version__ = \"$(cat /workspace/sh-edraft.de/cpl/version.txt)\"/" cpl/*/__init__.py
echo "Set version to $(cat /workspace/sh-edraft.de/cpl/version.txt)"
cat cpl/*/__init__.py
- name: Set pip conf - name: Set pip conf
run: | run: |
cat > .pip.conf <<'EOF' cat > .pip.conf <<'EOF'

View File

@@ -0,0 +1 @@
__version__ = "1.0.0"

View File

@@ -0,0 +1,27 @@
import platform
import cpl
from cpl.cli.cli import cli
from cpl.cli.utils.pip import Pip
from cpl.core.console import Console, ForegroundColorEnum
@cli.command("version", aliases=["v"])
def version():
Console.set_foreground_color(ForegroundColorEnum.yellow)
Console.banner("CPL CLI")
Console.set_foreground_color(ForegroundColorEnum.default)
Console.write_line()
Console.write_line(f"CPL CLI: {getattr(cpl.cli, '__version__', "1.0")}")
Console.write_line(f"Python: {platform.python_version()}")
Console.write_line(f"PIP: {Pip.get_pip_version()}")
Console.write_line(f"OS: {platform.system()} {platform.release()}")
Console.write_line("\nCPL Packages:\n")
cpl_packages = {n: v for n, v in Pip.get_packages().items() if n.startswith("cpl-")}
if len(cpl_packages) == 0:
Console.write_line("No CPL packages installed")
return
Console.table(["Package", "Version"], [[n, v] for n, v in cpl_packages.items()])

View File

@@ -6,6 +6,7 @@ from cpl.cli.command.init import init
from cpl.cli.command.install import install from cpl.cli.command.install import install
from cpl.cli.command.uninstall import uninstall from cpl.cli.command.uninstall import uninstall
from cpl.cli.command.update import update from cpl.cli.command.update import update
from cpl.cli.command.version import version
from cpl.cli.model.workspace import Workspace from cpl.cli.model.workspace import Workspace
from cpl.cli.utils.custom_command import script_command from cpl.cli.utils.custom_command import script_command
from cpl.core.configuration import Configuration from cpl.core.configuration import Configuration
@@ -42,10 +43,23 @@ def prepare():
def configure(): def configure():
# cli
cli.add_command(version)
# structure
cli.add_command(init) cli.add_command(init)
# cli.add_command(new)
# packaging
cli.add_command(install) cli.add_command(install)
cli.add_command(uninstall) cli.add_command(uninstall)
cli.add_command(update) cli.add_command(update)
# cli.add_command(add)
# cli.add_command(remove)
# run
# cli.add_command(run)
# cli.add_command(start)
def main(): def main():

View File

@@ -132,4 +132,45 @@ class Pip:
except subprocess.CalledProcessError: except subprocess.CalledProcessError:
return None return None
return None return None
@staticmethod
def get_packages(path: str=None):
venv_path = ensure_venv(Path(path or './'))
pip = get_venv_pip(venv_path)
try:
result = subprocess.run(
f"{pip} list --format=freeze",
shell=True,
check=True,
capture_output=True,
text=True,
stdin=subprocess.DEVNULL,
)
packages = {}
for line in result.stdout.splitlines():
if "==" in line:
name, version = line.split("==", 1)
packages[name] = version
return packages
except subprocess.CalledProcessError:
return {}
@staticmethod
def get_pip_version(path: str=None) -> str | None:
venv_path = ensure_venv(Path(path or './'))
pip = get_venv_pip(venv_path)
try:
result = subprocess.run(
f"{pip} --version",
shell=True,
check=True,
capture_output=True,
text=True,
stdin=subprocess.DEVNULL,
)
version = result.stdout.split()[1]
return version
except subprocess.CalledProcessError:
return None

View File

@@ -0,0 +1 @@
__version__ = "1.0.0"

View File

@@ -1,4 +1,5 @@
import os import os
import shutil
import sys import sys
import multiprocessing import multiprocessing
import time import time
@@ -56,9 +57,8 @@ class Spinner(Process):
if sys.platform == "win32": if sys.platform == "win32":
columns = os.get_terminal_size().columns columns = os.get_terminal_size().columns
else: else:
values = os.popen("stty size", "r").read().split() size = shutil.get_terminal_size(fallback=(80, 24))
term_rows, term_columns = values if len(values) == 2 else (0, 0) columns = max(1, size.columns)
columns = int(term_columns)
end_msg = "done" end_msg = "done"

View File

@@ -1,4 +1,5 @@
import os import os
import shutil
import sys import sys
import time import time
from collections.abc import Callable from collections.abc import Callable
@@ -251,6 +252,25 @@ class Console:
Console.read() Console.read()
sys.exit() sys.exit()
@classmethod
def divider(cls, char: str = "-"):
r"""Prints a divider line
Parameter:
char: :class:`str`
Character to use for the divider
"""
if cls._disabled:
return
if cls._hold_back:
cls._hold_back_calls.append(ConsoleCall(cls.divider, char))
return
size = shutil.get_terminal_size(fallback=(80, 24))
columns = max(1, size.columns)
cls.write_line(char * columns)
@classmethod @classmethod
def disable(cls): def disable(cls):
r"""Disables console interaction""" r"""Disables console interaction"""