facter 2.1.0-x64-mingw32

Sign up to get free protection for your applications and to get access to all the features.

Potentially problematic release.


This version of facter might be problematic. Click here for more details.

Files changed (440) hide show
  1. checksums.yaml +7 -0
  2. data/COMMITTERS.md +194 -0
  3. data/CONTRIBUTING.md +65 -0
  4. data/Gemfile +53 -0
  5. data/LICENSE +15 -0
  6. data/README.md +33 -0
  7. data/Rakefile +79 -0
  8. data/bin/facter +20 -0
  9. data/etc/facter.conf +5 -0
  10. data/ext/build_defaults.yaml +24 -0
  11. data/ext/debian/changelog.erb +59 -0
  12. data/ext/debian/compat +1 -0
  13. data/ext/debian/control +14 -0
  14. data/ext/debian/copyright +19 -0
  15. data/ext/debian/docs +1 -0
  16. data/ext/debian/lintian-overrides +0 -0
  17. data/ext/debian/rules +10 -0
  18. data/ext/debian/source/format +1 -0
  19. data/ext/facter-diff +74 -0
  20. data/ext/ips/facter.p5m.erb +10 -0
  21. data/ext/ips/rules +7 -0
  22. data/ext/ips/transforms +18 -0
  23. data/ext/osx/file_mapping.yaml +27 -0
  24. data/ext/osx/preflight.erb +33 -0
  25. data/ext/osx/prototype.plist.erb +38 -0
  26. data/ext/project_data.yaml +36 -0
  27. data/ext/redhat/facter.spec.erb +220 -0
  28. data/ext/solaris/pkginfo +7 -0
  29. data/install.rb +380 -0
  30. data/lib/facter.rb +261 -0
  31. data/lib/facter/Cfkey.rb +42 -0
  32. data/lib/facter/application.rb +204 -0
  33. data/lib/facter/architecture.rb +50 -0
  34. data/lib/facter/augeasversion.rb +28 -0
  35. data/lib/facter/blockdevices.rb +105 -0
  36. data/lib/facter/core/aggregate.rb +220 -0
  37. data/lib/facter/core/directed_graph.rb +46 -0
  38. data/lib/facter/core/execution.rb +123 -0
  39. data/lib/facter/core/execution/base.rb +81 -0
  40. data/lib/facter/core/execution/posix.rb +50 -0
  41. data/lib/facter/core/execution/windows.rb +57 -0
  42. data/lib/facter/core/logging.rb +169 -0
  43. data/lib/facter/core/resolvable.rb +94 -0
  44. data/lib/facter/core/suitable.rb +113 -0
  45. data/lib/facter/dhcp_servers.rb +39 -0
  46. data/lib/facter/domain.rb +99 -0
  47. data/lib/facter/ec2.rb +44 -0
  48. data/lib/facter/ec2/rest.rb +130 -0
  49. data/lib/facter/facterversion.rb +15 -0
  50. data/lib/facter/filesystems.rb +38 -0
  51. data/lib/facter/fqdn.rb +24 -0
  52. data/lib/facter/gce.rb +16 -0
  53. data/lib/facter/gce/metadata.rb +87 -0
  54. data/lib/facter/hardwareisa.rb +20 -0
  55. data/lib/facter/hardwaremodel.rb +67 -0
  56. data/lib/facter/hostname.rb +31 -0
  57. data/lib/facter/id.rb +21 -0
  58. data/lib/facter/interfaces.rb +46 -0
  59. data/lib/facter/ipaddress.rb +171 -0
  60. data/lib/facter/ipaddress6.rb +82 -0
  61. data/lib/facter/iphostnumber.rb +29 -0
  62. data/lib/facter/kernel.rb +22 -0
  63. data/lib/facter/kernelmajversion.rb +23 -0
  64. data/lib/facter/kernelrelease.rb +50 -0
  65. data/lib/facter/kernelversion.rb +22 -0
  66. data/lib/facter/ldom.rb +47 -0
  67. data/lib/facter/lsbdistcodename.rb +16 -0
  68. data/lib/facter/lsbdistdescription.rb +25 -0
  69. data/lib/facter/lsbdistid.rb +16 -0
  70. data/lib/facter/lsbdistrelease.rb +16 -0
  71. data/lib/facter/lsbmajdistrelease.rb +27 -0
  72. data/lib/facter/lsbrelease.rb +16 -0
  73. data/lib/facter/macaddress.rb +97 -0
  74. data/lib/facter/macosx.rb +56 -0
  75. data/lib/facter/manufacturer.rb +68 -0
  76. data/lib/facter/memory.rb +168 -0
  77. data/lib/facter/netmask.rb +42 -0
  78. data/lib/facter/network.rb +20 -0
  79. data/lib/facter/operatingsystem.rb +141 -0
  80. data/lib/facter/operatingsystemmajrelease.rb +47 -0
  81. data/lib/facter/operatingsystemrelease.rb +250 -0
  82. data/lib/facter/osfamily.rb +37 -0
  83. data/lib/facter/partitions.rb +35 -0
  84. data/lib/facter/path.rb +14 -0
  85. data/lib/facter/physicalprocessorcount.rb +91 -0
  86. data/lib/facter/processor.rb +168 -0
  87. data/lib/facter/ps.rb +30 -0
  88. data/lib/facter/puppetversion.rb +20 -0
  89. data/lib/facter/rubysitedir.rb +12 -0
  90. data/lib/facter/rubyversion.rb +12 -0
  91. data/lib/facter/selinux.rb +99 -0
  92. data/lib/facter/ssh.rb +72 -0
  93. data/lib/facter/timezone.rb +14 -0
  94. data/lib/facter/uniqueid.rb +4 -0
  95. data/lib/facter/uptime.rb +34 -0
  96. data/lib/facter/uptime_days.rb +15 -0
  97. data/lib/facter/uptime_hours.rb +15 -0
  98. data/lib/facter/uptime_seconds.rb +24 -0
  99. data/lib/facter/util/architecture.rb +19 -0
  100. data/lib/facter/util/collection.rb +161 -0
  101. data/lib/facter/util/composite_loader.rb +12 -0
  102. data/lib/facter/util/config.rb +63 -0
  103. data/lib/facter/util/confine.rb +66 -0
  104. data/lib/facter/util/dhcp_servers.rb +43 -0
  105. data/lib/facter/util/directory_loader.rb +83 -0
  106. data/lib/facter/util/ec2.rb +106 -0
  107. data/lib/facter/util/fact.rb +204 -0
  108. data/lib/facter/util/file_read.rb +37 -0
  109. data/lib/facter/util/formatter.rb +39 -0
  110. data/lib/facter/util/ip.rb +285 -0
  111. data/lib/facter/util/ip/windows.rb +215 -0
  112. data/lib/facter/util/loader.rb +155 -0
  113. data/lib/facter/util/macaddress.rb +43 -0
  114. data/lib/facter/util/macosx.rb +73 -0
  115. data/lib/facter/util/manufacturer.rb +99 -0
  116. data/lib/facter/util/memory.rb +228 -0
  117. data/lib/facter/util/netmask.rb +40 -0
  118. data/lib/facter/util/normalization.rb +94 -0
  119. data/lib/facter/util/nothing_loader.rb +12 -0
  120. data/lib/facter/util/operatingsystem.rb +21 -0
  121. data/lib/facter/util/parser.rb +158 -0
  122. data/lib/facter/util/partitions.rb +41 -0
  123. data/lib/facter/util/partitions/linux.rb +65 -0
  124. data/lib/facter/util/plist.rb +24 -0
  125. data/lib/facter/util/plist/generator.rb +228 -0
  126. data/lib/facter/util/plist/parser.rb +226 -0
  127. data/lib/facter/util/posix.rb +16 -0
  128. data/lib/facter/util/processor.rb +289 -0
  129. data/lib/facter/util/registry.rb +11 -0
  130. data/lib/facter/util/resolution.rb +160 -0
  131. data/lib/facter/util/solaris_zones.rb +158 -0
  132. data/lib/facter/util/unix_root.rb +5 -0
  133. data/lib/facter/util/uptime.rb +81 -0
  134. data/lib/facter/util/values.rb +109 -0
  135. data/lib/facter/util/virtual.rb +180 -0
  136. data/lib/facter/util/vlans.rb +21 -0
  137. data/lib/facter/util/windows_root.rb +7 -0
  138. data/lib/facter/util/wmi.rb +16 -0
  139. data/lib/facter/util/xendomains.rb +10 -0
  140. data/lib/facter/version.rb +86 -0
  141. data/lib/facter/virtual.rb +311 -0
  142. data/lib/facter/vlans.rb +17 -0
  143. data/lib/facter/xendomains.rb +20 -0
  144. data/lib/facter/zfs_version.rb +10 -0
  145. data/lib/facter/zonename.rb +6 -0
  146. data/lib/facter/zones.rb +17 -0
  147. data/lib/facter/zpool_version.rb +10 -0
  148. data/spec/fixtures/cpuinfo/amd64dual +57 -0
  149. data/spec/fixtures/cpuinfo/amd64quad +79 -0
  150. data/spec/fixtures/cpuinfo/amd64solo +23 -0
  151. data/spec/fixtures/cpuinfo/amd64tri +86 -0
  152. data/spec/fixtures/cpuinfo/amd64twentyfour +600 -0
  153. data/spec/fixtures/cpuinfo/bbg3-armel +12 -0
  154. data/spec/fixtures/cpuinfo/beaglexm-armel +12 -0
  155. data/spec/fixtures/cpuinfo/panda-armel +17 -0
  156. data/spec/fixtures/cpuinfo/ppc64 +19 -0
  157. data/spec/fixtures/cpuinfo/sparc +10 -0
  158. data/spec/fixtures/hpux/machinfo/hppa-rp4440 +26 -0
  159. data/spec/fixtures/hpux/machinfo/ia64-rx2620 +49 -0
  160. data/spec/fixtures/hpux/machinfo/ia64-rx6600 +26 -0
  161. data/spec/fixtures/hpux/machinfo/ia64-rx8640 +53 -0
  162. data/spec/fixtures/hpux/machinfo/superdome-server-SD32B +53 -0
  163. data/spec/fixtures/hpux/machinfo/superdome2-16s +31 -0
  164. data/spec/fixtures/hpux/sched.models +174 -0
  165. data/spec/fixtures/hpux/unistd.h +1534 -0
  166. data/spec/fixtures/ifconfig/bsd_ifconfig_all_with_multiple_interfaces +18 -0
  167. data/spec/fixtures/ifconfig/centos_5_5 +17 -0
  168. data/spec/fixtures/ifconfig/centos_5_5_eth0 +8 -0
  169. data/spec/fixtures/ifconfig/darwin_10_3_0 +26 -0
  170. data/spec/fixtures/ifconfig/darwin_10_3_0_en0 +6 -0
  171. data/spec/fixtures/ifconfig/darwin_10_6_4 +28 -0
  172. data/spec/fixtures/ifconfig/darwin_10_6_4_en1 +6 -0
  173. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack +8 -0
  174. data/spec/fixtures/ifconfig/darwin_10_6_6_dualstack_en1 +7 -0
  175. data/spec/fixtures/ifconfig/darwin_9_8_0 +26 -0
  176. data/spec/fixtures/ifconfig/darwin_9_8_0_en0 +6 -0
  177. data/spec/fixtures/ifconfig/darwin_ifconfig_all_with_multiple_interfaces +23 -0
  178. data/spec/fixtures/ifconfig/fedora_10 +36 -0
  179. data/spec/fixtures/ifconfig/fedora_10_eth0 +9 -0
  180. data/spec/fixtures/ifconfig/fedora_13 +18 -0
  181. data/spec/fixtures/ifconfig/fedora_13_eth0 +9 -0
  182. data/spec/fixtures/ifconfig/fedora_8 +38 -0
  183. data/spec/fixtures/ifconfig/fedora_8_eth0 +9 -0
  184. data/spec/fixtures/ifconfig/freebsd_6_0 +12 -0
  185. data/spec/fixtures/ifconfig/ifconfig_net_tools_1.60.txt +19 -0
  186. data/spec/fixtures/ifconfig/ifconfig_ubuntu_1204.txt +16 -0
  187. data/spec/fixtures/ifconfig/linux_ifconfig_all_with_multiple_interfaces +19 -0
  188. data/spec/fixtures/ifconfig/linux_ifconfig_no_addr +19 -0
  189. data/spec/fixtures/ifconfig/linux_ifconfig_no_mac +8 -0
  190. data/spec/fixtures/ifconfig/linux_ifconfig_venet +24 -0
  191. data/spec/fixtures/ifconfig/open_solaris_10 +12 -0
  192. data/spec/fixtures/ifconfig/open_solaris_b132 +20 -0
  193. data/spec/fixtures/ifconfig/openbsd_bridge_rules +11 -0
  194. data/spec/fixtures/ifconfig/sunos_ifconfig_all_with_multiple_interfaces +10 -0
  195. data/spec/fixtures/ifconfig/ubuntu_7_04 +38 -0
  196. data/spec/fixtures/ifconfig/ubuntu_7_04_eth0 +9 -0
  197. data/spec/fixtures/ldom/ldom_v1 +6 -0
  198. data/spec/fixtures/netstat/centos_5_5 +5 -0
  199. data/spec/fixtures/netstat/darwin_10_3_0 +35 -0
  200. data/spec/fixtures/netstat/darwin_10_6_4 +29 -0
  201. data/spec/fixtures/netstat/darwin_10_6_6_dualstack +34 -0
  202. data/spec/fixtures/netstat/darwin_9_8_0 +28 -0
  203. data/spec/fixtures/netstat/fedora_10 +7 -0
  204. data/spec/fixtures/netstat/open_solaris_10 +16 -0
  205. data/spec/fixtures/netstat/open_solaris_b132 +17 -0
  206. data/spec/fixtures/netstat/ubuntu_7_04 +7 -0
  207. data/spec/fixtures/processorcount/solaris-psrinfo +24 -0
  208. data/spec/fixtures/processorcount/solaris-sparc-kstat-cpu-info +1216 -0
  209. data/spec/fixtures/processorcount/solaris-x86_64-kstat-cpu-info +225 -0
  210. data/spec/fixtures/unit/dhcp_servers/nmcli_devices +4 -0
  211. data/spec/fixtures/unit/dhcp_servers/nmcli_devices_disconnected +4 -0
  212. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_dhcp +36 -0
  213. data/spec/fixtures/unit/dhcp_servers/nmcli_eth0_static +24 -0
  214. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_dhcp +49 -0
  215. data/spec/fixtures/unit/dhcp_servers/nmcli_wlan0_static +37 -0
  216. data/spec/fixtures/unit/dhcp_servers/route +3 -0
  217. data/spec/fixtures/unit/dhcp_servers/route_nogw +1 -0
  218. data/spec/fixtures/unit/ec2/rest/meta-data/root +20 -0
  219. data/spec/fixtures/unit/filesystems/linux +28 -0
  220. data/spec/fixtures/unit/gce/metadata/metadata.json +69 -0
  221. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt +19 -0
  222. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.em1 +10 -0
  223. data/spec/fixtures/unit/interfaces/ifconfig_net_tools_1.60.txt.lo +8 -0
  224. data/spec/fixtures/unit/ipaddress/ifconfig_multiple_127_addresses.txt +20 -0
  225. data/spec/fixtures/unit/ipaddress/ifconfig_net_tools_1.60.txt +19 -0
  226. data/spec/fixtures/unit/ipaddress/ifconfig_non_english_locale.txt +18 -0
  227. data/spec/fixtures/unit/ipaddress/ifconfig_ubuntu_1204.txt +16 -0
  228. data/spec/fixtures/unit/kernelrelease/openbsd-5.3 +2 -0
  229. data/spec/fixtures/unit/kernelrelease/openbsd-5.3-current +3 -0
  230. data/spec/fixtures/unit/memory/aix-svmon +9 -0
  231. data/spec/fixtures/unit/memory/aix-swap_l +2 -0
  232. data/spec/fixtures/unit/memory/darwin-swapinfo-multiple +3 -0
  233. data/spec/fixtures/unit/memory/darwin-swapinfo-single +2 -0
  234. data/spec/fixtures/unit/memory/darwin-vm_stat +13 -0
  235. data/spec/fixtures/unit/memory/dragonfly-vmstat +3 -0
  236. data/spec/fixtures/unit/memory/freebsd-vmstat +3 -0
  237. data/spec/fixtures/unit/memory/linux-proc_meminfo +10 -0
  238. data/spec/fixtures/unit/memory/openbsd-vmstat +3 -0
  239. data/spec/fixtures/unit/memory/smartos_zone_swap_l-single +2 -0
  240. data/spec/fixtures/unit/memory/solaris-prtconf +4 -0
  241. data/spec/fixtures/unit/memory/solaris-swap_l-multiple +3 -0
  242. data/spec/fixtures/unit/memory/solaris-swap_l-single +2 -0
  243. data/spec/fixtures/unit/memory/solaris-vmstat +3 -0
  244. data/spec/fixtures/unit/netmask/darwin_10_8_5.txt +30 -0
  245. data/spec/fixtures/unit/netmask/ifconfig_aix_7.txt +3 -0
  246. data/spec/fixtures/unit/netmask/ifconfig_net_tools_1.60.txt +19 -0
  247. data/spec/fixtures/unit/netmask/ifconfig_ubuntu_1204.txt +16 -0
  248. data/spec/fixtures/unit/selinux/selinux_sestatus +6 -0
  249. data/spec/fixtures/unit/util/dhcp_servers/route +3 -0
  250. data/spec/fixtures/unit/util/dhcp_servers/route_nogw +1 -0
  251. data/spec/fixtures/unit/util/ec2/centos-arp-ec2.out +1 -0
  252. data/spec/fixtures/unit/util/ec2/linux-arp-ec2.out +1 -0
  253. data/spec/fixtures/unit/util/ec2/linux-arp-not-ec2.out +5 -0
  254. data/spec/fixtures/unit/util/ec2/solaris8_arp_a_not_ec2.out +7 -0
  255. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a-not-ec2.out +6 -0
  256. data/spec/fixtures/unit/util/ec2/windows-2008-arp-a.out +10 -0
  257. data/spec/fixtures/unit/util/ip/6.0-STABLE_FreeBSD_ifconfig +12 -0
  258. data/spec/fixtures/unit/util/ip/Mac_OS_X_10.5.5_ifconfig +26 -0
  259. data/spec/fixtures/unit/util/ip/darwin_ifconfig_all_with_multiple_interfaces +10 -0
  260. data/spec/fixtures/unit/util/ip/darwin_ifconfig_single_interface +6 -0
  261. data/spec/fixtures/unit/util/ip/debian_kfreebsd_ifconfig +40 -0
  262. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan0 +2 -0
  263. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lan1 +2 -0
  264. data/spec/fixtures/unit/util/ip/hpux_1111_ifconfig_lo0 +2 -0
  265. data/spec/fixtures/unit/util/ip/hpux_1111_lanscan +5 -0
  266. data/spec/fixtures/unit/util/ip/hpux_1111_netstat_in +4 -0
  267. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan0 +2 -0
  268. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lan1 +2 -0
  269. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_ifconfig_lo0 +2 -0
  270. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_lanscan +5 -0
  271. data/spec/fixtures/unit/util/ip/hpux_1131_asterisk_netstat_in +4 -0
  272. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan0 +2 -0
  273. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lan1 +2 -0
  274. data/spec/fixtures/unit/util/ip/hpux_1131_ifconfig_lo0 +2 -0
  275. data/spec/fixtures/unit/util/ip/hpux_1131_lanscan +4 -0
  276. data/spec/fixtures/unit/util/ip/hpux_1131_netstat_in +4 -0
  277. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan1 +2 -0
  278. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4 +2 -0
  279. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lan4_1 +2 -0
  280. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_ifconfig_lo0 +2 -0
  281. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_lanscan +9 -0
  282. data/spec/fixtures/unit/util/ip/hpux_1131_nic_bonding_netstat_in +6 -0
  283. data/spec/fixtures/unit/util/ip/linux_2_6_35_proc_net_bonding_bond0 +19 -0
  284. data/spec/fixtures/unit/util/ip/linux_get_single_interface_eth0 +10 -0
  285. data/spec/fixtures/unit/util/ip/linux_get_single_interface_ib0 +8 -0
  286. data/spec/fixtures/unit/util/ip/linux_get_single_interface_lo +9 -0
  287. data/spec/fixtures/unit/util/ip/linux_ifconfig_all_with_single_interface +18 -0
  288. data/spec/fixtures/unit/util/ip/linux_ifconfig_ib0 +8 -0
  289. data/spec/fixtures/unit/util/ip/solaris_ifconfig_all_with_multiple_interfaces +8 -0
  290. data/spec/fixtures/unit/util/ip/solaris_ifconfig_single_interface +3 -0
  291. data/spec/fixtures/unit/util/ip/windows_netsh_all_interfaces +12 -0
  292. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface +7 -0
  293. data/spec/fixtures/unit/util/ip/windows_netsh_single_interface6 +18 -0
  294. data/spec/fixtures/unit/util/manufacturer/freebsd_dmidecode +42 -0
  295. data/spec/fixtures/unit/util/manufacturer/intel_linux_dmidecode +549 -0
  296. data/spec/fixtures/unit/util/manufacturer/linux_dmidecode_with_spaces +60 -0
  297. data/spec/fixtures/unit/util/manufacturer/opensolaris_smbios +33 -0
  298. data/spec/fixtures/unit/util/manufacturer/smartos_smbios +533 -0
  299. data/spec/fixtures/unit/util/manufacturer/solaris_sunfire_v120_prtdiag +33 -0
  300. data/spec/fixtures/unit/util/manufacturer/solaris_t5220_prtdiag +136 -0
  301. data/spec/fixtures/unit/util/operatingsystem/cumuluslinux.txt +8 -0
  302. data/spec/fixtures/unit/util/operatingsystem/redhat-7.txt +12 -0
  303. data/spec/fixtures/unit/util/operatingsystem/sabayon.txt +7 -0
  304. data/spec/fixtures/unit/util/operatingsystem/wheezy.txt +9 -0
  305. data/spec/fixtures/unit/util/partitions/partitions/mount +9 -0
  306. data/spec/fixtures/unit/util/processor/solaris-i86pc +28 -0
  307. data/spec/fixtures/unit/util/processor/solaris-sun4u +151 -0
  308. data/spec/fixtures/unit/util/processor/x86-pentium2 +41 -0
  309. data/spec/fixtures/unit/util/uptime/kstat_boot_time +1 -0
  310. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_darwin +1 -0
  311. data/spec/fixtures/unit/util/uptime/sysctl_kern_boottime_openbsd +1 -0
  312. data/spec/fixtures/unit/util/uptime/ubuntu_proc_uptime +1 -0
  313. data/spec/fixtures/unit/util/virtual/invalid_unicode_dmi_entries +0 -0
  314. data/spec/fixtures/unit/util/virtual/solaris10_proc_self_status1 +0 -0
  315. data/spec/fixtures/unit/util/vlans/centos-5-no-vlans +2 -0
  316. data/spec/fixtures/unit/util/vlans/linux_vlan_config +6 -0
  317. data/spec/fixtures/unit/util/xendomains/xendomains +4 -0
  318. data/spec/fixtures/unit/virtual/sysfs_dmi_entries_raw.txt +0 -0
  319. data/spec/fixtures/unit/zfs_version/freebsd_8.2 +14 -0
  320. data/spec/fixtures/unit/zfs_version/freebsd_9.0 +13 -0
  321. data/spec/fixtures/unit/zfs_version/linux-fuse_0.6.9 +14 -0
  322. data/spec/fixtures/unit/zfs_version/solaris_10 +10 -0
  323. data/spec/fixtures/unit/zfs_version/solaris_11 +12 -0
  324. data/spec/fixtures/unit/zpool_version/freebsd_8.2 +26 -0
  325. data/spec/fixtures/unit/zpool_version/freebsd_9.0 +38 -0
  326. data/spec/fixtures/unit/zpool_version/linux-fuse_0.6.9 +35 -0
  327. data/spec/fixtures/unit/zpool_version/solaris_10 +31 -0
  328. data/spec/fixtures/unit/zpool_version/solaris_11 +43 -0
  329. data/spec/fixtures/virtual/proc_1_cgroup/in_a_container +9 -0
  330. data/spec/fixtures/virtual/proc_1_cgroup/in_a_docker_container +8 -0
  331. data/spec/fixtures/virtual/proc_1_cgroup/not_in_a_container +9 -0
  332. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/guest +37 -0
  333. data/spec/fixtures/virtual/proc_self_status/vserver_2_1/host +36 -0
  334. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/guest +39 -0
  335. data/spec/fixtures/virtual/proc_self_status/vserver_2_3/host +39 -0
  336. data/spec/integration/facter_spec.rb +39 -0
  337. data/spec/lib/facter_spec/cpuinfo.rb +15 -0
  338. data/spec/lib/facter_spec/windows_network.rb +64 -0
  339. data/spec/puppetlabs_spec/files.rb +57 -0
  340. data/spec/puppetlabs_spec/fixtures.rb +49 -0
  341. data/spec/puppetlabs_spec/matchers.rb +87 -0
  342. data/spec/puppetlabs_spec/verbose.rb +9 -0
  343. data/spec/puppetlabs_spec_helper.rb +26 -0
  344. data/spec/shared_contexts/platform.rb +55 -0
  345. data/spec/shared_formats/parses.rb +3 -0
  346. data/spec/spec_helper.rb +75 -0
  347. data/spec/unit/application_spec.rb +101 -0
  348. data/spec/unit/architecture_spec.rb +63 -0
  349. data/spec/unit/blockdevices_spec.rb +109 -0
  350. data/spec/unit/core/aggregate_spec.rb +125 -0
  351. data/spec/unit/core/directed_graph_spec.rb +79 -0
  352. data/spec/unit/core/execution/base_spec.rb +130 -0
  353. data/spec/unit/core/execution/posix_spec.rb +86 -0
  354. data/spec/unit/core/execution/windows_spec.rb +106 -0
  355. data/spec/unit/core/execution_spec.rb +42 -0
  356. data/spec/unit/core/logging_spec.rb +104 -0
  357. data/spec/unit/core/resolvable_spec.rb +81 -0
  358. data/spec/unit/core/suitable_spec.rb +106 -0
  359. data/spec/unit/dhcp_servers_spec.rb +152 -0
  360. data/spec/unit/domain_spec.rb +310 -0
  361. data/spec/unit/ec2/rest_spec.rb +145 -0
  362. data/spec/unit/ec2_spec.rb +127 -0
  363. data/spec/unit/facter_spec.rb +108 -0
  364. data/spec/unit/filesystems_spec.rb +50 -0
  365. data/spec/unit/fqdn_spec.rb +16 -0
  366. data/spec/unit/gce/metadata_spec.rb +49 -0
  367. data/spec/unit/gce_spec.rb +34 -0
  368. data/spec/unit/hardwareisa_spec.rb +41 -0
  369. data/spec/unit/hardwaremodel_spec.rb +56 -0
  370. data/spec/unit/hostname_spec.rb +40 -0
  371. data/spec/unit/id_spec.rb +29 -0
  372. data/spec/unit/interfaces_spec.rb +57 -0
  373. data/spec/unit/ipaddress6_spec.rb +161 -0
  374. data/spec/unit/ipaddress_spec.rb +114 -0
  375. data/spec/unit/kernel_spec.rb +24 -0
  376. data/spec/unit/kernelmajversion_spec.rb +22 -0
  377. data/spec/unit/kernelrelease_spec.rb +69 -0
  378. data/spec/unit/kernelversion_spec.rb +32 -0
  379. data/spec/unit/ldom_spec.rb +75 -0
  380. data/spec/unit/lsbdistcodename_spec.rb +25 -0
  381. data/spec/unit/lsbdistdescription_spec.rb +25 -0
  382. data/spec/unit/lsbdistid_spec.rb +25 -0
  383. data/spec/unit/lsbdistrelease_spec.rb +25 -0
  384. data/spec/unit/lsbmajdistrelease_spec.rb +13 -0
  385. data/spec/unit/lsbrelease_spec.rb +25 -0
  386. data/spec/unit/macaddress_spec.rb +73 -0
  387. data/spec/unit/manufacturer_spec.rb +115 -0
  388. data/spec/unit/memory_spec.rb +470 -0
  389. data/spec/unit/netmask_spec.rb +106 -0
  390. data/spec/unit/operatingsystem_spec.rb +160 -0
  391. data/spec/unit/operatingsystemmajrelease_spec.rb +38 -0
  392. data/spec/unit/operatingsystemrelease_spec.rb +236 -0
  393. data/spec/unit/osfamily_spec.rb +62 -0
  394. data/spec/unit/partitions_spec.rb +48 -0
  395. data/spec/unit/physicalprocessorcount_spec.rb +85 -0
  396. data/spec/unit/processor_spec.rb +401 -0
  397. data/spec/unit/ps_spec.rb +42 -0
  398. data/spec/unit/selinux_spec.rb +114 -0
  399. data/spec/unit/ssh_spec.rb +77 -0
  400. data/spec/unit/uniqueid_spec.rb +27 -0
  401. data/spec/unit/uptime_spec.rb +110 -0
  402. data/spec/unit/util/collection_spec.rb +258 -0
  403. data/spec/unit/util/config_spec.rb +97 -0
  404. data/spec/unit/util/confine_spec.rb +148 -0
  405. data/spec/unit/util/dhcp_servers_spec.rb +63 -0
  406. data/spec/unit/util/directory_loader_spec.rb +88 -0
  407. data/spec/unit/util/ec2_spec.rb +184 -0
  408. data/spec/unit/util/fact_spec.rb +142 -0
  409. data/spec/unit/util/file_read_spec.rb +29 -0
  410. data/spec/unit/util/formatter_spec.rb +50 -0
  411. data/spec/unit/util/ip/windows_spec.rb +80 -0
  412. data/spec/unit/util/ip_spec.rb +467 -0
  413. data/spec/unit/util/loader_spec.rb +286 -0
  414. data/spec/unit/util/macaddress_spec.rb +141 -0
  415. data/spec/unit/util/macosx_spec.rb +114 -0
  416. data/spec/unit/util/manufacturer_spec.rb +223 -0
  417. data/spec/unit/util/normalization_spec.rb +113 -0
  418. data/spec/unit/util/operatingsystem_spec.rb +92 -0
  419. data/spec/unit/util/parser_spec.rb +200 -0
  420. data/spec/unit/util/partitions/partitions_spec.rb +67 -0
  421. data/spec/unit/util/partitions_spec.rb +19 -0
  422. data/spec/unit/util/posix_spec.rb +11 -0
  423. data/spec/unit/util/processor_spec.rb +92 -0
  424. data/spec/unit/util/registry_spec.rb +76 -0
  425. data/spec/unit/util/resolution_spec.rb +129 -0
  426. data/spec/unit/util/solaris_zones_spec.rb +127 -0
  427. data/spec/unit/util/uptime_spec.rb +126 -0
  428. data/spec/unit/util/values_spec.rb +171 -0
  429. data/spec/unit/util/virtual_spec.rb +364 -0
  430. data/spec/unit/util/vlans_spec.rb +42 -0
  431. data/spec/unit/util/wmi_spec.rb +19 -0
  432. data/spec/unit/util/xendomains_spec.rb +21 -0
  433. data/spec/unit/version_spec.rb +42 -0
  434. data/spec/unit/virtual_spec.rb +519 -0
  435. data/spec/unit/zfs_version_spec.rb +75 -0
  436. data/spec/unit/zonename_spec.rb +14 -0
  437. data/spec/unit/zones_spec.rb +55 -0
  438. data/spec/unit/zpool_version_spec.rb +75 -0
  439. data/spec/watchr.rb +125 -0
  440. metadata +815 -0
