From 9b01d62dc169e49c168864285963829ca39d3ab7 Mon Sep 17 00:00:00 2001 From: 2 * r + 2 * t <61896496+soramanew@users.noreply.github.com> Date: Fri, 4 Jul 2025 20:45:53 +1000 Subject: feat: add version flag --- src/caelestia/__init__.py | 5 +++- src/caelestia/parser.py | 1 + src/caelestia/utils/version.py | 54 ++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 59 insertions(+), 1 deletion(-) create mode 100644 src/caelestia/utils/version.py (limited to 'src') diff --git a/src/caelestia/__init__.py b/src/caelestia/__init__.py index 7e5d49e..d1eef1e 100644 --- a/src/caelestia/__init__.py +++ b/src/caelestia/__init__.py @@ -1,9 +1,12 @@ from caelestia.parser import parse_args +from caelestia.utils.version import print_version def main() -> None: parser, args = parse_args() - if "cls" in args: + if args.version: + print_version() + elif "cls" in args: args.cls(args).run() else: parser.print_help() diff --git a/src/caelestia/parser.py b/src/caelestia/parser.py index f18b7fd..f84f991 100644 --- a/src/caelestia/parser.py +++ b/src/caelestia/parser.py @@ -8,6 +8,7 @@ from caelestia.utils.wallpaper import get_wallpaper def parse_args() -> (argparse.ArgumentParser, argparse.Namespace): parser = argparse.ArgumentParser(prog="caelestia", description="Main control script for the Caelestia dotfiles") + parser.add_argument("-v", "--version", action="store_true", help="print the current version") # Add subcommand parsers command_parser = parser.add_subparsers( diff --git a/src/caelestia/utils/version.py b/src/caelestia/utils/version.py new file mode 100644 index 0000000..8f9ccba --- /dev/null +++ b/src/caelestia/utils/version.py @@ -0,0 +1,54 @@ +import subprocess + +from caelestia.utils.paths import config_dir + + +def print_version() -> None: + print("Packages:") + pkgs = ["caelestia-shell-git", "caelestia-cli-git", "caelestia-meta"] + versions = subprocess.run(["pacman", "-Q", *pkgs], stdout=subprocess.PIPE, text=True).stdout + + for pkg in pkgs: + if pkg not in versions: + print(f" {pkg} not installed") + print("\n".join(f" {pkg}" for pkg in versions.splitlines())) + + caelestia_dir = (config_dir / "hypr").resolve().parent + print("\nCaelestia:") + caelestia_ver = subprocess.check_output( + ["git", "--git-dir", caelestia_dir / ".git", "rev-list", "--format=%B", "--max-count=1", "HEAD"], text=True + ) + print(" Last commit:", caelestia_ver.split()[1]) + print(" Commit message:", *caelestia_ver.splitlines()[1:]) + + print("\nQuickshell:") + print(" ", subprocess.check_output(["qs", "--version"], text=True).strip()) + + local_shell_dir = config_dir / "quickshell/caelestia" + if local_shell_dir.exists(): + print("\nLocal copy of shell found:") + + try: + shell_ver = subprocess.check_output( + [ + "git", + "--git-dir", + local_shell_dir / ".git", + "rev-list", + "--format=%B", + "--max-count=1", + "upstream/main", + ], + text=True, + ) + print(" Last merged upstream commit:", shell_ver.split()[1]) + print(" Commit message:", *shell_ver.splitlines()[1:]) + except subprocess.CalledProcessError: + print(" Unable to determine last merged upstream commit.") + + shell_ver = subprocess.check_output( + ["git", "--git-dir", local_shell_dir / ".git", "rev-list", "--format=%B", "--max-count=1", "HEAD"], + text=True, + ) + print("\n Last commit:", shell_ver.split()[1]) + print(" Commit message:", *shell_ver.splitlines()[1:]) -- cgit v1.2.3-freya