cdist configuration management
Latest manual: https://www.cdi.st/manual/latest/
Home page: https://www.cdi.st
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
146 lines
3.9 KiB
146 lines
3.9 KiB
#!/bin/sh -e |
|
# |
|
# 2010-2011 Nico Schottelius (nico-cdist at schottelius.org) |
|
# 2020-2021 Dennis Camera (dennis.camera at ssrq-sds-fds.ch) |
|
# |
|
# This file is part of cdist. |
|
# |
|
# cdist is free software: you can redistribute it and/or modify |
|
# it under the terms of the GNU General Public License as published by |
|
# the Free Software Foundation, either version 3 of the License, or |
|
# (at your option) any later version. |
|
# |
|
# cdist is distributed in the hope that it will be useful, |
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
# GNU General Public License for more details. |
|
# |
|
# You should have received a copy of the GNU General Public License |
|
# along with cdist. If not, see <http://www.gnu.org/licenses/>. |
|
# |
|
# All os variables are lower case |
|
# |
|
|
|
rc_getvar() { |
|
awk -F= -v varname="$2" ' |
|
function unquote(s) { |
|
if (s ~ /^".*"$/ || s ~ /^'\''.*'\''$/) |
|
return substr(s, 2, length(s) - 2) |
|
else |
|
return s |
|
} |
|
$1 == varname { print unquote(substr($0, index($0, "=") + 1)) }' "$1" |
|
} |
|
|
|
case $("${__explorer:?}/os") |
|
in |
|
amazon) |
|
cat /etc/system-release |
|
;; |
|
archlinux) |
|
# empty, but well... |
|
cat /etc/arch-release |
|
;; |
|
debian) |
|
debian_version=$(cat /etc/debian_version) |
|
case $debian_version |
|
in |
|
testing/unstable) |
|
# previous to Debian 4.0 testing/unstable was used |
|
# cf. https://metadata.ftp-master.debian.org/changelogs/main/b/base-files/base-files_11_changelog |
|
echo 3.99 |
|
;; |
|
*/sid) |
|
# sid versions don't have a number, so we decode by codename: |
|
case $(expr "$debian_version" : '\([a-z]\{1,\}\)/') |
|
in |
|
bullseye) echo 10.99 ;; |
|
buster) echo 9.99 ;; |
|
stretch) echo 8.99 ;; |
|
jessie) echo 7.99 ;; |
|
wheezy) echo 6.99 ;; |
|
squeeze) echo 5.99 ;; |
|
lenny) echo 4.99 ;; |
|
*) exit 1 |
|
esac |
|
;; |
|
*) |
|
echo "$debian_version" |
|
;; |
|
esac |
|
;; |
|
devuan) |
|
devuan_version=$(cat /etc/devuan_version) |
|
case ${devuan_version} |
|
in |
|
(*/ceres) |
|
# ceres versions don't have a number, so we decode by codename: |
|
case ${devuan_version} |
|
in |
|
(chimaera/ceres) echo 3.99 ;; |
|
(beowulf/ceres) echo 2.99 ;; |
|
(ascii/ceres) echo 1.99 ;; |
|
(*) exit 1 |
|
esac |
|
;; |
|
(*) |
|
echo "${devuan_version}" |
|
;; |
|
esac |
|
;; |
|
fedora) |
|
cat /etc/fedora-release |
|
;; |
|
gentoo) |
|
cat /etc/gentoo-release |
|
;; |
|
macosx) |
|
sw_vers -productVersion |
|
;; |
|
freebsd) |
|
# Apparently uname -r is not a reliable way to get the patch level. |
|
# See: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=251743 |
|
freebsd-version |
|
;; |
|
*bsd|solaris) |
|
uname -r |
|
;; |
|
openwrt) |
|
cat /etc/openwrt_version |
|
;; |
|
owl) |
|
cat /etc/owl-release |
|
;; |
|
redhat|centos|mitel|scientific) |
|
cat /etc/redhat-release |
|
;; |
|
slackware) |
|
cat /etc/slackware-version |
|
;; |
|
suse) |
|
if [ -f /etc/os-release ]; then |
|
cat /etc/os-release |
|
else |
|
cat /etc/SuSE-release |
|
fi |
|
;; |
|
ubuntu) |
|
if command -v lsb_release >/dev/null 2>&1 |
|
then |
|
lsb_release -sr |
|
elif test -r /usr/lib/os-release |
|
then |
|
# fallback to /usr/lib/os-release if lsb_release is not present (like |
|
# on minimized Ubuntu installations) |
|
rc_getvar /usr/lib/os-release VERSION_ID |
|
elif test -r /etc/lsb-release |
|
then |
|
# extract DISTRIB_RELEASE= variable from /etc/lsb-release on old |
|
# versions without /usr/lib/os-release. |
|
rc_getvar /etc/lsb-release DISTRIB_RELEASE |
|
fi |
|
;; |
|
alpine) |
|
cat /etc/alpine-release |
|
;; |
|
esac
|
|
|