facter 3.12.0.cfacter.20181004 → 3.12.1.cfacter.20181023
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/ext/facter/facter/CMakeLists.txt +1 -1
- data/ext/facter/facter/acceptance/lib/facter/acceptance/base_fact_utils.rb +3 -1
- data/ext/facter/facter/acceptance/tests/facts/dmi.rb +1 -1
- data/ext/facter/facter/appveyor.yml +14 -17
- data/ext/facter/facter/exe/facter.cc +2 -1
- data/ext/facter/facter/lib/Doxyfile +1 -1
- data/ext/facter/facter/lib/inc/facter/ruby/ruby.hpp +11 -0
- data/ext/facter/facter/lib/src/facts/collection.cc +2 -0
- data/ext/facter/facter/lib/src/facts/windows/dmi_resolver.cc +3 -2
- data/ext/facter/facter/lib/src/facts/windows/operating_system_resolver.cc +23 -1
- data/ext/facter/facter/lib/src/ruby/ruby.cc +35 -3
- data/ext/facter/facter/lib/tests/CMakeLists.txt +9 -25
- data/ext/facter/facter/lib/tests/facts/collection.cc +1 -1
- data/ext/facter/facter/locales/FACTER.pot +18 -6
- data/ext/facter/leatherman/CMakeLists.txt +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a7a8c74c202ab1fa96513997f0f5571779517be1ce2c3aa70ede42bef1adf551
|
4
|
+
data.tar.gz: c7a8bd03da7e777d30d91c5d2979072ac4affad9c0e7de5a0235083d47364b85
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8096ed83cbd2460ae62eda375f75aa10339256a4ce12caa21405a88f36d2826431ae9f54cae6fc70e9eb0aac510b31a6eadf2ab74827832842b223a6b64a5b31
|
7
|
+
data.tar.gz: d8f2b358f0d7876d96ceffb31e06d0032f97e4c7aebec8040afc626bab43d09faae73885bfc31c13b2c5a7cb275c7e43d8701daa2bfae09b8154661b786f046c
|
@@ -523,11 +523,13 @@ module Facter
|
|
523
523
|
elsif agent['platform'] =~ /2008/
|
524
524
|
os_version = '2008 R2'
|
525
525
|
elsif agent['platform'] =~ /2012/
|
526
|
-
os_version = '2012 R2'
|
526
|
+
os_version = agent['platform'] =~ /R2/ ? '2012 R2' : '2012'
|
527
527
|
elsif agent['platform'] =~ /-10/
|
528
528
|
os_version = '10'
|
529
529
|
elsif agent['platform'] =~ /2016/
|
530
530
|
os_version = '2016'
|
531
|
+
elsif agent['platform'] =~ /2019/
|
532
|
+
os_version = '2019'
|
531
533
|
else
|
532
534
|
fail_test "Unknown Windows version #{agent['platform']}"
|
533
535
|
end
|
@@ -15,13 +15,13 @@ test_name "C96148: verify dmi facts" do
|
|
15
15
|
expected_facts = {
|
16
16
|
'dmi.manufacturer' => /\w+/,
|
17
17
|
'dmi.product.name' => /\w+/,
|
18
|
+
'dmi.product.uuid' => /[-0-9A-Fa-f]+/,
|
18
19
|
}
|
19
20
|
unless agent['platform'] =~ /windows/
|
20
21
|
expected_facts.merge!({'dmi.bios.release_date' => /\d+\/\d+\/\d+/,
|
21
22
|
'dmi.bios.vendor' => /\w+/,
|
22
23
|
'dmi.bios.version' => /\d+/,
|
23
24
|
'dmi.chassis.type' => /\w+/,
|
24
|
-
'dmi.product.uuid' => /[-0-9A-Fa-f]+/,
|
25
25
|
})
|
26
26
|
end
|
27
27
|
unless agent['platform'] =~ /windows|cisco|aarch64|el-/
|
@@ -1,27 +1,21 @@
|
|
1
1
|
version: 3.1.0.{build}
|
2
2
|
clone_depth: 10
|
3
3
|
environment:
|
4
|
-
LEATHERMAN_VERSION:
|
5
|
-
CPPHOCON_VERSION: 0.1.
|
4
|
+
LEATHERMAN_VERSION: 1.4.4
|
5
|
+
CPPHOCON_VERSION: 0.1.8
|
6
6
|
|
7
7
|
init:
|
8
8
|
- |
|
9
|
-
choco install mingw-w64 -
|
9
|
+
choco install -y mingw-w64 -Version 5.2.0 -source https://www.myget.org/F/puppetlabs
|
10
|
+
choco install -y cmake -Version 3.2.2 -source https://www.myget.org/F/puppetlabs
|
10
11
|
choco install -y gettext -Version 0.19.6 -source https://www.myget.org/F/puppetlabs
|
12
|
+
choco install -y pl-toolchain-x64 -Version 2015.12.01.1 -source https://www.myget.org/F/puppetlabs
|
13
|
+
choco install -y pl-boost-x64 -Version 1.58.0.2 -source https://www.myget.org/F/puppetlabs
|
14
|
+
choco install -y pl-openssl-x64 -Version 1.0.24.1 -source https://www.myget.org/F/puppetlabs
|
15
|
+
choco install -y pl-curl-x64 -Version 7.46.0.1 -source https://www.myget.org/F/puppetlabs
|
16
|
+
choco install -y pl-yaml-cpp-x64 -Version 0.5.1.2 -source https://www.myget.org/F/puppetlabs
|
11
17
|
cmake --version
|
12
18
|
- ps: |
|
13
|
-
$env:PATH = $env:PATH.Replace("Git\bin", "Git\cmd")
|
14
|
-
$env:PATH = $env:PATH.Replace("Git\usr\bin", "Git\cmd")
|
15
|
-
|
16
|
-
wget 'https://s3.amazonaws.com/kylo-pl-bucket/boost_1_57_0-x86_64_mingw-w64_4.8.3_win32_seh.7z' -OutFile "$env:temp\boost.7z"
|
17
|
-
7z.exe x $env:temp\boost.7z -oC:\tools | FIND /V "ing "
|
18
|
-
|
19
|
-
wget 'https://s3.amazonaws.com/kylo-pl-bucket/yaml-cpp-0.5.1-x86_64_mingw-w64_4.8.3_win32_seh.7z' -OutFile "$env:temp\yaml-cpp.7z"
|
20
|
-
7z.exe x $env:temp\yaml-cpp.7z -oC:\tools | FIND /V "ing "
|
21
|
-
|
22
|
-
wget 'https://s3.amazonaws.com/kylo-pl-bucket/curl-7.42.1-x86_64_mingw-w64_4.8.3_win32_seh.7z' -OutFile "$env:temp\curl-7.42.1-x86_64_mingw-w64_4.8.3_win32_seh.7z"
|
23
|
-
7z.exe x "$env:temp\curl-7.42.1-x86_64_mingw-w64_4.8.3_win32_seh.7z" -oC:\tools | FIND /V "ing "
|
24
|
-
|
25
19
|
wget "https://github.com/puppetlabs/leatherman/releases/download/$env:LEATHERMAN_VERSION/leatherman.7z" -OutFile "$env:temp\leatherman.7z"
|
26
20
|
7z.exe x $env:temp\leatherman.7z -oC:\tools | FIND /V "ing "
|
27
21
|
|
@@ -29,12 +23,15 @@ init:
|
|
29
23
|
7z.exe x $env:temp\cpp-hocon.7z -oC:\tools | FIND /V "ing "
|
30
24
|
|
31
25
|
install:
|
32
|
-
|
26
|
+
# Minimize environment polution; previously we were linking against the wrong OpenSSL DLLs.
|
27
|
+
# Include Ruby and Powershell for unit tests.
|
28
|
+
- SET PATH=C:\tools\pl-build-tools\bin;C:\tools\mingw64\bin;C:\ProgramData\chocolatey\bin;C:\Ruby22-x64\bin;C:\Program Files\7-Zip;C:\Windows\system32;C:\Windows;C:\Windows\System32\WindowsPowerShell\v1.0;C:\Program Files\gettext-iconv
|
29
|
+
- ps: rm -r C:\OpenSSL-Win64
|
33
30
|
- bundle install --jobs 4 --retry 2 --gemfile=lib/Gemfile --quiet
|
34
31
|
|
35
32
|
build_script:
|
36
33
|
- ps: |
|
37
|
-
cmake -G "MinGW Makefiles" -
|
34
|
+
cmake -G "MinGW Makefiles" -DCMAKE_TOOLCHAIN_FILE="C:\tools\pl-build-tools\pl-build-toolchain.cmake" -DCMAKE_PREFIX_PATH="C:\tools\leatherman;C:\tools\cpp-hocon" -DCMAKE_INSTALL_PREFIX="C:\Program Files\FACTER" -DBOOST_STATIC=ON .
|
38
35
|
mingw32-make -j2
|
39
36
|
|
40
37
|
test_script:
|
@@ -332,7 +332,8 @@ int main(int argc, char **argv)
|
|
332
332
|
if (vm.count("custom-dir")) {
|
333
333
|
custom_directories = vm["custom-dir"].as<vector<string>>();
|
334
334
|
}
|
335
|
-
|
335
|
+
bool redirect_ruby_stdout = vm.count("json") || vm.count("yaml");
|
336
|
+
facter::ruby::load_custom_facts(facts, vm.count("puppet"), redirect_ruby_stdout, custom_directories);
|
336
337
|
}
|
337
338
|
|
338
339
|
if (!vm["no-external-facts"].as<bool>()) {
|
@@ -38,7 +38,7 @@ PROJECT_NAME = facter
|
|
38
38
|
# could be handy for archiving the generated documentation or if some version
|
39
39
|
# control system is used.
|
40
40
|
|
41
|
-
PROJECT_NUMBER = 3.12.
|
41
|
+
PROJECT_NUMBER = 3.12.1
|
42
42
|
|
43
43
|
# Using the PROJECT_BRIEF tag one can provide an optional one line description
|
44
44
|
# for a project that appears at the top of each page and should give viewer a
|
@@ -21,6 +21,17 @@ namespace facter { namespace ruby {
|
|
21
21
|
*/
|
22
22
|
LIBFACTER_EXPORT bool initialize(bool include_stack_trace = false);
|
23
23
|
|
24
|
+
/**
|
25
|
+
* Loads custom facts into the given collection.
|
26
|
+
* Important: this function should be called from main().
|
27
|
+
* Calling this function from an arbitrary stack depth may result in segfaults during Ruby GC.
|
28
|
+
* @param facts The collection to populate with custom facts.
|
29
|
+
* @param initialize_puppet Whether puppet should be loaded to find additional facts.
|
30
|
+
* @param redirect_stdout Whether Ruby's stdout should be redirected to stderr
|
31
|
+
* @param paths The paths to search for custom facts.
|
32
|
+
*/
|
33
|
+
LIBFACTER_EXPORT void load_custom_facts(facter::facts::collection& facts, bool initialize_puppet, bool redirect_stdout, std::vector<std::string> const& paths = {});
|
34
|
+
|
24
35
|
/**
|
25
36
|
* Loads custom facts into the given collection.
|
26
37
|
* Important: this function should be called from main().
|
@@ -309,6 +309,8 @@ namespace facter { namespace facts {
|
|
309
309
|
{
|
310
310
|
resolve_facts();
|
311
311
|
|
312
|
+
// We intentionally are using find_if with no return value as a "map until" construct.
|
313
|
+
// cppcheck-suppress ignoredReturnValue
|
312
314
|
find_if(begin(_facts), end(_facts), [&func](map<string, unique_ptr<value>>::value_type const& it) {
|
313
315
|
return !func(it.first, it.second.get());
|
314
316
|
});
|
@@ -17,11 +17,12 @@ namespace facter { namespace facts { namespace windows {
|
|
17
17
|
{
|
18
18
|
data result;
|
19
19
|
|
20
|
-
auto vals = _wmi->query(wmi::computersystemproduct, {wmi::name});
|
20
|
+
auto vals = _wmi->query(wmi::computersystemproduct, {wmi::name, wmi::uuid});
|
21
21
|
if (vals.empty()) {
|
22
|
-
LOG_DEBUG("WMI query returned no results for {1} with
|
22
|
+
LOG_DEBUG("WMI query returned no results for {1} with values {2} and {3}.", wmi::computersystemproduct, wmi::name, wmi::uuid);
|
23
23
|
} else {
|
24
24
|
result.product_name = wmi::get(vals, wmi::name);
|
25
|
+
result.uuid = wmi::get(vals, wmi::uuid);
|
25
26
|
}
|
26
27
|
|
27
28
|
vals = _wmi->query(wmi::bios, {wmi::manufacturer, wmi::serialnumber});
|
@@ -2,7 +2,9 @@
|
|
2
2
|
#include <leatherman/windows/system_error.hpp>
|
3
3
|
#include <leatherman/windows/wmi.hpp>
|
4
4
|
#include <leatherman/windows/windows.hpp>
|
5
|
+
#include <facter/facts/fact.hpp>
|
5
6
|
#include <facter/facts/collection.hpp>
|
7
|
+
#include <facter/facts/scalar_value.hpp>
|
6
8
|
#include <facter/facts/os_family.hpp>
|
7
9
|
#include <leatherman/logging/logging.hpp>
|
8
10
|
#include <leatherman/util/regex.hpp>
|
@@ -10,6 +12,7 @@
|
|
10
12
|
#include <winnt.h>
|
11
13
|
#include <Shlobj.h>
|
12
14
|
#include <map>
|
15
|
+
#include <string>
|
13
16
|
#include <boost/filesystem.hpp>
|
14
17
|
|
15
18
|
using namespace std;
|
@@ -101,7 +104,26 @@ namespace facter { namespace facts { namespace windows {
|
|
101
104
|
auto version = result.release.substr(0, lastDot);
|
102
105
|
bool consumerrel = (wmi::get(vals, wmi::producttype) == "1");
|
103
106
|
if (version == "10.0") {
|
104
|
-
|
107
|
+
// Calculate the build number to distinguish between
|
108
|
+
// Windows Server 2016 and 2019. Note that the kernel
|
109
|
+
// version is written as <major>.<minor>.<build_number>
|
110
|
+
auto kernel_version_fact = facts.get<string_value>(fact::kernel_version);
|
111
|
+
if (! kernel_version_fact) {
|
112
|
+
LOG_DEBUG("Could not resolve the OS release and OS major version facts from the kernel version fact");
|
113
|
+
return result;
|
114
|
+
}
|
115
|
+
auto kernel_version = kernel_version_fact->value();
|
116
|
+
auto build_number_as_str = kernel_version.substr(
|
117
|
+
kernel_version.find_last_of('.') + 1);
|
118
|
+
auto build_number = stol(build_number_as_str);
|
119
|
+
|
120
|
+
if (consumerrel) {
|
121
|
+
result.release = "10";
|
122
|
+
} else if (build_number >= 17623L) {
|
123
|
+
result.release = "2019";
|
124
|
+
} else {
|
125
|
+
result.release = "2016";
|
126
|
+
}
|
105
127
|
} else if (version == "6.3") {
|
106
128
|
result.release = consumerrel ? "8.1" : "2012 R2";
|
107
129
|
} else if (version == "6.2") {
|
@@ -30,6 +30,27 @@ static const char load_puppet[] =
|
|
30
30
|
" end\n"
|
31
31
|
"end\n";
|
32
32
|
|
33
|
+
// This struct redirects stdout to stderr in the ruby runtime for the
|
34
|
+
// duration of its lifetime. We use this to ensure that any custom
|
35
|
+
// facts writing to stdout during their initialization or execution
|
36
|
+
// won't corrupt json/yaml output from the facter executable.
|
37
|
+
struct RbStdoutGuard {
|
38
|
+
VALUE old_stdout;
|
39
|
+
api& ruby;
|
40
|
+
|
41
|
+
RbStdoutGuard(api& ruby) :ruby(ruby) {
|
42
|
+
LOG_DEBUG("Redirecting ruby's stdout to stderr");
|
43
|
+
auto rb_stderr = ruby.rb_gv_get("$stderr");
|
44
|
+
old_stdout = ruby.rb_gv_get("$stdout");
|
45
|
+
ruby.rb_gv_set("$stdout", rb_stderr);
|
46
|
+
}
|
47
|
+
|
48
|
+
~RbStdoutGuard() {
|
49
|
+
LOG_DEBUG("Restoring Ruby's stdout");
|
50
|
+
ruby.rb_gv_set("$stdout", old_stdout);
|
51
|
+
}
|
52
|
+
};
|
53
|
+
|
33
54
|
namespace facter { namespace ruby {
|
34
55
|
|
35
56
|
bool initialize(bool include_stack_trace)
|
@@ -48,7 +69,7 @@ namespace facter { namespace ruby {
|
|
48
69
|
return true;
|
49
70
|
}
|
50
71
|
|
51
|
-
void load_custom_facts(collection& facts, bool initialize_puppet, vector<string> const& paths)
|
72
|
+
void load_custom_facts(collection& facts, bool initialize_puppet, bool redirect_stdout, vector<string> const& paths)
|
52
73
|
{
|
53
74
|
#ifdef _WIN32
|
54
75
|
// Initialize WSA before resolving custom facts. The Ruby runtime does this only when running
|
@@ -67,12 +88,23 @@ namespace facter { namespace ruby {
|
|
67
88
|
}
|
68
89
|
}
|
69
90
|
mod.search(paths);
|
70
|
-
|
91
|
+
if (redirect_stdout) {
|
92
|
+
// Redirect stdout->stderr for custom facts.
|
93
|
+
RbStdoutGuard stdout_guard{ruby};
|
94
|
+
mod.resolve_facts();
|
95
|
+
} else {
|
96
|
+
mod.resolve_facts();
|
97
|
+
}
|
71
98
|
}
|
72
99
|
|
73
100
|
void load_custom_facts(collection& facts, vector<string> const& paths)
|
74
101
|
{
|
75
|
-
|
102
|
+
load_custom_facts(facts, false, false, paths);
|
103
|
+
}
|
104
|
+
|
105
|
+
void load_custom_facts(collection& facts, bool initialize_puppet, vector<string> const& paths)
|
106
|
+
{
|
107
|
+
load_custom_facts(facts, initialize_puppet, false, paths);
|
76
108
|
}
|
77
109
|
|
78
110
|
value const* lookup(value const* value, vector<string>::iterator segment, vector<string>::iterator end) {
|
@@ -40,6 +40,7 @@ set(LIBFACTER_TESTS_COMMON_SOURCES
|
|
40
40
|
"logging/logging.cc"
|
41
41
|
"log_capture.cc"
|
42
42
|
"main.cc"
|
43
|
+
"mock_server.cc"
|
43
44
|
"util/string.cc"
|
44
45
|
"fixtures.cc"
|
45
46
|
"collection_fixture.cc"
|
@@ -127,37 +128,20 @@ include_directories(
|
|
127
128
|
${CPPHOCON_INCLUDE_DIRS}
|
128
129
|
)
|
129
130
|
|
130
|
-
# On EL 4, we run into a linking error when trying to create libraries or
|
131
|
-
# executables that link in a static library with code using threads. As I
|
132
|
-
# described in https://gcc.gnu.org/ml/gcc-help/2015-08/msg00035.html, we get
|
133
|
-
# the error undefined reference to symbol '__tls_get_addr@@GLIBC_2.3'.
|
134
|
-
# Build mock_server as a separate shared library to avoid this error.
|
135
131
|
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-deprecated-declarations")
|
136
|
-
|
137
|
-
|
138
|
-
|
139
|
-
|
140
|
-
|
132
|
+
if (WIN32)
|
133
|
+
# On Windows with GCC 5.2, Boost.System emits warnings that aren't correctly
|
134
|
+
# suppressed by pragmas. Explicitly skip them.
|
135
|
+
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wno-unused-variable")
|
136
|
+
endif()
|
141
137
|
|
142
138
|
add_executable(libfacter_test $<TARGET_OBJECTS:libfactersrc>
|
143
139
|
${LIBFACTER_TESTS_COMMON_SOURCES}
|
144
140
|
${LIBFACTER_TESTS_PLATFORM_SOURCES}
|
145
141
|
${LIBFACTER_TESTS_CATEGORY_SOURCES})
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
# by Boost.Log in Leatherman logging.
|
150
|
-
if (WIN32)
|
151
|
-
target_link_libraries(libfacter_test
|
152
|
-
${LIBS}
|
153
|
-
${LIBFACTER_TESTS_PLATFORM_LIBRARIES}
|
154
|
-
mock-server)
|
155
|
-
else()
|
156
|
-
target_link_libraries(libfacter_test
|
157
|
-
mock-server
|
158
|
-
${LIBS}
|
159
|
-
${LIBFACTER_TESTS_PLATFORM_LIBRARIES})
|
160
|
-
endif()
|
142
|
+
target_link_libraries(libfacter_test
|
143
|
+
${LIBS}
|
144
|
+
${LIBFACTER_TESTS_PLATFORM_LIBRARIES})
|
161
145
|
|
162
146
|
if (${CMAKE_SYSTEM_NAME} MATCHES "Darwin" AND BOOST_STATIC AND LEATHERMAN_USE_LOCALES)
|
163
147
|
target_link_libraries(libfacter_test iconv)
|
@@ -6,7 +6,7 @@
|
|
6
6
|
#, fuzzy
|
7
7
|
msgid ""
|
8
8
|
msgstr ""
|
9
|
-
"Project-Id-Version: FACTER 3.12.
|
9
|
+
"Project-Id-Version: FACTER 3.12.1\n"
|
10
10
|
"Report-Msgid-Bugs-To: docs@puppet.com\n"
|
11
11
|
"POT-Creation-Date: \n"
|
12
12
|
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
@@ -1225,11 +1225,6 @@ msgstr ""
|
|
1225
1225
|
msgid "failed adding platform facts that require WMI: {1}"
|
1226
1226
|
msgstr ""
|
1227
1227
|
|
1228
|
-
#. debug
|
1229
|
-
#: lib/src/facts/windows/dmi_resolver.cc
|
1230
|
-
msgid "WMI query returned no results for {1} with value {2}."
|
1231
|
-
msgstr ""
|
1232
|
-
|
1233
1228
|
#. debug
|
1234
1229
|
#: lib/src/facts/windows/dmi_resolver.cc
|
1235
1230
|
msgid "WMI query returned no results for {1} with values {2} and {3}."
|
@@ -1294,6 +1289,13 @@ msgstr ""
|
|
1294
1289
|
msgid "error finding SYSTEMROOT: {1}"
|
1295
1290
|
msgstr ""
|
1296
1291
|
|
1292
|
+
#. debug
|
1293
|
+
#: lib/src/facts/windows/operating_system_resolver.cc
|
1294
|
+
msgid ""
|
1295
|
+
"Could not resolve the OS release and OS major version facts from the kernel "
|
1296
|
+
"version fact"
|
1297
|
+
msgstr ""
|
1298
|
+
|
1297
1299
|
#. debug
|
1298
1300
|
#: lib/src/facts/windows/processor_resolver.cc
|
1299
1301
|
msgid "WMI processor Name, Architecture query returned no results."
|
@@ -1529,6 +1531,16 @@ msgstr ""
|
|
1529
1531
|
msgid "timeout= is not supported for custom facts and will be ignored."
|
1530
1532
|
msgstr ""
|
1531
1533
|
|
1534
|
+
#. debug
|
1535
|
+
#: lib/src/ruby/ruby.cc
|
1536
|
+
msgid "Redirecting ruby's stdout to stderr"
|
1537
|
+
msgstr ""
|
1538
|
+
|
1539
|
+
#. debug
|
1540
|
+
#: lib/src/ruby/ruby.cc
|
1541
|
+
msgid "Restoring Ruby's stdout"
|
1542
|
+
msgstr ""
|
1543
|
+
|
1532
1544
|
#. warning
|
1533
1545
|
#: lib/src/ruby/ruby.cc
|
1534
1546
|
msgid "Could not load puppet; some facts may be unavailable: {1}"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: facter
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 3.12.
|
4
|
+
version: 3.12.1.cfacter.20181023
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Puppet
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2018-10-
|
12
|
+
date: 2018-10-23 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description:
|
15
15
|
email: info@puppet.com
|