#!/bin/bash
-# Copyright (C) 2014 Ian Kelling
+# I, Ian Kelling, follow the GNU license recommendations at
+# https://www.gnu.org/licenses/license-recommendations.en.html. They
+# recommend that small programs, < 300 lines, be licensed under the
+# Apache License 2.0. This file contains or is part of one or more small
+# programs. If a small program grows beyond 300 lines, I plan to switch
+# its license to GPL.
+
+# Copyright 2024 Ian Kelling
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
}
distro-name-compat() {
- local x=$(distro-name)
+ local x
+ x=$(distro-name)
case $x in
trisquel)
echo ubuntu
;;
*)
- echo $x
+ printf "%s\n" "$x"
;;
esac
}
distro-name-ver() {
- echo $(distro-name)$(debian-archive)
+ printf "%s\n" "$(distro-name)$(debian-archive)"
}
distro-num() {
- # Subshell keeps environment clean.
- ( . /etc/os-release
- # in ubuntu the .x matters, trisquel it doesnt
- if [[ $ID == ubuntu ]]; then
- echo $VERSION_ID
- else
- echo ${VERSION_ID%%.*}
- fi
- )
+ local os_id ver_id
+ os_id=$(awk -F = '$1 == "ID" { print $2 }' /etc/os-release)
+ ver_id=$(awk -F = '$1 == "VERSION_ID" { print $2 }' /etc/os-release | sed 's/"//g')
+ # of VERSION_ID.x, the x matters in ubuntu but not trisquel
+ if [[ $os_id == ubuntu ]]; then
+ printf "%s\n" "$ver_id"
+ else
+ printf "%s\n" "$ver_id" | sed 's/\..*//'
+ fi
}
debian-archive() {
# o = origin
# c = component (licensing component)
# l = label (Debian{,-Security,-Updates})
- local d=$(distro-name)
+ local d
+ d=$(distro-name)
# goto b for archive lines we are interested in, a for lines we arent
# print priority + archive name. priority is in
# the previous line from the archive line.
shortest=$name
continue
fi
- if [[ $pri != $highpri ]]; then
+ if [[ $pri != "$highpri" ]]; then
break
fi
if (( ${#shortest} > ${#name} )); then
# formatted for use in pfile() in package-manager-abstractions
positive-origins() {
isdeb || return 0
- local archive expression pri name highpri shortest
- local policy="${1:-$(apt-cache policy)}" || return $?
+ local archive expression pri name highpri shortest policy
+ # In theory we might want a policy subset, we could alter this to pass
+ # it in.
+ policy="(apt-cache policy)"
# a = archive
# n = codename
# o = origin
debian-codename() {
isdeb || return 0
- local policy="$(apt-cache policy)" || return $?
+ local policy
+ policy="$(apt-cache policy)"
archive=$(debian-archive "$policy")
- echo "$policy" | sed -rn "s/^.*a=$archive,n=([a-z]+).*/\1/p;T;q" || [[ $? == 141 ]]
+ printf "%s\n" "$policy" | sed -rn "s/^.*a=$archive,n=([a-z]+).*/\1/p;T;q" || [[ $? == 141 ]]
}
debian-codename-compat() {
- local n=$(debian-codename)
+ local n
+ n=$(debian-codename)
case $n in
flidas)
echo xenial