aboutsummaryrefslogblamecommitdiff
path: root/lib/os.sh
blob: 2f5e1b520cf63c194473730b17c7856a9546756a (plain) (tree)
1
2
3
4
5
6
7
8
9






                               

                    







                                             











                                                                                  





































                                                                                   
#!/usr/bin/env sh
set -e

export JSON_OS=

if [ -f /etc/os-release ]; then
  . /etc/os-release
  _os_type="${ID}"
  _os_name="${NAME}"
  _os_pretty_name="${PRETTY_NAME}"
  _os_version="${VERSION}"
  _os_version_id="${VERSION_ID}"
  _os_supported=1
else
  uname=$(uname | tr '[:upper:]' '[:lower:]')
  case "${uname}" in
    darwin)
      _os_type="darwin"
      _vers=$(sw_vers | awk '{print $2}')
      if [ "$?" = "0" ]; then
        _os_name=$(echo "${_vers}" | tail -n +1 | head -n 1)
        _os_version=$(echo "${_vers}" | tail -n +2 | head -n 1)
	_os_pretty_name="${_os_name} ${_os_version}"
        _os_version_id="${_os_version}"
        _os_supported=1
      else
        >&2 echo "cloyster/os_detect.sh: error: unknown darwin system: '${uname}'"
      fi
      ;;
   *)
      _os_type="${uname}"
      >&2 echo "cloyster/os_detect.sh: error: unknown operating system: '${uname}'"
  esac
fi

_m=$(uname -m)
case "${_m}" in
x86_64) _os_machine=amd64;;
i*86) _os_machine=x86;;
*)
  _os_machine="${_m}"
    ;;
esac

JSON_OS=$(jo -d. \
  "os.supported@${_os_supported}" \
   "os.type=${_os_type}" \
   "os.name=${_os_name}" \
   "os.pretty_name=${_os_pretty_name}" \
   "os.version=${_os_version}" \
   "os.version_id=${_os_version_id}" \
   "os.machine=${_os_machine}")

# os_get KEY|jq [JQ_QUERY]
os_get() {
  _key="${1}"
  if [ -z "${1}" ]; then
    _key=".os"
  elif [ "${1}" = "jq" ] && [ -n "${2}" ]; then
    _key="${2}"
  else
    _key=".os.${_key}"
  fi
  value="$(echo ${JSON_OS} | jq -r "${_key}")"
  if [ "${value}" = "null" ]; then value=; fi
  echo "${value}"
}