{"id":13594849,"url":"https://github.com/puppetlabs/facter","last_synced_at":"2025-05-12T15:33:08.010Z","repository":{"id":38484634,"uuid":"910757","full_name":"puppetlabs/facter","owner":"puppetlabs","description":"Collect and display system facts","archived":false,"fork":false,"pushed_at":"2025-02-18T10:05:14.000Z","size":16507,"stargazers_count":623,"open_issues_count":40,"forks_count":495,"subscribers_count":190,"default_branch":"main","last_synced_at":"2025-04-23T17:19:44.029Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"https://puppet.com/open-source/#osp","language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/puppetlabs.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":"CODEOWNERS","security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2010-09-14T19:31:04.000Z","updated_at":"2025-04-22T06:43:12.000Z","dependencies_parsed_at":"2023-10-14T18:49:12.231Z","dependency_job_id":"264154a0-bdf0-447f-b87b-005671712826","html_url":"https://github.com/puppetlabs/facter","commit_stats":{"total_commits":1603,"total_committers":78,"mean_commits":20.55128205128205,"dds":0.7810355583281348,"last_synced_commit":"0656d9a34ce4790129f1fd6eba5bb4d49a9b9ad1"},"previous_names":[],"tags_count":317,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Ffacter","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Ffacter/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Ffacter/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Ffacter/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/puppetlabs","download_url":"https://codeload.github.com/puppetlabs/facter/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":250477821,"owners_count":21437049,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-01T16:01:39.928Z","updated_at":"2025-04-23T17:19:49.065Z","avatar_url":"https://github.com/puppetlabs.png","language":"Ruby","funding_links":[],"categories":["Ruby"],"sub_categories":[],"readme":"# facter\n\n[![Gem Version](https://badge.fury.io/rb/facter.svg)](https://badge.fury.io/rb/facter)\n[\u003cimg src=\"https://img.shields.io/badge/slack-puppet--dev-brightgreen?logo=slack\"\u003e](https://puppetcommunity.slack.com/messages/C0W1X7ZAL)\n\n[![Modules Status](https://github.com/puppetlabs/facter/workflows/Acceptance%20tests/badge.svg?branch=main)](https://github.com/puppetlabs/facter/actions)\n[![Modules Status](https://github.com/puppetlabs/facter/workflows/Unit%20tests/badge.svg?branch=main)](https://github.com/puppetlabs/facter/actions)\n[![Modules Status](https://github.com/puppetlabs/facter/workflows/Checks/badge.svg?branch=main)](https://github.com/puppetlabs/facter/actions)\n[![Test Coverage](https://api.codeclimate.com/v1/badges/3bd4be86f4b0b49bc0ca/test_coverage)](https://codeclimate.com/github/puppetlabs/facter/test_coverage)\n[![Maintainability](https://api.codeclimate.com/v1/badges/3bd4be86f4b0b49bc0ca/maintainability)](https://codeclimate.com/github/puppetlabs/facter/maintainability)\n\n\nFacter is a command-line tool that gathers basic facts about nodes (systems)\nsuch as hardware details, network settings, OS type and version, and more.\nThese facts are made available as variables in your Puppet manifests and can be\nused to inform conditional expressions in Puppet.\n\n## Documentation\n\nDocumentation for the Facter project can be found on the [Puppet Docs\nsite](https://puppet.com/docs/puppet/latest/facter.html).\n\n## Supported platforms\n* Linux\n* macOS\n* Windows\n* Solaris\n* AIX\n\n## Requirements\n* Ruby 2.5+\n* FFI (for facts like `mountpoints` which are resolved using C API calls)\n\n## Basic concepts\nThe project has three main parts, the framework, facts and resolvers.\nIn the framework we implement functionality that is agnostic of specific facts like parsing user input, formatting output, etc.\n\nFacts are the nuggets of information that will be provided by facter e.g. `os.name`, `networking.interfaces`, etc.\n\nResolvers have the role of gathering data from the system.\nFor example a resolver can execute a command on the system, can read a file or any operation that retrieves some data from a single source on the system.\n\n```mermaid\nsequenceDiagram\n    participant user\n    participant framework\n    participant fact\n    participant resolver\n    user-\u003e\u003eframework: user query\n    framework-\u003e\u003efact: create\n    fact-\u003e\u003eresolver: resolve\n    resolver-\u003e\u003efact: system information\n    fact-\u003e\u003eframework: fact value\n    framework-\u003e\u003euser: formatted user output\n````\n\n## Getting started\nAfter cloning the project, run `bundle install` to install all dependencies.\n\nYou can run facter by executing `./bin/facter`.\nThe command will output all the facts that facter detected for the current OS.\n\nThe implementation can be validated locally by running `bundle exec rake check`.\n\n## Goals - fast, easy, compatible\n* Gain performance similar to the C++ version of Facter. We plan to achieve this goal by gathering multiple facts with only one call and by using the faster Win32 API rather than WMI for the Windows implementation.\n* Facilitate community contribution. At the moment, C++ presents a possible impediment for community contributions.\n* Enable native integration with other Ruby-based projects such as Bolt and puppet.\n* Enable native integration for custom facts.\n* Provide 100% compatibility with C++ Facter (drop-in replacement).\n\n## Licensing\nSee [LICENSE](https://github.com/puppetlabs/facter/blob/main/LICENSE) file. Puppet is licensed by Puppet, Inc. under the Apache license. Puppet, Inc. can be contacted at: info@puppet.com\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs%2Ffacter","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpuppetlabs%2Ffacter","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs%2Ffacter/lists"}