Sha256: 877f8aa8643076be4dc579949bc511789340fd8babfdc44c6c578223ec0005e1

Contents?: true

Size: 1.48 KB

Versions: 2

Compression:

Stored size: 1.48 KB

Contents

#!/usr/bin/env bash

# Delegate to facter if available
command -v facter > /dev/null 2>&1 && exec facter -p --json

minor () {
    minor="${*#*.}"
    [ "$minor" == "$*" ] || echo "${minor%%.*}"
}

# Determine the OS name
if [ -f /etc/redhat-release ]; then
    if egrep -iq centos /etc/redhat-release; then
        name=CentOS
    elif egrep -iq 'Fedora release' /etc/redhat-release; then
        name=Fedora
    fi
    release=$(sed -r -e 's/^.* release ([0-9]+(\.[0-9]+)?).*$/\1/' \
                  /etc/redhat-release)
fi

if [ -z "${name}" ]; then
    LSB_RELEASE=$(command -v lsb_release)
    if [ -n "$LSB_RELEASE" ]; then
        if [ -z "$name" ]; then
            name=$($LSB_RELEASE -i | sed -re 's/^.*:[ \t]*//')
        fi
        release=$($LSB_RELEASE -r | sed -re 's/^.*:[ \t]*//')
    fi
fi

if [ -z "${name}" ]; then
    name=$(uname)
    release=$(uname -r)
fi

case $name in
    RedHat|Fedora|CentOS|Scientific|SLC|Ascendos|CloudLinux)
        family=RedHat;;
    HuaweiOS|LinuxMint|Ubuntu|Debian)
        family=Debian;;
    *)
        family=$name;;
esac

# Print it all out
if [ -z "$name" ]; then
    cat <<JSON
{
  "_error": {
    "kind": "facts/noname",
    "msg": "Could not determine OS name"
  }
}
JSON
else
    cat <<JSON
{
  "os": {
    "name": "${name}",
JSON
    [ -n "$release" ] && cat <<JSON
    "release": {
      "full": "${release}",
      "major": "${release%%.*}",
      "minor": "`minor "${release}"`"
    },
JSON
    cat <<JSON
    "family": "${family}"
  }
}
JSON
fi

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
bolt-0.20.2 modules/facts/tasks/bash.sh
bolt-0.20.0 modules/facts/tasks/bash.sh