~kris/dots

srice

srice/.local/bin/dev/deps -rw-r--r-- 1.9 KiB
e98f3b03 — Kris Yotam chore: sync local state after restore (push updates, no pull) a month ago
                                                                                
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
55
#!/bin/sh
# deps -- enumerate all installed software on this system
# outputs one line per dep: NAME<tab>VERSION<tab>SOURCE
# used by cve script for local matching

# pacman (system packages + AUR)
pacman -Q 2>/dev/null | while IFS=' ' read -r name ver; do
    printf '%s\t%s\tpacman\n' "$name" "$ver"
done

# python (pip)
pip list --format=freeze 2>/dev/null | while IFS='=' read -r name _ ver; do
    [ -n "$name" ] && printf '%s\t%s\tpip\n' "$name" "$ver"
done

# python (pipx)
pipx list --short 2>/dev/null | while read -r name ver _; do
    [ -n "$name" ] && printf '%s\t%s\tpipx\n' "$name" "$ver"
done

# node (npm global)
npm list -g --depth=0 --parseable --long 2>/dev/null | tail -n +2 | while IFS= read -r line; do
    pkg=$(basename "$line" | sed 's/@[^@]*$//')
    ver=$(basename "$line" | grep -o '@[^@]*$' | tr -d '@')
    [ -n "$pkg" ] && printf '%s\t%s\tnpm\n' "$pkg" "$ver"
done

# rust (cargo)
cargo install --list 2>/dev/null | grep -E '^[a-zA-Z]' | while read -r name ver _; do
    ver=$(echo "$ver" | tr -d 'v:')
    [ -n "$name" ] && printf '%s\t%s\tcargo\n' "$name" "$ver"
done

# flatpak
flatpak list --columns=application,version 2>/dev/null | tail -n +1 | while IFS=$'\t' read -r app ver; do
    [ -n "$app" ] && printf '%s\t%s\tflatpak\n' "$app" "$ver"
done

# kernel
printf 'linux\t%s\tkernel\n' "$(uname -r)"

# running services (no version, but useful for matching product names)
systemctl list-units --type=service --state=running --no-legend 2>/dev/null | awk '{print $1}' | sed 's/\.service$//' | while read -r svc; do
    printf '%s\t-\tservice\n' "$svc"
done

# docker containers
if command -v docker >/dev/null 2>&1; then
    docker ps --format '{{.Image}}' 2>/dev/null | while read -r img; do
        name=$(echo "$img" | sed 's/:.*//; s|.*/||')
        ver=$(echo "$img" | grep -o ':.*' | tr -d ':')
        [ -z "$ver" ] && ver="latest"
        printf '%s\t%s\tdocker\n' "$name" "$ver"
    done
fi