summaryrefslogtreecommitdiff
path: root/src/caelestia/utils/version.py
blob: 8f9ccbae7c68b4dc9567eabd54eecb05e1b0a8a7 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
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:])