aboutsummaryrefslogtreecommitdiffstats
path: root/bin/slackware-sample.sh
blob: 3eb4818940165806f5e6c8465506b3eacb05a51b (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
#!/bin/bash
# Sample Slackware facts into a cache file, for widgets/slackware.lua.
#
# Conky's Lua has no lfs, so it cannot stat a file for an mtime, and counting
# 2800 package files every two seconds would be a directory walk per draw.
# Both belong here.

set -u

CACHE_DIR="${XDG_CACHE_HOME:-$HOME/.cache}/udt"
CACHE="$CACHE_DIR/slackware.txt"

umask 077
mkdir -p "$CACHE_DIR"

TMP="$CACHE.tmp.$$"
trap 'rm -f "$TMP"' EXIT

VERSION=$(cat /etc/slackware-version 2>/dev/null || echo unknown)

# The TRAILING SLASH is load-bearing. /var/log/packages is a symlink to
# /var/lib/pkgtools/packages, and `ls -1 /var/log/packages` lists the link
# itself: one entry. With the slash it lists the target's contents, which on
# this machine is some 2800 packages. Do not remove it as cosmetic.
PACKAGES=$(ls -1 /var/log/packages/ 2>/dev/null | wc -l)

# Epochs, never formatted dates. The shell function this replaces rebuilds a
# date string from `ls -l` output with the year hardcoded, which breaks every
# January and on any file older than six months, when ls prints a year instead
# of a time and the field offsets shift.
CHANGELOG=$(stat -c %Y /var/lib/slackpkg/ChangeLog.txt 2>/dev/null || echo 0)

# Filesystem birth time: the install date. Not every filesystem records it,
# and those that do not report 0, which the widget shows as '--'.
BIRTH=$(stat -c %W / 2>/dev/null || echo 0)

KERNEL=$(uname -r)

{
    echo "version $VERSION"
    echo "packages $PACKAGES"
    echo "changelog $CHANGELOG"
    echo "birth $BIRTH"
    echo "kernel $KERNEL"
} > "$TMP"

mv -f "$TMP" "$CACHE"