{"id":20757638,"url":"https://github.com/dodevops/puppet-dependency-resolver","last_synced_at":"2026-04-25T02:36:28.878Z","repository":{"id":90748377,"uuid":"581492216","full_name":"dodevops/puppet-dependency-resolver","owner":"dodevops","description":"Resolving Puppetfile dependencies","archived":false,"fork":false,"pushed_at":"2024-01-08T11:43:41.000Z","size":150,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":4,"default_branch":"main","last_synced_at":"2025-03-11T16:23:04.456Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dodevops.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE.md","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2022-12-23T10:50:05.000Z","updated_at":"2022-12-23T10:57:13.000Z","dependencies_parsed_at":"2024-01-08T12:05:17.084Z","dependency_job_id":null,"html_url":"https://github.com/dodevops/puppet-dependency-resolver","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"purl":"pkg:github/dodevops/puppet-dependency-resolver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dodevops%2Fpuppet-dependency-resolver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dodevops%2Fpuppet-dependency-resolver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dodevops%2Fpuppet-dependency-resolver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dodevops%2Fpuppet-dependency-resolver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dodevops","download_url":"https://codeload.github.com/dodevops/puppet-dependency-resolver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dodevops%2Fpuppet-dependency-resolver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":27994391,"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","status":"online","status_checked_at":"2025-12-24T02:00:07.193Z","response_time":83,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"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-11-17T09:43:28.081Z","updated_at":"2025-12-24T03:34:09.073Z","avatar_url":"https://github.com/dodevops.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Puppetfile Depencency Resolver\n\n## Introduction\n\nThe [Puppetfile](https://puppet.com/docs/pe/2019.8/puppetfile.html) includes all required component \nmodules from the [Puppet Forge](https://forge.puppet.com/) and other external sources that will\nbe available for a Puppet environment after installing using tools like [r10k](https://github.com/puppetlabs/r10k).\n\nThis tool resolves the required dependent modules of the modules that are included in the Puppetfile\nand adds them to the Puppetfile as well.\n\nAn alternative tool is [Puppetfile Librarian](https://github.com/voxpupuli/librarian-puppet), which didn't\nsolve all the problems that led to the development of this tool.\n\n## Usage\n\n```bash\n$ node main.js resolve --help\n\n  Resolve Puppetfile dependencies\n\n  USAGE\n\n    main resolve [...options] \u003cpuppetfile\u003e\n\n  PARAMETERS\n\n    puppetfile - Absolute location of Puppetfile to parse/edit\n\n  OPTIONS\n\n    -h, --hide-file \u003chideFile\u003e         - Path to text file with list of modules (format: author-module) to hide in the output when all dependencies have been resolved []\n    -l, --loglevel \u003cloglevel\u003e          - Loglevel to use (see https://github.com/pimterry/loglevel/blob/master/index.d.ts#L14) [info]                                    \n    -i, --ignore-file \u003cignoreFile\u003e     - A file containing module slugs (format: author-module) that should be ignored for dependency errors or deprecations []          \n    -p, --preamble-file \u003cpreambleFile\u003e - Add the contents of this file at the top of the Puppetfile []      \n```\n\nThis will output the resolved Puppetfile.\n\n### Comments\n\nComments in front of module declarations are preserved while recompiling the Puppetfile. Please note\nthat comments on the same line of a module declaration is *not* preserved.\n\n### Hide file\n\nThe hide file can be used to remove certain modules from the resulting Puppetfile. This can be useful if\na module was adopted by another publisher, but is still required from specific modules.\n\nPut one module slug (publisher/module-name) per line.\n\n### Ignore file\n\nThe Puppetfile Dependency Resolver also checks if a module is deprecated and should be replaced\nwith another module. This usually results in an error and aborts the process.\n\nProcessing errors can be ignored using the ignore file. Put one module slug (publisher/module-name) per line.\n\n### Preamble file\n\nThe preamble file can be used to include organization comments in the resulting Puppetfile. The\npreamble is always included after the `forge` declaration.\n\n## Analyzing problems\n\nThe dependency resolver dumps its database when problems occur. Because of possible circular references, this database \nis in a special JSON format, which can be interpreted using [flatted](https://github.com/WebReflection/flatted#flatted).\n\n(The following examples expect, that the required packages are installed as documented in their respective documentation,\ne.g. `npm install flatted` or `npm install graphology`)\n\n```javascript\nconst {parse} = require('flatted');\nconst database = parse(fs.readFileSync('errorDump.js'))\n```\n\nThe database contains two keys:\n\n* forgeCache: the cache of downloaded information from the PuppetForge. It contains available releases and metadata\n  for each required module\n* dependencyGraph: a [Graphology](https://graphology.github.io/) graph containing the dependencies\n\nThe dependency graph can be imported to be analyzed by using the import function:\n\n```javascript\nconst Graph=require('graphology')\nconst analysisGraph=new Graph()\nanalysisGraph.import(database.dependencyGraph)\n```\n\nAfterwards, the graph can be analyzed using the documented features. For example, it can be turned into an SVG\nrepresentation like this:\n\n```javascript\nconst circular = require('graphology-layout/circular')\nconst render = require('graphology-svg')\ncircular.assign(analysisGraph, {scale:20})\nrender(analysisGraph, './graph.svg', () =\u003e console.log('Done!'))\n```","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdodevops%2Fpuppet-dependency-resolver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdodevops%2Fpuppet-dependency-resolver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdodevops%2Fpuppet-dependency-resolver/lists"}