facter 4.0.44 → 4.0.50
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/lib/docs/generate.rb +32 -0
- data/lib/docs/template.erb +34 -0
- data/lib/facter.rb +52 -7
- data/lib/facter/config.rb +53 -9
- data/lib/facter/custom_facts/core/aggregate.rb +7 -0
- data/lib/facter/custom_facts/core/execution.rb +28 -4
- data/lib/facter/custom_facts/core/execution/base.rb +36 -35
- data/lib/facter/custom_facts/core/execution/popen3.rb +47 -0
- data/lib/facter/custom_facts/util/collection.rb +1 -2
- data/lib/facter/custom_facts/util/directory_loader.rb +1 -1
- data/lib/facter/custom_facts/util/fact.rb +40 -4
- data/lib/facter/custom_facts/util/loader.rb +1 -1
- data/lib/facter/custom_facts/util/parser.rb +17 -3
- data/lib/facter/custom_facts/util/resolution.rb +2 -2
- data/lib/facter/facts/aix/disks.rb +1 -1
- data/lib/facter/facts/aix/interfaces.rb +1 -0
- data/lib/facter/facts/aix/memory/swap/available.rb +1 -1
- data/lib/facter/facts/aix/memory/swap/available_bytes.rb +1 -1
- data/lib/facter/facts/aix/memory/swap/total.rb +1 -1
- data/lib/facter/facts/aix/memory/swap/total_bytes.rb +1 -1
- data/lib/facter/facts/aix/memory/swap/used.rb +1 -1
- data/lib/facter/facts/aix/memory/system/available.rb +1 -1
- data/lib/facter/facts/aix/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/aix/memory/system/total.rb +1 -1
- data/lib/facter/facts/aix/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/aix/memory/system/used.rb +1 -1
- data/lib/facter/facts/aix/processors/speed.rb +1 -1
- data/lib/facter/facts/aix/ssh.rb +1 -1
- data/lib/facter/facts/aix/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/aix/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/alpine/os/release.rb +29 -0
- data/lib/facter/facts/amzn/os/release.rb +29 -0
- data/lib/facter/facts/bsd/processors/speed.rb +1 -1
- data/lib/facter/facts/devuan/os/distro/release.rb +36 -0
- data/lib/facter/facts/devuan/os/release.rb +29 -0
- data/lib/facter/facts/freebsd/is_virtual.rb +25 -0
- data/lib/facter/facts/freebsd/memory/swap/available.rb +1 -1
- data/lib/facter/facts/freebsd/memory/swap/available_bytes.rb +1 -1
- data/lib/facter/facts/freebsd/memory/swap/total.rb +1 -1
- data/lib/facter/facts/freebsd/memory/swap/total_bytes.rb +1 -1
- data/lib/facter/facts/freebsd/memory/swap/used.rb +1 -1
- data/lib/facter/facts/freebsd/memory/system/available.rb +1 -1
- data/lib/facter/facts/freebsd/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/freebsd/memory/system/total.rb +1 -1
- data/lib/facter/facts/freebsd/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/freebsd/memory/system/used.rb +1 -1
- data/lib/facter/facts/freebsd/processors/speed.rb +1 -1
- data/lib/facter/facts/freebsd/ssh.rb +1 -1
- data/lib/facter/facts/freebsd/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/freebsd/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/freebsd/virtual.rb +22 -0
- data/lib/facter/facts/gentoo/os/release.rb +29 -0
- data/lib/facter/facts/linux/dhcp_servers.rb +1 -0
- data/lib/facter/facts/linux/disks.rb +1 -1
- data/lib/facter/facts/linux/ec2_metadata.rb +1 -1
- data/lib/facter/facts/linux/ec2_userdata.rb +1 -1
- data/lib/facter/facts/linux/hypervisors/kvm.rb +1 -1
- data/lib/facter/facts/linux/hypervisors/xen.rb +1 -1
- data/lib/facter/facts/linux/interfaces.rb +1 -0
- data/lib/facter/facts/linux/is_virtual.rb +2 -2
- data/lib/facter/facts/linux/memory/swap/available.rb +1 -1
- data/lib/facter/facts/linux/memory/swap/available_bytes.rb +1 -1
- data/lib/facter/facts/linux/memory/swap/total.rb +1 -1
- data/lib/facter/facts/linux/memory/swap/total_bytes.rb +1 -1
- data/lib/facter/facts/linux/memory/swap/used.rb +1 -1
- data/lib/facter/facts/linux/memory/system/available.rb +1 -1
- data/lib/facter/facts/linux/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/linux/memory/system/total.rb +1 -1
- data/lib/facter/facts/linux/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/linux/memory/system/used.rb +1 -1
- data/lib/facter/facts/linux/os/family.rb +4 -2
- data/lib/facter/facts/linux/processors/speed.rb +1 -1
- data/lib/facter/facts/linux/ssh.rb +1 -1
- data/lib/facter/facts/linux/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/linux/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/linux/virtual.rb +1 -1
- data/lib/facter/facts/linuxmint/os/name.rb +18 -0
- data/lib/facter/facts/linuxmint/os/release.rb +35 -0
- data/lib/facter/facts/macosx/dhcp_servers.rb +1 -0
- data/lib/facter/facts/macosx/interfaces.rb +1 -0
- data/lib/facter/facts/macosx/memory/swap/available.rb +1 -1
- data/lib/facter/facts/macosx/memory/swap/available_bytes.rb +1 -1
- data/lib/facter/facts/macosx/memory/swap/total.rb +1 -1
- data/lib/facter/facts/macosx/memory/swap/total_bytes.rb +1 -1
- data/lib/facter/facts/macosx/memory/swap/used.rb +1 -1
- data/lib/facter/facts/macosx/memory/system/available.rb +1 -1
- data/lib/facter/facts/macosx/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/macosx/memory/system/total.rb +1 -1
- data/lib/facter/facts/macosx/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/macosx/memory/system/used.rb +1 -1
- data/lib/facter/facts/macosx/processors/speed.rb +1 -1
- data/lib/facter/facts/macosx/ssh.rb +1 -1
- data/lib/facter/facts/macosx/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/macosx/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/mageia/os/release.rb +36 -0
- data/lib/facter/facts/meego/os/release.rb +29 -0
- data/lib/facter/facts/oel/os/release.rb +29 -0
- data/lib/facter/facts/ol/os/release.rb +29 -0
- data/lib/facter/facts/openwrt/os/release.rb +35 -0
- data/lib/facter/facts/ovs/os/release.rb +29 -0
- data/lib/facter/facts/photon/os/release.rb +45 -0
- data/lib/facter/facts/rhel/os/release.rb +1 -8
- data/lib/facter/facts/slackware/os/release.rb +35 -0
- data/lib/facter/facts/solaris/dhcp_servers.rb +1 -0
- data/lib/facter/facts/solaris/disks.rb +1 -1
- data/lib/facter/facts/solaris/hypervisors/ldom.rb +3 -0
- data/lib/facter/facts/solaris/interfaces.rb +1 -0
- data/lib/facter/facts/solaris/is_virtual.rb +2 -2
- data/lib/facter/facts/solaris/ldom.rb +34 -4
- data/lib/facter/facts/solaris/memory/swap/available.rb +1 -1
- data/lib/facter/facts/solaris/memory/swap/available_bytes.rb +1 -1
- data/lib/facter/facts/solaris/memory/swap/total.rb +1 -1
- data/lib/facter/facts/solaris/memory/swap/total_bytes.rb +1 -1
- data/lib/facter/facts/solaris/memory/swap/used.rb +1 -1
- data/lib/facter/facts/solaris/memory/system/available.rb +1 -1
- data/lib/facter/facts/solaris/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/solaris/memory/system/total.rb +1 -1
- data/lib/facter/facts/solaris/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/solaris/memory/system/used.rb +1 -1
- data/lib/facter/facts/solaris/processors/speed.rb +1 -1
- data/lib/facter/facts/solaris/ssh.rb +1 -1
- data/lib/facter/facts/solaris/sshalgorithmkey.rb +1 -1
- data/lib/facter/facts/solaris/sshfp_algorithm.rb +1 -1
- data/lib/facter/facts/solaris/virtual.rb +1 -1
- data/lib/facter/facts/windows/dhcp_servers.rb +1 -0
- data/lib/facter/facts/windows/interfaces.rb +1 -0
- data/lib/facter/facts/windows/memory/system/available.rb +1 -1
- data/lib/facter/facts/windows/memory/system/available_bytes.rb +1 -1
- data/lib/facter/facts/windows/memory/system/total.rb +1 -1
- data/lib/facter/facts/windows/memory/system/total_bytes.rb +1 -1
- data/lib/facter/facts/windows/memory/system/used.rb +1 -1
- data/lib/facter/facts/windows/networking/fqdn.rb +1 -1
- data/lib/facter/facts/windows/os/release.rb +1 -1
- data/lib/facter/framework/cli/cli.rb +20 -6
- data/lib/facter/framework/config/config_reader.rb +7 -0
- data/lib/facter/framework/config/fact_groups.rb +8 -3
- data/lib/facter/framework/core/cache_manager.rb +58 -16
- data/lib/facter/framework/core/fact/internal/core_fact.rb +6 -1
- data/lib/facter/framework/core/fact/internal/internal_fact_manager.rb +38 -4
- data/lib/facter/framework/core/fact_augmenter.rb +1 -1
- data/lib/facter/framework/core/fact_loaders/external_fact_loader.rb +4 -6
- data/lib/facter/framework/core/fact_loaders/fact_loader.rb +19 -1
- data/lib/facter/framework/core/fact_manager.rb +15 -3
- data/lib/facter/framework/core/file_loader.rb +6 -2
- data/lib/facter/framework/core/options/config_file_options.rb +16 -5
- data/lib/facter/framework/core/options/option_store.rb +9 -3
- data/lib/facter/framework/detector/os_detector.rb +8 -0
- data/lib/facter/framework/logging/logger.rb +3 -3
- data/lib/facter/models/fact_collection.rb +11 -1
- data/lib/facter/models/loaded_fact.rb +2 -1
- data/lib/facter/resolvers/aio_agent_version.rb +3 -3
- data/lib/facter/resolvers/aix/{architecture_resolver.rb → architecture.rb} +6 -5
- data/lib/facter/resolvers/aix/disks.rb +7 -6
- data/lib/facter/resolvers/aix/ffi/ffi.rb +63 -0
- data/lib/facter/resolvers/aix/ffi/ffi_helper.rb +146 -20
- data/lib/facter/resolvers/aix/ffi/structs.rb +69 -0
- data/lib/facter/resolvers/aix/{filesystem_resolver.rb → filesystem.rb} +3 -3
- data/lib/facter/resolvers/aix/{hardware_resolver.rb → hardware.rb} +5 -4
- data/lib/facter/resolvers/aix/{load_averages_resolver.rb → load_averages.rb} +4 -3
- data/lib/facter/resolvers/aix/memory.rb +5 -4
- data/lib/facter/resolvers/aix/mountpoints.rb +7 -6
- data/lib/facter/resolvers/aix/{networking_resolver.rb → networking.rb} +13 -19
- data/lib/facter/resolvers/aix/nim.rb +2 -2
- data/lib/facter/resolvers/aix/os_level.rb +2 -2
- data/lib/facter/resolvers/aix/partitions.rb +8 -7
- data/lib/facter/resolvers/aix/processors.rb +6 -5
- data/lib/facter/resolvers/aix/serialnumber.rb +3 -3
- data/lib/facter/resolvers/{augeas_resolver.rb → augeas.rb} +2 -2
- data/lib/facter/resolvers/base_resolver.rb +17 -7
- data/lib/facter/resolvers/bsd/processors.rb +3 -2
- data/lib/facter/resolvers/cloud.rb +3 -3
- data/lib/facter/resolvers/containers.rb +6 -5
- data/lib/facter/resolvers/debian_version.rb +3 -3
- data/lib/facter/resolvers/{disk_resolver.rb → disk.rb} +7 -4
- data/lib/facter/resolvers/{dmi_resolver.rb → dmi.rb} +4 -3
- data/lib/facter/resolvers/dmi_decode.rb +2 -2
- data/lib/facter/resolvers/ec2.rb +6 -3
- data/lib/facter/resolvers/{eos_release_resolver.rb → eos_release.rb} +3 -3
- data/lib/facter/resolvers/{facterversion_resolver.rb → facterversion.rb} +2 -2
- data/lib/facter/resolvers/{filesystems_resolver.rb → filesystems.rb} +6 -3
- data/lib/facter/resolvers/{fips_enabled_resolver.rb → fips_enabled.rb} +6 -3
- data/lib/facter/resolvers/freebsd/{dmi_resolver.rb → dmi.rb} +2 -2
- data/lib/facter/resolvers/freebsd/{freebsd_version_resolver.rb → freebsd_version.rb} +10 -8
- data/lib/facter/resolvers/freebsd/{geom_resolver.rb → geom.rb} +4 -3
- data/lib/facter/resolvers/freebsd/processors.rb +3 -2
- data/lib/facter/resolvers/freebsd/{swap_memory_resolver.rb → swap_memory.rb} +6 -4
- data/lib/facter/resolvers/freebsd/{system_memory_resolver.rb → system_memory.rb} +5 -3
- data/lib/facter/resolvers/freebsd/virtual.rb +45 -0
- data/lib/facter/resolvers/gce.rb +4 -3
- data/lib/facter/resolvers/hostname.rb +92 -0
- data/lib/facter/resolvers/{identity_resolver.rb → identity.rb} +3 -2
- data/lib/facter/resolvers/linux/docker_uptime.rb +4 -3
- data/lib/facter/resolvers/linux/load_averages.rb +4 -3
- data/lib/facter/resolvers/load_averages.rb +6 -4
- data/lib/facter/resolvers/{lpar_resolver.rb → lpar.rb} +2 -2
- data/lib/facter/resolvers/{lsb_release_resolver.rb → lsb_release.rb} +2 -2
- data/lib/facter/resolvers/lspci.rb +2 -2
- data/lib/facter/resolvers/macosx/{dmi_resolver.rb → dmi.rb} +2 -2
- data/lib/facter/resolvers/macosx/{filesystems_resolver.rb → filesystems.rb} +2 -2
- data/lib/facter/resolvers/macosx/{load_averages_resolver.rb → load_averages.rb} +3 -2
- data/lib/facter/resolvers/macosx/{mountpoints_resolver.rb → mountpoints.rb} +10 -9
- data/lib/facter/resolvers/macosx/{processor_resolver.rb → processor.rb} +3 -2
- data/lib/facter/resolvers/macosx/{swap_memory_resolver.rb → swap_memory.rb} +3 -2
- data/lib/facter/resolvers/macosx/{system_memory_resolver.rb → system_memory.rb} +3 -2
- data/lib/facter/resolvers/macosx/{system_profiler_resolver.rb → system_profiler.rb} +5 -7
- data/lib/facter/resolvers/{memory_resolver.rb → memory.rb} +5 -3
- data/lib/facter/resolvers/{mountpoints_resolver.rb → mountpoints.rb} +13 -10
- data/lib/facter/resolvers/{networking_resolver.rb → networking.rb} +10 -7
- data/lib/facter/resolvers/networking_linux.rb +296 -0
- data/lib/facter/resolvers/open_vz.rb +3 -5
- data/lib/facter/resolvers/{os_release_resolver.rb → os_release.rb} +3 -3
- data/lib/facter/resolvers/partitions.rb +8 -7
- data/lib/facter/resolvers/{path_resolver.rb → path.rb} +2 -2
- data/lib/facter/resolvers/{processors_resolver.rb → processors.rb} +7 -4
- data/lib/facter/resolvers/{redhat_release_resolver.rb → redhat_release.rb} +3 -3
- data/lib/facter/resolvers/release_from_first_line.rb +41 -0
- data/lib/facter/resolvers/{ruby_resolver.rb → ruby.rb} +2 -2
- data/lib/facter/resolvers/{selinux_resolver.rb → selinux.rb} +5 -5
- data/lib/facter/resolvers/solaris/disks.rb +3 -3
- data/lib/facter/resolvers/solaris/dmi.rb +2 -2
- data/lib/facter/resolvers/solaris/dmi_sparc.rb +2 -2
- data/lib/facter/resolvers/solaris/filesystems.rb +2 -2
- data/lib/facter/resolvers/solaris/ipaddress.rb +3 -2
- data/lib/facter/resolvers/solaris/ldom.rb +2 -4
- data/lib/facter/resolvers/solaris/memory.rb +5 -4
- data/lib/facter/resolvers/solaris/mountpoints.rb +14 -13
- data/lib/facter/resolvers/solaris/networking.rb +51 -43
- data/lib/facter/resolvers/solaris/os_release.rb +4 -3
- data/lib/facter/resolvers/solaris/processors.rb +3 -2
- data/lib/facter/resolvers/solaris/zone.rb +2 -2
- data/lib/facter/resolvers/solaris/zone_name.rb +2 -2
- data/lib/facter/resolvers/specific_release_file.rb +35 -0
- data/lib/facter/resolvers/{ssh_resolver.rb → ssh.rb} +9 -5
- data/lib/facter/resolvers/{suse_release_resolver.rb → suse_release.rb} +3 -3
- data/lib/facter/resolvers/{sw_vers_resolver.rb → sw_vers.rb} +3 -3
- data/lib/facter/resolvers/{timezone_resolver.rb → timezone.rb} +2 -2
- data/lib/facter/resolvers/{uname_resolver.rb → uname.rb} +2 -2
- data/lib/facter/resolvers/{uptime_resolver.rb → uptime.rb} +4 -4
- data/lib/facter/resolvers/virt_what.rb +2 -2
- data/lib/facter/resolvers/vmware.rb +2 -2
- data/lib/facter/resolvers/windows/aio_agent_version.rb +3 -3
- data/lib/facter/resolvers/windows/{dmi_bios_resolver.rb → dmi_bios.rb} +3 -3
- data/lib/facter/resolvers/windows/{dmi_computersystem_resolver.rb → dmi_computersystem.rb} +3 -3
- data/lib/facter/resolvers/windows/ffi/network_utils.rb +1 -2
- data/lib/facter/resolvers/windows/{fips_resolver.rb → fips.rb} +3 -2
- data/lib/facter/resolvers/windows/{hardware_architecture_resolver.rb → hardware_architecture.rb} +3 -2
- data/lib/facter/resolvers/windows/{identity_resolver.rb → identity.rb} +3 -2
- data/lib/facter/resolvers/windows/{kernel_resolver.rb → kernel.rb} +4 -2
- data/lib/facter/resolvers/windows/{memory_resolver.rb → memory.rb} +8 -2
- data/lib/facter/resolvers/windows/{netkvm_resolver.rb → netkvm.rb} +3 -2
- data/lib/facter/resolvers/windows/{networking_resolver.rb → networking.rb} +24 -6
- data/lib/facter/resolvers/windows/{processors_resolver.rb → processors.rb} +4 -3
- data/lib/facter/resolvers/windows/{product_release_resolver.rb → product_release.rb} +3 -2
- data/lib/facter/resolvers/windows/ssh.rb +6 -4
- data/lib/facter/resolvers/windows/{system32_resolver.rb → system32.rb} +4 -2
- data/lib/facter/resolvers/windows/{uptime_resolver.rb → uptime.rb} +4 -3
- data/lib/facter/resolvers/windows/{virtualization_resolver.rb → virtualization.rb} +4 -3
- data/lib/facter/resolvers/windows/{win_os_description_resolver.rb → win_os_description.rb} +5 -3
- data/lib/facter/resolvers/{wpar_resolver.rb → wpar.rb} +2 -2
- data/lib/facter/resolvers/xen.rb +3 -3
- data/lib/facter/resolvers/zfs.rb +3 -2
- data/lib/facter/resolvers/zpool.rb +3 -2
- data/lib/facter/util/aix/info_extractor.rb +24 -0
- data/lib/facter/util/aix/odm_query.rb +46 -0
- data/lib/facter/util/api_debugger.rb +33 -29
- data/lib/facter/util/facts/facts_utils.rb +47 -0
- data/lib/facter/util/facts/unit_converter.rb +68 -0
- data/lib/facter/util/facts/uptime_parser.rb +128 -0
- data/lib/facter/util/facts/virtual_detector.rb +90 -0
- data/lib/facter/util/facts/windows_release_finder.rb +55 -0
- data/lib/facter/{resolvers/macosx/utils → util/macosx}/system_profile_executor.rb +1 -1
- data/lib/facter/util/resolvers/aws_token.rb +37 -0
- data/lib/facter/{resolvers/utils → util/resolvers}/ffi/load_averages.rb +2 -2
- data/lib/facter/util/resolvers/filesystem_helper.rb +47 -0
- data/lib/facter/util/resolvers/fingerprint.rb +15 -0
- data/lib/facter/{resolvers/utils → util/resolvers}/http.rb +17 -10
- data/lib/facter/util/resolvers/networking/dhcp.rb +21 -0
- data/lib/facter/util/resolvers/networking/networking.rb +109 -0
- data/lib/facter/util/resolvers/networking/primary_interface.rb +82 -0
- data/lib/facter/util/resolvers/ssh.rb +17 -0
- data/lib/facter/util/resolvers/ssh_helper.rb +31 -0
- data/lib/facter/{resolvers/utils → util/resolvers}/uptime_helper.rb +2 -2
- data/lib/facter/{framework/utils → util}/utils.rb +0 -4
- data/lib/facter/util/windows/win32ole.rb +30 -0
- data/lib/facter/version.rb +1 -1
- metadata +125 -117
- data/lib/facter/facts/aix/puppet_version.rb +0 -15
- data/lib/facter/facts/freebsd/puppet_version.rb +0 -15
- data/lib/facter/facts/linux/puppet_version.rb +0 -15
- data/lib/facter/facts/macosx/puppet_version.rb +0 -15
- data/lib/facter/facts/solaris/puppet_version.rb +0 -15
- data/lib/facter/facts/windows/puppet_version.rb +0 -15
- data/lib/facter/facts_utils/facts_utils.rb +0 -12
- data/lib/facter/facts_utils/unit_converter.rb +0 -59
- data/lib/facter/facts_utils/uptime_parser.rb +0 -124
- data/lib/facter/facts_utils/virtual_detector.rb +0 -78
- data/lib/facter/facts_utils/windows_release_finder.rb +0 -51
- data/lib/facter/resolvers/aix/utils/info_extractor.rb +0 -20
- data/lib/facter/resolvers/aix/utils/odm_query.rb +0 -42
- data/lib/facter/resolvers/hostname_resolver.rb +0 -44
- data/lib/facter/resolvers/networking_linux_resolver.rb +0 -159
- data/lib/facter/resolvers/puppet_version_resolver.rb +0 -26
- data/lib/facter/resolvers/utils/filesystem_helper.rb +0 -43
- data/lib/facter/resolvers/utils/fingerprint.rb +0 -11
- data/lib/facter/resolvers/utils/networking.rb +0 -86
- data/lib/facter/resolvers/utils/ssh.rb +0 -13
- data/lib/facter/resolvers/utils/ssh_helper.rb +0 -27
- data/lib/facter/resolvers/windows/utils/win32ole.rb +0 -24
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: c40ef2043f777620f54c82fc1ee3e746a9b881b74771b3e6ed693773e2ae2e57
|
|
4
|
+
data.tar.gz: d6f1f89339c820f37f0a37b07ae42085a231468ce759c9d1a92b0fc7963e7f9e
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 91d8d74575aeff6e4b31445a362019fd8f2200f888478b3e2c019a5ccf740b1f9a8590f3edde89f69a66af3bca778d3ab6b73b658c04853122507633221066e3
|
|
7
|
+
data.tar.gz: e6cf614befcb67eea1ac89c35a22532c04e40225a87b1d81a6dbf00d227ff55f29630a8637239daf44e4f4ab5de13cb5c9c29b4b612358a8063ee36985d243f8
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
# frozen_string_literal: true
|
|
3
|
+
|
|
4
|
+
# Generates a markdown file containing fact documentation.
|
|
5
|
+
# usage: ruby generate.rb > facts.md
|
|
6
|
+
|
|
7
|
+
require 'yaml'
|
|
8
|
+
require 'erb'
|
|
9
|
+
require 'ostruct'
|
|
10
|
+
|
|
11
|
+
PATH_TO_SCHEMA = File.join(File.dirname(__FILE__), '../schema/facter.yaml')
|
|
12
|
+
PATH_TO_TEMPLATE = File.join(File.dirname(__FILE__), 'template.erb')
|
|
13
|
+
|
|
14
|
+
schema = YAML.load_file(PATH_TO_SCHEMA)
|
|
15
|
+
|
|
16
|
+
def format_facts(fact_hash)
|
|
17
|
+
scope = OpenStruct.new({
|
|
18
|
+
facts: fact_hash
|
|
19
|
+
})
|
|
20
|
+
|
|
21
|
+
erb = if ERB.instance_method(:initialize).parameters.assoc(:key) # Ruby 2.6+
|
|
22
|
+
ERB.new(File.read(PATH_TO_TEMPLATE), trim_mode: '-')
|
|
23
|
+
else
|
|
24
|
+
ERB.new(File.read(PATH_TO_TEMPLATE), nil, '-')
|
|
25
|
+
end
|
|
26
|
+
erb.result(scope.instance_eval { binding })
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
print "## Modern Facts\n\n"
|
|
30
|
+
print format_facts(schema.reject { |_name, info| info['hidden'] == true })
|
|
31
|
+
print "## Legacy Facts\n\n"
|
|
32
|
+
print format_facts(schema.reject { |_name, info| info['hidden'].nil? || info['hidden'] == false })
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
<%# This template is used to generate a markdown file documenting facts. -%>
|
|
2
|
+
<%# Run 'ruby generate.rb > facts.md' to generate the markdown file. -%>
|
|
3
|
+
<%
|
|
4
|
+
def format_fact_element(name, info, indent = '')
|
|
5
|
+
subelements = (info['elements'] || {}).map{|n, i| format_fact_element(n, i, "#{indent} ")}.join('')
|
|
6
|
+
|
|
7
|
+
"#{indent}* `#{name}` (#{info['type']}) --- #{info['description']}\n#{subelements}"
|
|
8
|
+
end
|
|
9
|
+
-%>
|
|
10
|
+
<% facts.each do |name, schema| -%>
|
|
11
|
+
### `<%= name %>`
|
|
12
|
+
|
|
13
|
+
<% if schema['hidden'] -%>
|
|
14
|
+
This legacy fact is hidden by default in Facter's command-line output.
|
|
15
|
+
|
|
16
|
+
<% end -%>
|
|
17
|
+
**Type:** <%= schema['type'] %>
|
|
18
|
+
|
|
19
|
+
**Purpose:**
|
|
20
|
+
|
|
21
|
+
<%= schema['description'] %>
|
|
22
|
+
|
|
23
|
+
<% if schema['elements'] -%>
|
|
24
|
+
**Elements:**
|
|
25
|
+
|
|
26
|
+
<%= schema['elements'].map{|name, info| format_fact_element(name, info)}.join('') %>
|
|
27
|
+
<% end -%>
|
|
28
|
+
|
|
29
|
+
<% if schema['details'] -%>
|
|
30
|
+
**Details:**
|
|
31
|
+
|
|
32
|
+
<%= schema['details'] %>
|
|
33
|
+
<% end -%>
|
|
34
|
+
<% end -%>
|
data/lib/facter.rb
CHANGED
|
@@ -177,6 +177,18 @@ module Facter
|
|
|
177
177
|
Facter::Options[:debug] = debug_bool
|
|
178
178
|
end
|
|
179
179
|
|
|
180
|
+
def enable_sequential
|
|
181
|
+
Facter::Options[:sequential] = true
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
def disable_sequential
|
|
185
|
+
Facter::Options[:sequential] = false
|
|
186
|
+
end
|
|
187
|
+
|
|
188
|
+
def sequential?
|
|
189
|
+
Facter::Options[:sequential]
|
|
190
|
+
end
|
|
191
|
+
|
|
180
192
|
# Iterates over fact names and values
|
|
181
193
|
#
|
|
182
194
|
# @yieldparam [String] name the fact name
|
|
@@ -249,6 +261,26 @@ module Facter
|
|
|
249
261
|
nil
|
|
250
262
|
end
|
|
251
263
|
|
|
264
|
+
# Enables/Disables external facts.
|
|
265
|
+
# @param enable_external [boolean]
|
|
266
|
+
#
|
|
267
|
+
# @return nil
|
|
268
|
+
#
|
|
269
|
+
# @api public
|
|
270
|
+
def load_external(enable_external)
|
|
271
|
+
# enable_external param needs negation because behind the scene
|
|
272
|
+
# no_external_facts= method is negating the parameter again.
|
|
273
|
+
Options[:no_external_facts] = !enable_external
|
|
274
|
+
|
|
275
|
+
if enable_external
|
|
276
|
+
logger.debug('Facter.load_external(true) called. External facts will be loaded')
|
|
277
|
+
else
|
|
278
|
+
logger.debug('Facter.load_external(false) called. External facts will NOT be loaded')
|
|
279
|
+
end
|
|
280
|
+
|
|
281
|
+
nil
|
|
282
|
+
end
|
|
283
|
+
|
|
252
284
|
# Register directories to be searched for custom facts. The registered directories
|
|
253
285
|
# must be absolute paths or they will be ignored.
|
|
254
286
|
# @param dirs [Array<String>] An array of searched directories
|
|
@@ -298,9 +330,12 @@ module Facter
|
|
|
298
330
|
# @api public
|
|
299
331
|
def to_hash
|
|
300
332
|
log_blocked_facts
|
|
333
|
+
logger.debug("Facter version: #{Facter::VERSION}")
|
|
301
334
|
|
|
302
335
|
resolved_facts = Facter::FactManager.instance.resolve_facts
|
|
303
|
-
|
|
336
|
+
resolved_facts.reject! { |fact| fact.type == :custom && fact.value.nil? }
|
|
337
|
+
collection = Facter::FactCollection.new.build_fact_collection!(resolved_facts)
|
|
338
|
+
Hash[collection]
|
|
304
339
|
end
|
|
305
340
|
|
|
306
341
|
# Check whether printing stack trace is enabled
|
|
@@ -339,14 +374,16 @@ module Facter
|
|
|
339
374
|
# @param options [Hash] parameters for the fact - attributes
|
|
340
375
|
# of {Facter::Util::Fact} and {Facter::Util::Resolution} can be
|
|
341
376
|
# supplied here
|
|
342
|
-
# @param user_queries [
|
|
377
|
+
# @param user_queries [Array] the fact names
|
|
343
378
|
#
|
|
344
379
|
# @return [FactCollection] hash with fact names and values
|
|
345
380
|
#
|
|
346
381
|
# @api public
|
|
347
382
|
def values(options, user_queries)
|
|
348
383
|
init_cli_options(options, user_queries)
|
|
384
|
+
log_blocked_facts
|
|
349
385
|
resolved_facts = Facter::FactManager.instance.resolve_facts(user_queries)
|
|
386
|
+
resolved_facts.reject! { |fact| fact.type == :custom && fact.value.nil? }
|
|
350
387
|
|
|
351
388
|
if user_queries.count.zero?
|
|
352
389
|
Facter::FactCollection.new.build_fact_collection!(resolved_facts)
|
|
@@ -372,13 +409,13 @@ module Facter
|
|
|
372
409
|
def to_user_output(cli_options, *args)
|
|
373
410
|
init_cli_options(cli_options, args)
|
|
374
411
|
logger.info("executed with command line: #{ARGV.drop(1).join(' ')}")
|
|
412
|
+
logger.debug("Facter version: #{Facter::VERSION}")
|
|
375
413
|
log_blocked_facts
|
|
376
|
-
resolved_facts =
|
|
414
|
+
resolved_facts = resolve_facts_for_user_query(args)
|
|
377
415
|
fact_formatter = Facter::FormatterFactory.build(Facter::Options.get)
|
|
378
|
-
|
|
379
416
|
status = error_check(resolved_facts)
|
|
380
417
|
|
|
381
|
-
[fact_formatter.format(resolved_facts), status
|
|
418
|
+
[fact_formatter.format(resolved_facts), status]
|
|
382
419
|
end
|
|
383
420
|
|
|
384
421
|
# Logs an exception and an optional message
|
|
@@ -432,6 +469,15 @@ module Facter
|
|
|
432
469
|
|
|
433
470
|
private
|
|
434
471
|
|
|
472
|
+
def resolve_facts_for_user_query(user_query)
|
|
473
|
+
resolved_facts = Facter::FactManager.instance.resolve_facts(user_query)
|
|
474
|
+
user_querie = resolved_facts.uniq(&:user_query).map(&:user_query).first
|
|
475
|
+
|
|
476
|
+
resolved_facts.reject! { |fact| fact.type == :custom && fact.value.nil? } if user_querie&.empty?
|
|
477
|
+
|
|
478
|
+
resolved_facts
|
|
479
|
+
end
|
|
480
|
+
|
|
435
481
|
def parse_exception(exception, error_message)
|
|
436
482
|
if exception.is_a?(Exception)
|
|
437
483
|
error_message << exception.message if error_message.empty?
|
|
@@ -490,14 +536,13 @@ module Facter
|
|
|
490
536
|
#
|
|
491
537
|
# @api private
|
|
492
538
|
def error_check(resolved_facts)
|
|
539
|
+
status = 0
|
|
493
540
|
if Options[:strict]
|
|
494
541
|
missing_names = resolved_facts.select { |fact| fact.type == :nil }.map(&:user_query)
|
|
495
542
|
|
|
496
543
|
if missing_names.count.positive?
|
|
497
544
|
status = 1
|
|
498
545
|
log_errors(missing_names)
|
|
499
|
-
else
|
|
500
|
-
status = nil
|
|
501
546
|
end
|
|
502
547
|
end
|
|
503
548
|
|
data/lib/facter/config.rb
CHANGED
|
@@ -7,10 +7,13 @@ module Facter
|
|
|
7
7
|
{
|
|
8
8
|
'Linux' => [
|
|
9
9
|
{
|
|
10
|
-
'Debian' =>
|
|
11
|
-
Elementary
|
|
12
|
-
Ubuntu
|
|
13
|
-
|
|
10
|
+
'Debian' => [
|
|
11
|
+
'Elementary',
|
|
12
|
+
{ 'Ubuntu' => [
|
|
13
|
+
'Linuxmint'
|
|
14
|
+
] },
|
|
15
|
+
'Raspbian',
|
|
16
|
+
'Devuan'
|
|
14
17
|
]
|
|
15
18
|
},
|
|
16
19
|
{
|
|
@@ -20,13 +23,23 @@ module Facter
|
|
|
20
23
|
Centos
|
|
21
24
|
Ol
|
|
22
25
|
Scientific
|
|
26
|
+
Meego
|
|
27
|
+
Oel
|
|
28
|
+
Ovs
|
|
23
29
|
]
|
|
24
30
|
},
|
|
25
31
|
{
|
|
26
|
-
'Sles' => [
|
|
27
|
-
|
|
32
|
+
'Sles' => %w[
|
|
33
|
+
Opensuse
|
|
34
|
+
Sled
|
|
28
35
|
]
|
|
29
|
-
}
|
|
36
|
+
},
|
|
37
|
+
'Gentoo',
|
|
38
|
+
'Alpine',
|
|
39
|
+
'Photon',
|
|
40
|
+
'Slackware',
|
|
41
|
+
'Mageia',
|
|
42
|
+
'Openwrt'
|
|
30
43
|
]
|
|
31
44
|
},
|
|
32
45
|
{
|
|
@@ -42,6 +55,9 @@ module Facter
|
|
|
42
55
|
end
|
|
43
56
|
unless defined? FACT_GROUPS
|
|
44
57
|
FACT_GROUPS = {
|
|
58
|
+
'AIX NIM type' => [
|
|
59
|
+
'nim_type'
|
|
60
|
+
],
|
|
45
61
|
'EC2' => %w[
|
|
46
62
|
ec2_metadata
|
|
47
63
|
ec2_userdata
|
|
@@ -49,6 +65,10 @@ module Facter
|
|
|
49
65
|
'GCE' => [
|
|
50
66
|
'gce'
|
|
51
67
|
],
|
|
68
|
+
'Xen' => %w[
|
|
69
|
+
xen
|
|
70
|
+
xendomains
|
|
71
|
+
],
|
|
52
72
|
'augeas' => %w[
|
|
53
73
|
augeas
|
|
54
74
|
augeasversion
|
|
@@ -69,11 +89,18 @@ module Facter
|
|
|
69
89
|
uuid
|
|
70
90
|
chassistype
|
|
71
91
|
],
|
|
92
|
+
'disks' => %w[
|
|
93
|
+
blockdevices
|
|
94
|
+
disks
|
|
95
|
+
],
|
|
72
96
|
'file system' => %w[
|
|
73
97
|
mountpoints
|
|
74
98
|
filesystems
|
|
75
99
|
partitions
|
|
76
100
|
],
|
|
101
|
+
'fips' => [
|
|
102
|
+
'fips_enabled'
|
|
103
|
+
],
|
|
77
104
|
'hypervisors' => [
|
|
78
105
|
'hypervisors'
|
|
79
106
|
],
|
|
@@ -112,6 +139,7 @@ module Facter
|
|
|
112
139
|
netmask6
|
|
113
140
|
network
|
|
114
141
|
network6
|
|
142
|
+
scope6
|
|
115
143
|
macaddress
|
|
116
144
|
interfaces
|
|
117
145
|
domain
|
|
@@ -209,6 +237,23 @@ module Facter
|
|
|
209
237
|
is_virtual
|
|
210
238
|
cloud
|
|
211
239
|
],
|
|
240
|
+
'ldom' => [
|
|
241
|
+
'ldom'
|
|
242
|
+
],
|
|
243
|
+
'Solaris zone' => %w[
|
|
244
|
+
zones
|
|
245
|
+
zonename
|
|
246
|
+
solaris_zones
|
|
247
|
+
],
|
|
248
|
+
'ZFS' => %w[
|
|
249
|
+
zfs_version
|
|
250
|
+
zfs_featurenumbers
|
|
251
|
+
],
|
|
252
|
+
'ZFS storage pool' => %w[
|
|
253
|
+
zpool_version
|
|
254
|
+
zpool_featureflags
|
|
255
|
+
zpool_featurenumbers
|
|
256
|
+
],
|
|
212
257
|
'legacy' => [
|
|
213
258
|
'architecture',
|
|
214
259
|
'augeasversion',
|
|
@@ -280,8 +325,7 @@ module Facter
|
|
|
280
325
|
'operatingsystemrelease',
|
|
281
326
|
'osfamily',
|
|
282
327
|
'physicalprocessorcount',
|
|
283
|
-
'processor
|
|
284
|
-
'processor*',
|
|
328
|
+
'processor[0-9]+.*',
|
|
285
329
|
'processorcount',
|
|
286
330
|
'productname',
|
|
287
331
|
'rubyplatform',
|
|
@@ -24,6 +24,13 @@ module Facter
|
|
|
24
24
|
# @api public
|
|
25
25
|
attr_reader :name
|
|
26
26
|
|
|
27
|
+
# @!attribute [r] fact_type
|
|
28
|
+
#
|
|
29
|
+
# @return [Symbol] The fact type of the aggregate resolution
|
|
30
|
+
#
|
|
31
|
+
# @api private
|
|
32
|
+
attr_reader :fact_type
|
|
33
|
+
|
|
27
34
|
# @!attribute [r] deps
|
|
28
35
|
#
|
|
29
36
|
# @return [LegacyFacter::Core::DirectedGraph]
|
|
@@ -98,16 +98,19 @@ module Facter
|
|
|
98
98
|
# Execute a command and return the output of that program.
|
|
99
99
|
# @param command [String] Command to run
|
|
100
100
|
#
|
|
101
|
-
# @param options [Hash] Hash with options for the
|
|
101
|
+
# @param options [Hash] Hash with options for the command
|
|
102
102
|
#
|
|
103
|
-
#
|
|
103
|
+
# Options accepted values :on_fail How to behave when the command could
|
|
104
104
|
# not be run. Specifying :raise will raise an error, anything else will
|
|
105
105
|
# return that object on failure. Default is :raise.
|
|
106
|
+
# :logger Optional logger used to log the command's stderr.
|
|
107
|
+
# :time_limit Optional time out for the specified command. If no time_limit is passed,
|
|
108
|
+
# a default of 300 seconds is used.
|
|
106
109
|
#
|
|
107
110
|
# @raise [Facter::Core::Execution::ExecutionFailure] If the command does
|
|
108
|
-
# not exist or could not be executed
|
|
111
|
+
# not exist or could not be executed and :on_fail is set to :raise
|
|
109
112
|
#
|
|
110
|
-
# @return [String] the output of the program, or the value of :on_fail if
|
|
113
|
+
# @return [String] the output of the program, or the value of :on_fail (if it's different than :raise) if
|
|
111
114
|
# command execution failed and :on_fail was specified.
|
|
112
115
|
#
|
|
113
116
|
# @api public
|
|
@@ -115,6 +118,27 @@ module Facter
|
|
|
115
118
|
@@impl.execute(command, options)
|
|
116
119
|
end
|
|
117
120
|
|
|
121
|
+
# Execute a command and return the stdout and stderr of that program.
|
|
122
|
+
# @param command [String] Command to run
|
|
123
|
+
#
|
|
124
|
+
# @param on_fail[Object] How to behave when the command could
|
|
125
|
+
# not be run. Specifying :raise will raise an error, anything else will
|
|
126
|
+
# return that object on failure. Default is :raise.
|
|
127
|
+
# @param logger Optional logger used to log the command's stderr.
|
|
128
|
+
# @param time_limit Optional time out for the specified command. If no time_limit is passed,
|
|
129
|
+
# a default of 300 seconds is used.
|
|
130
|
+
#
|
|
131
|
+
# @raise [Facter::Core::Execution::ExecutionFailure] If the command does
|
|
132
|
+
# not exist or could not be executed and :on_fail is set to :raise
|
|
133
|
+
#
|
|
134
|
+
# @return [String, String] the stdout and stderr of the program, or the value of
|
|
135
|
+
# :on_fail if command execution failed and :on_fail was specified.
|
|
136
|
+
#
|
|
137
|
+
# @api private
|
|
138
|
+
def execute_command(command, on_fail = nil, logger = nil, time_limit = nil)
|
|
139
|
+
@@impl.execute_command(command, on_fail, logger, time_limit)
|
|
140
|
+
end
|
|
141
|
+
|
|
118
142
|
class ExecutionFailure < StandardError; end
|
|
119
143
|
end
|
|
120
144
|
end
|
|
@@ -1,10 +1,12 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative 'popen3'
|
|
4
|
+
|
|
3
5
|
module Facter
|
|
4
6
|
module Core
|
|
5
7
|
module Execution
|
|
6
8
|
class Base
|
|
7
|
-
STDERR_MESSAGE = 'Command %s
|
|
9
|
+
STDERR_MESSAGE = 'Command %s completed with the following stderr message: %s'
|
|
8
10
|
|
|
9
11
|
def initialize
|
|
10
12
|
@log = Log.new(self)
|
|
@@ -57,39 +59,11 @@ module Facter
|
|
|
57
59
|
return on_fail
|
|
58
60
|
end
|
|
59
61
|
|
|
60
|
-
execute_command(expanded_command, on_fail, logger, time_limit)
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
private
|
|
64
|
-
|
|
65
|
-
def extract_options(options)
|
|
66
|
-
on_fail = options.fetch(:on_fail, :raise)
|
|
67
|
-
expand = options.fetch(:expand, true)
|
|
68
|
-
logger = options[:logger]
|
|
69
|
-
time_limit = options[:limit].to_i
|
|
70
|
-
time_limit = time_limit.positive? ? time_limit : nil
|
|
71
|
-
|
|
72
|
-
[on_fail, expand, logger, time_limit]
|
|
73
|
-
end
|
|
74
|
-
|
|
75
|
-
def log_stderr(msg, command, logger)
|
|
76
|
-
return if !msg || msg.empty?
|
|
77
|
-
|
|
78
|
-
if logger
|
|
79
|
-
logger.debug(format(STDERR_MESSAGE, command, msg.strip))
|
|
80
|
-
else
|
|
81
|
-
file_name = command.split('/').last
|
|
82
|
-
logger = Facter::Log.new(file_name)
|
|
83
|
-
logger.warn(format(STDERR_MESSAGE, command, msg.strip))
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
|
-
|
|
87
|
-
def builtin_command?(command)
|
|
88
|
-
output, _status = Open3.capture2("type #{command}")
|
|
89
|
-
output.chomp =~ /builtin/ ? true : false
|
|
62
|
+
out, = execute_command(expanded_command, on_fail, logger, time_limit)
|
|
63
|
+
out
|
|
90
64
|
end
|
|
91
65
|
|
|
92
|
-
def execute_command(command, on_fail, logger = nil, time_limit = nil)
|
|
66
|
+
def execute_command(command, on_fail = nil, logger = nil, time_limit = nil)
|
|
93
67
|
time_limit ||= 300
|
|
94
68
|
begin
|
|
95
69
|
# Set LC_ALL and LANG to force i18n to C for the duration of this exec;
|
|
@@ -98,8 +72,7 @@ module Facter
|
|
|
98
72
|
opts = { 'LC_ALL' => 'C', 'LANG' => 'C' }
|
|
99
73
|
require 'timeout'
|
|
100
74
|
@log.debug("Executing command: #{command}")
|
|
101
|
-
out, stderr =
|
|
102
|
-
pid = wait_thr.pid
|
|
75
|
+
out, stderr = Popen3.popen3e(opts, command.to_s) do |_, stdout, stderr, pid|
|
|
103
76
|
stdout_messages = +''
|
|
104
77
|
stderr_messages = +''
|
|
105
78
|
out_reader = Thread.new { stdout.read }
|
|
@@ -128,7 +101,35 @@ module Facter
|
|
|
128
101
|
"Failed while executing '#{command}': #{e.message}"
|
|
129
102
|
end
|
|
130
103
|
|
|
131
|
-
out.strip
|
|
104
|
+
[out.strip, stderr]
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
private
|
|
108
|
+
|
|
109
|
+
def extract_options(options)
|
|
110
|
+
on_fail = options.fetch(:on_fail, :raise)
|
|
111
|
+
expand = options.fetch(:expand, true)
|
|
112
|
+
logger = options[:logger]
|
|
113
|
+
time_limit = options[:limit].to_i
|
|
114
|
+
time_limit = time_limit.positive? ? time_limit : nil
|
|
115
|
+
|
|
116
|
+
[on_fail, expand, logger, time_limit]
|
|
117
|
+
end
|
|
118
|
+
|
|
119
|
+
def log_stderr(msg, command, logger)
|
|
120
|
+
return if !msg || msg.empty?
|
|
121
|
+
|
|
122
|
+
unless logger
|
|
123
|
+
file_name = command.split('/').last
|
|
124
|
+
logger = Facter::Log.new(file_name)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
logger.debug(format(STDERR_MESSAGE, command, msg.strip))
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
def builtin_command?(command)
|
|
131
|
+
output, _status = Open3.capture2("type #{command}")
|
|
132
|
+
output.chomp =~ /builtin/ ? true : false
|
|
132
133
|
end
|
|
133
134
|
end
|
|
134
135
|
end
|