Sha256: f109f6d83b4f247c0285b3bbcdfd60e89a37c0b5868f25f14c602780b6abe4be

Contents?: true

Size: 1.9 KB

Versions: 16

Compression:

Stored size: 1.9 KB

Contents

#include <internal/facts/resolvers/kernel_resolver.hpp>
#include <facter/facts/collection.hpp>
#include <facter/facts/map_value.hpp>
#include <facter/facts/scalar_value.hpp>
#include <facter/facts/fact.hpp>

using namespace std;

namespace facter { namespace facts { namespace resolvers {

    kernel_resolver::kernel_resolver() :
        resolver(
            "kernel",
            {
                fact::kernel,
                fact::kernel_version,
                fact::kernel_release,
                fact::kernel_major_version
            })
    {
    }

    void kernel_resolver::resolve(collection& facts)
    {
        auto data = collect_data(facts);
        if (!data.name.empty()) {
            facts.add(fact::kernel, make_value<string_value>(move(data.name)));
        }

        if (!data.release.empty()) {
            facts.add(fact::kernel_release, make_value<string_value>(move(data.release)));
        }

        if (!data.version.empty()) {
            string major, minor;
            tie(major, minor) = parse_version(data.version);

            if (!major.empty()) {
                facts.add(fact::kernel_major_version, make_value<string_value>(move(major)));
            }
            if (!minor.empty()) {
                // TODO: for use in a structured fact; no point adding a new flat fact for it
            }

            facts.add(fact::kernel_version, make_value<string_value>(move(data.version)));
        }
    }

    tuple<string, string> kernel_resolver::parse_version(string const& version) const
    {
        auto pos = version.find('.');
        if (pos != string::npos) {
            auto second = version.find('.', pos + 1);
            if (second != string::npos) {
                pos = second;
            }
            return make_tuple(version.substr(0, pos), version.substr(pos + 1));
        }
        return make_tuple(move(version), string());
    }

}}}  // namespace facter::facts::resolvers

Version data entries

16 entries across 16 versions & 2 rubygems

Version Path
facter-3.12.2.cfacter.20181217 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.12.1.cfacter.20181031 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.11.6.cfacter.20181031 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.12.1.cfacter.20181023 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.11.5.cfacter.20181022 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.12.0.cfacter.20181004 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.12.0.cfacter.20181001 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.12.0.cfacter.20180918 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.11.4.cfacter.20180821 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.11.3.cfacter.20180716 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.11.2.cfacter.20180612 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.9.6.cfacter.20180612 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.11.2.cfacter.20180606 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.9.6.cfacter.20180606 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
facter-3.11.0.cfacter.20180319 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc
cfacter-3.11.0.rc.20180314 ext/facter/facter/lib/src/facts/resolvers/kernel_resolver.cc