{"id":15156684,"url":"https://github.com/puppetlabs/puppet-specifications","last_synced_at":"2025-04-04T11:13:51.279Z","repository":{"id":16868555,"uuid":"19628858","full_name":"puppetlabs/puppet-specifications","owner":"puppetlabs","description":"Specification of the Puppet Language, Catalog, Extension points","archived":false,"fork":false,"pushed_at":"2025-02-04T02:12:35.000Z","size":1045,"stargazers_count":99,"open_issues_count":8,"forks_count":66,"subscribers_count":178,"default_branch":"master","last_synced_at":"2025-03-28T10:08:14.514Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Ruby","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/puppetlabs.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"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":"2014-05-09T23:38:54.000Z","updated_at":"2024-08-07T16:35:22.000Z","dependencies_parsed_at":"2024-04-23T19:26:45.119Z","dependency_job_id":"008b76dc-87ad-46ab-b1c1-c09421d84e8c","html_url":"https://github.com/puppetlabs/puppet-specifications","commit_stats":{"total_commits":409,"total_committers":59,"mean_commits":6.932203389830509,"dds":0.7677261613691931,"last_synced_commit":"2c2b639757fa41b28323374042c8480be7913805"},"previous_names":[],"tags_count":4,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppet-specifications","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppet-specifications/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppet-specifications/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/puppetlabs%2Fpuppet-specifications/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/puppetlabs","download_url":"https://codeload.github.com/puppetlabs/puppet-specifications/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247166168,"owners_count":20894654,"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-09-26T19:40:54.542Z","updated_at":"2025-04-04T11:13:51.259Z","avatar_url":"https://github.com/puppetlabs.png","language":"Ruby","funding_links":[],"categories":[],"sub_categories":[],"readme":"Puppet Specifications\n===\n\nThis repository contains specifications for [the project Puppet][1], and related technologies.\n\nPuppet Language Specification\n---\nThe Puppet Programming Language Specification is a specification of the Puppet Programming\nLanguage. The first published release of this specification specifies the language version 4.\n\nThe version 4.0.0 is the first version of the specification (this to make it harmonize\nwith the 4.0.0 release of Puppet). From that point, the intention is to keep the\nsame specification version even if the minor version of the implementation changes (i.e.\nfor other reasons that the specification has changed). When a specification change is made,\nit *may* skip several numbers to again harmonize with the Puppet implementation version number.\n\nUntil Puppet 4.0 was released, there was just the \"current\" and \"future\" implementations\nof the language. As time goes on it will be impossible to use only those words as their meaning\nis relative to a particular release of puppet (the future in 3.6 is not the same as the future in 3.7, and again not the same as current in 4.0) - hence the need for a separate version of the\nspecification.\n\nThe [Puppet Project][1] is the reference implementation of the specification. \n\nSemantic Versioning\n---\nThe specifications follows semantic versioning with the following semantics:\n\n* The micro version contains corrections, clarifications of the specification. All implementation\n  of the specification that are compliant with the same minor version are also compliant with\n  all micro versions of the same minor version.\n* The minor versions contains changes that are non breaking. But an implementation that\n  is compliant with a previous minor versions is not automatically compliant with all future\n  minor versions for the same major version.\n* The major versions contains changes that are breaking. An implementation that is compliant\n  with an earlier major version can not be compliant with a major specification change. (It may\n  offser compliance with multiple versions of the specification via the use of feature flags).\n\nIndex\n---\n\n* [Introduction][2] - terminology and EBNF grammar\n* [Modus Operandi][3] - overview of the runtime (loading, start-point, order of execution)\n* [Types, Values and Variables][4] specification of types, values and variables\n* [Naming and Scoping][5] - specification of names, scopes, and references\n* [Lexical Structure][6] - specification of the textual aspects of the Puppet Language\n* [Expressions][7] - specification of all non catalog expressions in the language\n* [Catalog Expressions][8] - specification of all expressions related to catalog production\n* [Expression Precedence][9] - specification of the precedence of expressions / operators\n* [Puppet Functions][14] - functions in the puppet language\n* [Deprecation][10] - specification of deprecated constructs\n* PROPOSALS\n* API\n  * [Function Ruby API][11] - the API for writing functions in Ruby\n  * [Plugin Ruby API][12] - the API for plugins in Ruby\n  * [Resource Type Ruby API][16] - the API for resource types in Ruby\n* Models\n  * [Puppet Extended S-Expression Notation (PN)][17] - specification of the PN format \n* Plan Extensions\n  * [Apply Expression][18] - an expression to capture a manifest block and apply it on remote nodes\n* General\n  * [Settings and Options][13] - specification of settings and options \n  * [Puppet Installation Layout][15] - specification of Puppet related files on disk\n\n[2]:language/intro.md\n[3]:language/modus-operandi.md\n[4]:language/types_values_variables.md\n[5]:language/names.md\n[6]:language/lexical_structure.md\n[7]:language/expressions.md\n[8]:language/catalog_expressions.md\n[9]:language/expression_precedence.md\n[10]:language/deprecations.md\n\n[11]:language/func-api.md\n[12]:language/plugin-api.md\n[13]:language/settings.md\n[14]:language/puppet-functions.md\n[15]:file_paths.md\n[16]:language/resource_types.md\n[17]:models/pn.md\n[18]:language/apply.md\n\n[1]:http://www.github.com/puppetlabs/puppet\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs%2Fpuppet-specifications","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpuppetlabs%2Fpuppet-specifications","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpuppetlabs%2Fpuppet-specifications/lists"}