@@ -0,0 +1,7 @@
1
+ PKG=CSWfacter
2
+ NAME=facter - System Fact Gatherer
3
+ VERSION=1.6.3rc1
4
+ CATEGORY=application
5
+ VENDOR=http://www.puppetlabs.com/puppet/related-projects/facter
6
+ HOTLINE=http://puppetlabs.com/cgi-bin/facter.cgi
7
+ EMAIL=luke@madstop.com
data/install.rb ADDED
@@ -0,0 +1,380 @@
1
+ #! /usr/bin/env ruby
2
+ #--
3
+ # Copyright 2004 Austin Ziegler <ruby-install@halostatue.ca>
4
+ # Install utility. Based on the original installation script for rdoc by the
5
+ # Pragmatic Programmers.
6
+ #
7
+ # This program is free software. It may be redistributed and/or modified under
8
+ # the terms of the GPL version 2 (or later) or the Ruby licence.
9
+ #
10
+ # Usage
11
+ # -----
12
+ # In most cases, if you have a typical project layout, you will need to do
13
+ # absolutely nothing to make this work for you. This layout is:
14
+ #
15
+ # bin/ # executable files -- "commands"
16
+ # lib/ # the source of the library
17
+ #
18
+ # The default behaviour:
19
+ # 1) Build Rdoc documentation from all files in bin/ (excluding .bat and .cmd),
20
+ # all .rb files in lib/, ./README, ./ChangeLog, and ./Install.
21
+ # 2) Build ri documentation from all files in bin/ (excluding .bat and .cmd),
22
+ # and all .rb files in lib/. This is disabled by default on Win32.
23
+ # 3) Install commands from bin/ into the Ruby bin directory. On Windows, if a
24
+ # if a corresponding batch file (.bat or .cmd) exists in the bin directory,
25
+ # it will be copied over as well. Otherwise, a batch file (always .bat) will
26
+ # be created to run the specified command.
27
+ # 4) Install all library files ending in .rb from lib/ into Ruby's
28
+ # site_lib/version directory.
29
+ #
30
+ #++
31
+
32
+ require 'rbconfig'
33
+ require 'find'
34
+ require 'fileutils'
35
+ require 'optparse'
36
+ require 'ostruct'
37
+ require 'tempfile'
38
+
39
+ begin
40
+ require 'rdoc/rdoc'
41
+ $haverdoc = true
42
+ rescue LoadError
43
+ puts "Missing rdoc; skipping documentation"
44
+ $haverdoc = false
45
+ end
46
+
47
+ begin
48
+ if $haverdoc
49
+ rst2man = %x{which rst2man.py}
50
+ $haveman = true
51
+ else
52
+ $haveman = false
53
+ end
54
+ rescue
55
+ puts "Missing rst2man; skipping man page creation"
56
+ $haveman = false
57
+ end
58
+
59
+ $LOAD_PATH.unshift(File.expand_path(File.join(File.dirname(__FILE__), 'lib')))
60
+ require 'facter'
61
+ @operatingsystem = Facter[:operatingsystem].value
62
+
63
+ PREREQS = %w{cgi}
64
+
65
+ InstallOptions = OpenStruct.new
66
+
67
+ def glob(list)
68
+ g = list.map { |i| Dir.glob(i) }
69
+ g.flatten!
70
+ g.compact!
71
+ g
72
+ end
73
+
74
+ def do_bins(bins, target, strip = 's?bin/')
75
+ bins.each do |bf|
76
+ obf = bf.gsub(/#{strip}/, '')
77
+ install_binfile(bf, obf, target)
78
+ end
79
+ end
80
+
81
+ def do_libs(libs, strip = 'lib/')
82
+ libs.each do |lf|
83
+ olf = File.join(InstallOptions.site_dir, lf.gsub(/^#{strip}/, ''))
84
+ op = File.dirname(olf)
85
+ FileUtils.makedirs(op, {:mode => 0755, :verbose => true})
86
+ FileUtils.chmod(0755, op)
87
+ FileUtils.install(lf, olf, {:mode => 0644, :preserve => true, :verbose => true})
88
+ end
89
+ end
90
+
91
+ def do_man(man, strip = 'man/')
92
+ if (InstallOptions.man == true)
93
+ man.each do |mf|
94
+ omf = File.join(InstallOptions.man_dir, mf.gsub(/#{strip}/, ''))
95
+ om = File.dirname(omf)
96
+ FileUtils.makedirs(om, {:mode => 0755, :verbose => true})
97
+ FileUtils.chmod(0755, om)
98
+ FileUtils.install(mf, omf, {:mode => 0644, :preserve => true, :verbose => true})
99
+ gzip = %x{which gzip}
100
+ gzip.chomp!
101
+ %x{#{gzip} -f #{omf}}
102
+ end
103
+ else
104
+ puts "Skipping Man Page Generation"
105
+ end
106
+ end
107
+
108
+ # Verify that all of the prereqs are installed
109
+ def check_prereqs
110
+ PREREQS.each { |pre|
111
+ begin
112
+ require pre
113
+ rescue LoadError
114
+ puts "Could not load #{pre} Ruby library; cannot install"
115
+ exit -1
116
+ end
117
+ }
118
+ end
119
+
120
+ def is_windows?
121
+ @operatingsystem == 'windows'
122
+ end
123
+
124
+ ##
125
+ # Prepare the file installation.
126
+ #
127
+ def prepare_installation
128
+ # Only try to do docs if we're sure they have rdoc
129
+ if $haverdoc
130
+ InstallOptions.rdoc = true
131
+ if is_windows?
132
+ InstallOptions.ri = false
133
+ else
134
+ InstallOptions.ri = true
135
+ end
136
+ else
137
+ InstallOptions.rdoc = false
138
+ InstallOptions.ri = false
139
+ end
140
+
141
+
142
+ if $haveman
143
+ InstallOptions.man = true
144
+ if is_windows?
145
+ InstallOptions.man = false
146
+ end
147
+ else
148
+ InstallOptions.man = false
149
+ end
150
+
151
+ ARGV.options do |opts|
152
+ opts.banner = "Usage: #{File.basename($0)} [options]"
153
+ opts.separator ""
154
+ opts.on('--[no-]rdoc', 'Prevents the creation of RDoc output.', 'Default on.') do |onrdoc|
155
+ InstallOptions.rdoc = onrdoc
156
+ end
157
+ opts.on('--[no-]ri', 'Prevents the creation of RI output.', 'Default off on mswin32.') do |onri|
158
+ InstallOptions.ri = onri
159
+ end
160
+ opts.on('--[no-]man', 'Presents the creation of man pages.', 'Default on.') do |onman|
161
+ InstallOptions.man = onman
162
+ end
163
+ opts.on('--destdir[=OPTIONAL]', 'Installation prefix for all targets', 'Default essentially /') do |destdir|
164
+ InstallOptions.destdir = destdir
165
+ end
166
+ opts.on('--bindir[=OPTIONAL]', 'Installation directory for binaries', 'overrides RbConfig::CONFIG["bindir"]') do |bindir|
167
+ InstallOptions.bindir = bindir
168
+ end
169
+ opts.on('--ruby[=OPTIONAL]', 'Ruby interpreter to use with installation', 'overrides ruby used to call install.rb') do |ruby|
170
+ InstallOptions.ruby = ruby
171
+ end
172
+ opts.on('--sitelibdir[=OPTIONAL]', 'Installation directory for libraries', 'overrides RbConfig::CONFIG["sitelibdir"]') do |sitelibdir|
173
+ InstallOptions.sitelibdir = sitelibdir
174
+ end
175
+ opts.on('--mandir[=OPTIONAL]', 'Installation directory for man pages', 'overrides RbConfig::CONFIG["mandir"]') do |mandir|
176
+ InstallOptions.mandir = mandir
177
+ end
178
+ opts.on('--quick', 'Performs a quick installation. Only the', 'installation is done.') do |quick|
179
+ InstallOptions.rdoc = false
180
+ InstallOptions.ri = false
181
+ end
182
+ opts.on('--full', 'Performs a full installation. All', 'optional installation steps are run.') do |full|
183
+ InstallOptions.rdoc = true
184
+ InstallOptions.ri = true
185
+ end
186
+ opts.separator("")
187
+ opts.on_tail('--help', "Shows this help text.") do
188
+ $stderr.puts opts
189
+ exit
190
+ end
191
+
192
+ opts.parse!
193
+ end
194
+
195
+ version = [RbConfig::CONFIG["MAJOR"], RbConfig::CONFIG["MINOR"]].join(".")
196
+ libdir = File.join(RbConfig::CONFIG["libdir"], "ruby", version)
197
+
198
+ # Mac OS X 10.5 and higher declare bindir
199
+ # /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin
200
+ # which is not generally where people expect executables to be installed
201
+ # These settings are appropriate defaults for all OS X versions.
202
+ if RUBY_PLATFORM =~ /^universal-darwin[\d\.]+$/
203
+ RbConfig::CONFIG['bindir'] = "/usr/bin"
204
+ end
205
+
206
+ if not InstallOptions.bindir.nil?
207
+ bindir = InstallOptions.bindir
208
+ else
209
+ bindir = RbConfig::CONFIG['bindir']
210
+ end
211
+
212
+ if not InstallOptions.sitelibdir.nil?
213
+ sitelibdir = InstallOptions.sitelibdir
214
+ else
215
+ sitelibdir = RbConfig::CONFIG["sitelibdir"]
216
+ if sitelibdir.nil?
217
+ sitelibdir = $:.find { |x| x =~ /site_ruby/ }
218
+ if sitelibdir.nil?
219
+ sitelibdir = File.join(libdir, "site_ruby")
220
+ elsif sitelibdir !~ Regexp.quote(version)
221
+ sitelibdir = File.join(sitelibdir, version)
222
+ end
223
+ end
224
+ end
225
+
226
+ if not InstallOptions.mandir.nil?
227
+ mandir = InstallOptions.mandir
228
+ else
229
+ mandir = RbConfig::CONFIG['mandir']
230
+ end
231
+
232
+ if (destdir = InstallOptions.destdir)
233
+ bindir = join(destdir, bindir)
234
+ mandir = join(destdir, mandir)
235
+ sitelibdir = join(destdir, sitelibdir)
236
+
237
+ FileUtils.makedirs(bindir)
238
+ FileUtils.makedirs(mandir)
239
+ FileUtils.makedirs(sitelibdir)
240
+ end
241
+
242
+ InstallOptions.site_dir = sitelibdir
243
+ InstallOptions.bin_dir = bindir
244
+ InstallOptions.lib_dir = libdir
245
+ InstallOptions.man_dir = mandir
246
+ end
247
+
248
+ ##
249
+ # Join two paths. On Windows, dir must be converted to a relative path,
250
+ # by stripping the drive letter, but only if the basedir is not empty.
251
+ #
252
+ def join(basedir, dir)
253
+ return "#{basedir}#{dir[2..-1]}" if is_windows? and basedir.length > 0 and dir.length > 2
254
+
255
+ "#{basedir}#{dir}"
256
+ end
257
+
258
+ ##
259
+ # Build the rdoc documentation. Also, try to build the RI documentation.
260
+ #
261
+ def build_rdoc(files)
262
+ return unless $haverdoc
263
+ begin
264
+ r = RDoc::RDoc.new
265
+ r.document(["--main", "README", "--title",
266
+ "Puppet -- Site Configuration Management", "--line-numbers"] + files)
267
+ rescue RDoc::RDocError => e
268
+ $stderr.puts e.message
269
+ rescue Exception => e
270
+ $stderr.puts "Couldn't build RDoc documentation\n#{e.message}"
271
+ end
272
+ end
273
+
274
+ def build_ri(files)
275
+ return unless $haverdoc
276
+ begin
277
+ ri = RDoc::RDoc.new
278
+ #ri.document(["--ri-site", "--merge"] + files)
279
+ ri.document(["--ri-site"] + files)
280
+ rescue RDoc::RDocError => e
281
+ $stderr.puts e.message
282
+ rescue Exception => e
283
+ $stderr.puts "Couldn't build Ri documentation\n#{e.message}"
284
+ $stderr.puts "Continuing with install..."
285
+ end
286
+ end
287
+
288
+ def build_man(bins)
289
+ return unless $haveman
290
+ begin
291
+ # Locate rst2man
292
+ rst2man = %x{which rst2man.py}
293
+ rst2man.chomp!
294
+ bins.each do |bin|
295
+ b = bin.gsub( "bin/", "")
296
+ %x{#{bin} --help > ./#{b}.rst}
297
+ %x{#{rst2man} ./#{b}.rst ./man/man8/#{b}.8}
298
+ File.unlink("./#{b}.rst")
299
+ end
300
+ rescue SystemCallError
301
+ $stderr.puts "Couldn't build man pages: " + $!
302
+ $stderr.puts "Continuing with install..."
303
+ end
304
+ end
305
+
306
+ ##
307
+ # Install file(s) from ./bin to RbConfig::CONFIG['bindir']. Patch it on the way
308
+ # to insert a #! line; on a Unix install, the command is named as expected
309
+ # (e.g., bin/rdoc becomes rdoc); the shebang line handles running it. Under
310
+ # windows, we add an '.rb' extension and let file associations do their stuff.
311
+ def install_binfile(from, op_file, target)
312
+ tmp_file = Tempfile.new('facter-binfile')
313
+
314
+ if not InstallOptions.ruby.nil?
315
+ ruby = InstallOptions.ruby
316
+ else
317
+ ruby = File.join(RbConfig::CONFIG['bindir'], RbConfig::CONFIG['ruby_install_name'])
318
+ end
319
+
320
+ File.open(from) do |ip|
321
+ File.open(tmp_file.path, "w") do |op|
322
+ op.puts "#!#{ruby}"
323
+ contents = ip.readlines
324
+ contents.shift if contents[0] =~ /^#!/
325
+ op.write contents.join
326
+ end
327
+ end
328
+
329
+ if is_windows?
330
+ installed_wrapper = false
331
+
332
+ if File.exists?("#{from}.bat")
333
+ FileUtils.install("#{from}.bat", File.join(target, "#{op_file}.bat"), :mode => 0755, :preserve => true, :verbose => true)
334
+ installed_wrapper = true
335
+ end
336
+
337
+ if File.exists?("#{from}.cmd")
338
+ FileUtils.install("#{from}.cmd", File.join(target, "#{op_file}.cmd"), :mode => 0755, :preserve => true, :verbose => true)
339
+ installed_wrapper = true
340
+ end
341
+
342
+ if not installed_wrapper
343
+ tmp_file2 = Tempfile.new('facter-wrapper')
344
+ cwv = <<-EOS
345
+ @echo off
346
+ setlocal
347
+ set RUBY_BIN=%~dp0
348
+ set RUBY_BIN=%RUBY_BIN:\\=/%
349
+ "%RUBY_BIN%ruby.exe" -x "%RUBY_BIN%facter" %*
350
+ EOS
351
+ File.open(tmp_file2.path, "w") { |cw| cw.puts cwv }
352
+ FileUtils.install(tmp_file2.path, File.join(target, "#{op_file}.bat"), :mode => 0755, :preserve => true, :verbose => true)
353
+
354
+ tmp_file2.unlink
355
+ installed_wrapper = true
356
+ end
357
+ end
358
+ FileUtils.install(tmp_file.path, File.join(target, op_file), :mode => 0755, :preserve => true, :verbose => true)
359
+ tmp_file.unlink
360
+ end
361
+
362
+ # Change directory into the facter root so we don't get the wrong files for install.
363
+ FileUtils.cd File.dirname(__FILE__) do
364
+ # Set these values to what you want installed.
365
+ bins = glob(%w{bin/*})
366
+ rdoc = glob(%w{bin/* lib/**/*.rb README* }).reject { |e| e=~ /\.(bat|cmd)$/ }
367
+ ri = glob(%w(bin/*.rb lib/**/*.rb)).reject { |e| e=~ /\.(bat|cmd)$/ }
368
+ man = glob(%w{man/man8/*})
369
+ libs = glob(%w{lib/**/*.rb lib/**/*.py lib/**/LICENSE})
370
+
371
+ check_prereqs
372
+ prepare_installation
373
+
374
+ #build_rdoc(rdoc) if InstallOptions.rdoc
375
+ #build_ri(ri) if InstallOptions.ri
376
+ #build_man(bins) if InstallOptions.man
377
+ do_bins(bins, InstallOptions.bin_dir)
378
+ do_libs(libs)
379
+ do_man(man)
380
+ end
data/lib/facter.rb ADDED
@@ -0,0 +1,261 @@
1
+ # Facter - Host Fact Detection and Reporting
2
+ #
3
+ # Copyright 2011 Puppet Labs Inc
4
+ #
5
+ # Licensed under the Apache License, Version 2.0 (the "License");
6
+ # you may not use this file except in compliance with the License.
7
+ # You may obtain a copy of the License at
8
+ #
9
+ # http://www.apache.org/licenses/LICENSE-2.0
10
+ #
11
+ # Unless required by applicable law or agreed to in writing, software
12
+ # distributed under the License is distributed on an "AS IS" BASIS,
13
+ # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14
+ # See the License for the specific language governing permissions and
15
+ # limitations under the License.
16
+
17
+ require 'facter/version'
18
+
19
+ # Functions as a hash of 'facts' about your system system, such as MAC
20
+ # address, IP address, architecture, etc.
21
+ #
22
+ # @example Retrieve a fact
23
+ # puts Facter['operatingsystem'].value
24
+ #
25
+ # @example Retrieve all facts
26
+ # Facter.to_hash
27
+ # => { "kernel"=>"Linux", "uptime_days"=>0, "ipaddress"=>"10.0.0.1" }
28
+ #
29
+ # @api public
30
+ module Facter
31
+ # Most core functionality of facter is implemented in `Facter::Util`.
32
+ # @api public
33
+ module Util; end
34
+
35
+ require 'facter/util/fact'
36
+ require 'facter/util/collection'
37
+
38
+ include Comparable
39
+ include Enumerable
40
+
41
+ require 'facter/core/logging'
42
+ extend Facter::Core::Logging
43
+
44
+ # module methods
45
+
46
+ # Accessor for the collection object which holds all the facts
47
+ # @return [Facter::Util::Collection] the collection of facts
48
+ #
49
+ # @api private
50
+ def self.collection
51
+ unless defined?(@collection) and @collection
52
+ @collection = Facter::Util::Collection.new(
53
+ Facter::Util::Loader.new,
54
+ Facter::Util::Config.ext_fact_loader)
55
+ end
56
+ @collection
57
+ end
58
+
59
+ # Returns whether the JSON "feature" is available.
60
+ #
61
+ # @api private
62
+ def self.json?
63
+ begin
64
+ require 'json'
65
+ true
66
+ rescue LoadError
67
+ false
68
+ end
69
+ end
70
+
71
+ # Returns a fact object by name. If you use this, you still have to
72
+ # call {Facter::Util::Fact#value `value`} on it to retrieve the actual
73
+ # value.
74
+ #
75
+ # @param name [String] the name of the fact
76
+ #
77
+ # @return [Facter::Util::Fact, nil] The fact object, or nil if no fact
78
+ # is found.
79
+ #
80
+ # @api public
81
+ def self.[](name)
82
+ collection.fact(name)
83
+ end
84
+
85
+ # (see [])
86
+ def self.fact(name)
87
+ collection.fact(name)
88
+ end
89
+
90
+ # Flushes cached values for all facts. This does not cause code to be
91
+ # reloaded; it only clears the cached results.
92
+ #
93
+ # @return [void]
94
+ #
95
+ # @api public
96
+ def self.flush
97
+ collection.flush
98
+ end
99
+
100
+ # Lists all fact names
101
+ #
102
+ # @return [Array<String>] array of fact names
103
+ #
104
+ # @api public
105
+ def self.list
106
+ collection.list
107
+ end
108
+
109
+ # Gets the value for a fact. Returns `nil` if no such fact exists.
110
+ #
111
+ # @param name [String] the fact name
112
+ # @return [Object, nil] the value of the fact, or nil if no fact is
113
+ # found
114
+ #
115
+ # @api public
116
+ def self.value(name)
117
+ collection.value(name)
118
+ end
119
+
120
+ # Gets a hash mapping fact names to their values
121
+ #
122
+ # @return [Hash{String => Object}] the hash of fact names and values
123
+ #
124
+ # @api public
125
+ def self.to_hash
126
+ collection.load_all
127
+ collection.to_hash
128
+ end
129
+
130
+ # Define a new fact or extend an existing fact.
131
+ #
132
+ # @param name [Symbol] The name of the fact to define
133
+ # @param options [Hash] A hash of options to set on the fact
134
+ #
135
+ # @return [Facter::Util::Fact] The fact that was defined
136
+ #
137
+ # @api public
138
+ # @see {Facter::Util::Collection#define_fact}
139
+ def self.define_fact(name, options = {}, &block)
140
+ collection.define_fact(name, options, &block)
141
+ end
142
+
143
+ # Adds a {Facter::Util::Resolution resolution} mechanism for a named
144
+ # fact. This does not distinguish between adding a new fact and adding
145
+ # a new way to resolve a fact.
146
+ #
147
+ # @overload add(name, options = {}, { || ... })
148
+ # @param name [String] the fact name
149
+ # @param options [Hash] optional parameters for the fact - attributes
150
+ # of {Facter::Util::Fact} and {Facter::Util::Resolution} can be
151
+ # supplied here
152
+ # @option options [Integer] :timeout set the
153
+ # {Facter::Util::Resolution#timeout timeout} for this resolution
154
+ # @param block [Proc] a block defining a fact resolution
155
+ #
156
+ # @return [Facter::Util::Fact] the fact object, which includes any previously
157
+ # defined resolutions
158
+ #
159
+ # @api public
160
+ def self.add(name, options = {}, &block)
161
+ collection.add(name, options, &block)
162
+ end
163
+
164
+ # Iterates over fact names and values
165
+ #
166
+ # @yieldparam [String] name the fact name
167
+ # @yieldparam [String] value the current value of the fact
168
+ #
169
+ # @return [void]
170
+ #
171
+ # @api public
172
+ def self.each
173
+ # Make sure all facts are loaded.
174
+ collection.load_all
175
+
176
+ collection.each do |*args|
177
+ yield(*args)
178
+ end
179
+ end
180
+
181
+ # Clears all cached values and removes all facts from memory.
182
+ #
183
+ # @return [void]
184
+ #
185
+ # @api public
186
+ def self.clear
187
+ Facter.flush
188
+ Facter.reset
189
+ end
190
+
191
+ # Removes all facts from memory. Use this when the fact code has
192
+ # changed on disk and needs to be reloaded.
193
+ #
194
+ # @return [void]
195
+ #
196
+ # @api public
197
+ def self.reset
198
+ @collection = nil
199
+ reset_search_path!
200
+ end
201
+
202
+ # Loads all facts.
203
+ #
204
+ # @return [void]
205
+ #
206
+ # @api public
207
+ def self.loadfacts
208
+ collection.load_all
209
+ end
210
+
211
+ # Register directories to be searched for facts. The registered directories
212
+ # must be absolute paths or they will be ignored.
213
+ #
214
+ # @param dirs [String] directories to search
215
+ #
216
+ # @return [void]
217
+ #
218
+ # @api public
219
+ def self.search(*dirs)
220
+ @search_path += dirs
221
+ end
222
+
223
+ # Returns the registered search directories.
224
+ #
225
+ # @return [Array<String>] An array of the directories searched
226
+ #
227
+ # @api public
228
+ def self.search_path
229
+ @search_path.dup
230
+ end
231
+
232
+ # Reset the Facter search directories.
233
+ #
234
+ # @api private
235
+ # @return [void]
236
+ def self.reset_search_path!
237
+ @search_path = []
238
+ end
239
+
240
+ reset_search_path!
241
+
242
+ # Registers directories to be searched for external facts.
243
+ #
244
+ # @param dirs [Array<String>] directories to search
245
+ #
246
+ # @return [void]
247
+ #
248
+ # @api public
249
+ def self.search_external(dirs)
250
+ Facter::Util::Config.external_facts_dirs += dirs
251
+ end
252
+
253
+ # Returns the registered search directories.
254
+ #
255
+ # @return [Array<String>] An array of the directories searched
256
+ #
257
+ # @api public
258
+ def self.search_external_path
259
+ Facter::Util::Config.external_facts_dirs.dup
260
+ end
261
+ end