# limitations under the License.
distro-name() {
- local x
- if [[ -f /etc/fedora-release ]]; then
- echo fedora
- elif [[ -e /etc/os-release ]]; then
- sed -rn 's/^ID=(.*)/\1/p' /etc/os-release
- elif type -p lsb_release &>/dev/null; then
- # well, this is more standard, but it's 2 ms vs 200 ms
- x=$(lsb_release -si); echo ${x,,}
- else
- echo "unknown distro"
- return 1
- fi
+ local x
+ if [[ -f /etc/fedora-release ]]; then
+ echo fedora
+ elif [[ -e /etc/os-release ]]; then
+ sed -rn 's/^ID=(.*)/\1/p' /etc/os-release
+ elif type -p lsb_release &>/dev/null; then
+ # well, this is more standard, but it's 2 ms vs 200 ms
+ x=$(lsb_release -si); echo ${x,,}
+ else
+ echo "unknown distro"
+ return 1
+ fi
}
distro-name-compat() {
- local x=$(distro-name)
- case $x in
- trisquel)
- echo ubuntu
- ;;
- *)
- echo $x
- ;;
- esac
+ local x=$(distro-name)
+ case $x in
+ trisquel)
+ echo ubuntu
+ ;;
+ *)
+ echo $x
+ ;;
+ esac
}
distro-name-ver() {
- echo `distro-name``debian-archive`
+ echo $(distro-name)$(debian-archive)
+}
+
+distro-num() {
+ # subshell keeps environment clean
+ ( . /etc/os-release; echo ${VERSION_ID%%.*}; )
}
debian-archive() {
- isdeb || return 0
- local archive expression pri name highpri shortest
- local policy="${1:-$(apt-cache policy)}" || return $?
- # a = archive
- # n = codename
- # o = origin
- # c = component (licensing component)
- # l = label (Debian{,-Security,-Updates})
- local 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.
- # case insensitive, because $d is lower and we are matching with first char upper
- read -rd '' expression <<EOF ||:
+ isdeb || return 0
+ local archive expression pri name highpri shortest
+ local policy="${1:-$(apt-cache policy)}" || return $?
+ # a = archive
+ # n = codename
+ # o = origin
+ # c = component (licensing component)
+ # l = label (Debian{,-Security,-Updates})
+ local 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.
+ # case insensitive, because $d is lower and we are matching with first char upper
+ read -rd '' expression <<EOF ||:
/o=$d/I!b a;/l=$d/I!b a;/c=main/!b a b b;
: a;s/^ *([-0-9]+).*/\1/;h;b;
: b;s/^.*a=([^,]+).*/ \1/;H;x;s/\n//;p
EOF
- while read -r pri name; do
-# in ubuntu, we get archives like flidas, flidas-updates, all the same pri,
-# so just pick the shortest one.
- if [[ ! $highpri ]]; then
- highpri=$pri;
- shortest=$name
- continue
- fi
- if [[ $pri != $highpri ]]; then
- break
- fi
- if (( ${#shortest} > ${#name} )); then
- shortest=$name
- fi
- done < <(echo "$policy" | sed -rn "$expression" | sort -rn || [[ $? == 141 ]])
- echo "$shortest"
+ while read -r pri name; do
+ # in ubuntu, we get archives like flidas, flidas-updates, all the same pri,
+ # so just pick the shortest one.
+ if [[ ! $highpri ]]; then
+ highpri=$pri;
+ shortest=$name
+ continue
+ fi
+ if [[ $pri != $highpri ]]; then
+ break
+ fi
+ if (( ${#shortest} > ${#name} )); then
+ shortest=$name
+ fi
+ done < <(echo "$policy" | sed -rn "$expression" | sort -rn || [[ $? == 141 ]])
+ echo "$shortest"
}
isdebian-testing() {
- [[ $(debian-archive) == testing ]]
+ [[ $(debian-archive) == testing ]]
}
# I only do testing or stable.
isdebian-stable() {
- [[ $(debian-archive) == stable ]]
+ [[ $(debian-archive) == stable ]]
}
debian-codename() {
- isdeb || return 0
- local policy="$(apt-cache policy)" || return $?
- archive=$(debian-archive "$policy")
- echo "$policy" | sed -rn "s/^.*a=$archive,n=([a-z]+).*/\1/p;T;q" || [[ $? == 141 ]]
+ isdeb || return 0
+ local policy="$(apt-cache policy)" || return $?
+ archive=$(debian-archive "$policy")
+ echo "$policy" | sed -rn "s/^.*a=$archive,n=([a-z]+).*/\1/p;T;q" || [[ $? == 141 ]]
}
debian-codename-compat() {
- local n=$(debian-codename)
- case $n in
- flidas)
- echo xenial
- ;;
- etiona)
- echo bionic
- ;;
- *)
- echo $n
- ;;
- esac
+ local n=$(debian-codename)
+ case $n in
+ flidas)
+ echo xenial
+ ;;
+ etiona)
+ echo bionic
+ ;;
+ *)
+ echo $n
+ ;;
+ esac
}
isfedora() {
- [[ $(distro-name) == fedora ]]
+ [[ $(distro-name) == fedora ]]
}
isdebian() {
- [[ $(distro-name) == debian ]]
+ [[ $(distro-name) == debian ]]
}
isarch() {
- [[ $(distro-name) == arch ]]
+ [[ $(distro-name) == arch ]]
}
isubuntu() {
- [[ $(distro-name) == ubuntu ]]
+ [[ $(distro-name) == ubuntu ]]
}
istrisquel() {
- [[ $(distro-name) == trisquel ]]
+ [[ $(distro-name) == trisquel ]]
}
# is debian/apt based
isdeb() { command -v apt-get &>/dev/null; }