{"id":17419613,"url":"https://github.com/bendrucker/cfn-stack","last_synced_at":"2025-10-13T10:37:57.644Z","repository":{"id":17796376,"uuid":"82730313","full_name":"bendrucker/cfn-stack","owner":"bendrucker","description":"CLI for launching CloudFormation stacks using local parameter files","archived":false,"fork":false,"pushed_at":"2025-08-13T13:09:39.000Z","size":41,"stargazers_count":3,"open_issues_count":1,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-10-11T07:28:27.705Z","etag":null,"topics":["aws","cli","cloudformation"],"latest_commit_sha":null,"homepage":"","language":"JavaScript","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/bendrucker.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":null,"security":null,"support":null}},"created_at":"2017-02-21T21:45:19.000Z","updated_at":"2025-08-13T01:13:46.000Z","dependencies_parsed_at":"2023-02-14T07:46:28.839Z","dependency_job_id":null,"html_url":"https://github.com/bendrucker/cfn-stack","commit_stats":null,"previous_names":[],"tags_count":15,"template":false,"template_full_name":null,"purl":"pkg:github/bendrucker/cfn-stack","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bendrucker%2Fcfn-stack","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bendrucker%2Fcfn-stack/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bendrucker%2Fcfn-stack/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bendrucker%2Fcfn-stack/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bendrucker","download_url":"https://codeload.github.com/bendrucker/cfn-stack/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bendrucker%2Fcfn-stack/sbom","scorecard":{"id":231945,"data":{"date":"2025-08-11","repo":{"name":"github.com/bendrucker/cfn-stack","commit":"691d7462b27d5aa278deb571ddb71411f9c12084"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3,"checks":[{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Maintained","score":0,"reason":"1 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Code-Review","score":0,"reason":"Found 0/14 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: license:0","Info: FSF or OSI recognized license: MIT License: license:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":0,"reason":"branch protection not enabled on development/release branches","details":["Warn: branch protection not enabled for branch 'master'"],"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"SAST","score":0,"reason":"SAST tool is not run on all commits -- score normalized to 0","details":["Warn: 0 commits out of 16 are checked with a SAST tool"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}}]},"last_synced_at":"2025-08-17T04:59:51.748Z","repository_id":17796376,"created_at":"2025-08-17T04:59:51.748Z","updated_at":"2025-08-17T04:59:51.748Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":279012673,"owners_count":26085159,"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-10-12T02:00:06.719Z","response_time":53,"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":["aws","cli","cloudformation"],"created_at":"2024-10-17T02:27:47.934Z","updated_at":"2025-10-13T10:37:57.623Z","avatar_url":"https://github.com/bendrucker.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# cfn-stack [![Build Status](https://travis-ci.org/bendrucker/cfn-stack.svg?branch=master)](https://travis-ci.org/bendrucker/cfn-stack) [![Greenkeeper badge](https://badges.greenkeeper.io/bendrucker/cfn-stack.svg)](https://greenkeeper.io/)\n\n\u003e CLI for launching CloudFormation stacks using local parameter files\n\n`cfn-stack` is a simple CLI designed to join templates with YAML files that specify the stack name, template, and input parameters.\n\nIt is designed to work with stack files organized into a logical folder structure. A simple application might use the following stack configuration:\n\n```\n.\n├── development\n│   ├── _defaults.yml\n│   ├── api.yml\n│   └── web.yml\n└── production\n    ├── _defaults.yml\n    ├── api.yml\n    └── web.yml\n```\n\nYou'll point `cfn-stack` to an individual stack configuration (e.g. `production/api.yml`). A `_defaults.yml` file can supply default parameters to every stack. These defaults are read recursively (up to the working directory) so you can apply defaults at multiple levels in the file tree.\n\nYour stack file might look like this:\n\n```yaml\nTemplate: api.yml\nParameters:\n  DnsName: api.web\n```\n\nThe live stack that `cfn-stack` creates will be named based on the file path. `production/api.yml` is created as `production-api`. This allows you to store stack configurations outside of AWS, under version control, while still retaining a clear relationship between your source files and CloudFormation. \n\n## Install\n\nTo use the CLI:\n\n```sh\nnpm install --global cfn-stack\n```\n\nOr to use the API:\n\n```sh\nnpm install --save cfn-stack\n```\n\n## Usage\n\n### CLI\n\n```sh\ncfn-stack stacks/production/api.yml\n```\n\n### API\n\n```js\nvar cfnStack = require('cfn-stack')\n\nvar stack = {\n  Name: 'my-stack',\n  TemplateBody: fs.readFileSync('api.yml'),\n  Parameters: {\n    DnsName: 'api.web'\n  }\n}\n\ncfnStack(stack, {region: 'us-east-1'}, callback)\n```\n\n## CLI\n\n#### `cfn-stack \u003cstack\u003e`\n\nCreates a live CloudFormation stack using the configuration specified in the `stack` YAML file. \n\n##### --stack-name\n\nType: `string`\n\nA custom name to use for the stack. If omitted, a stack name will be generated using the stack file path.\n\n```sh\ncfn-stack stacks/production/api.yml --stack-name 'my-custom-name'\n```\n\n##### --load\n\nType: `string`\n\nAn expression that will be used to generate a shell command for loading/pre-processing the template. The token `$0` will be replaced with the template path.\n\n```sh\ncfn-stack stacks/production/api.yml --load 'my-cfn-preprocessor $0'\n```\n\n##### --template-directory\n\nType: `string`  \nDefault: `templates/`\n\nSpecifies the directory where template paths will be resolved.\n\n##### --disable-rollback\n\nType: `boolean`  \nDefault: `false`\n\nPrevents CloudFormation from rolling back and deleting resources when stack creation fails. Does not apply to stack updates.\n\n##### --region\n\nType: `string`  \nDefault: `us-east-1`\n\nThe AWS region where the stack will be deployed.\n\n## API\n\n#### `cfnStack(stack, options, callback)` -\u003e `output`\n\n##### stack\n\n*Required*  \nType: `object`\n\nA stack object defining the stack name, parameters, and template.\n\n###### Name\n\n*Required*  \nType: `string`\n\nThe name that will be assigned to the stack.\n\n###### Capabilities\n\nType: `array`  \nDefault: `[]`\n\nAn array of strings specifying [stack capabilities](http://docs.aws.amazon.com/AWSCloudFormation/latest/APIReference/API_CreateStack.html).\n\n###### Template\n\n*Required*  \nType: `string`\n\nA JSON or YAML CloudFormation template string.\n\n###### Parameters\n\nType: `object`  \nDefault: `undefined`\n\nThe stack parameters expressed as an object of strings/numbers/arrays. All values will be coerced to strings (required by CloudFormation). Arrays will be converted to comma delimited lists.\n\n##### options\n\n###### region\n\n*Required*  \nType: `string`\n\nThe AWS region where the stack will be launched.\n\n###### disableRollback\n\nType: `boolean`  \nDefault: `false`\n\nDisables rollback of stacks that cannot be created successfully.\n\n###### update\n\nType: `boolean`  \nDefault: `false`\n\nSpecifies that the stack already exists and should be updated instead of created. By default, the library will first try to create a stack and then update an existing one if it already exists.\n\n\n## License\n\nMIT © [Ben Drucker](http://bendrucker.me)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbendrucker%2Fcfn-stack","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbendrucker%2Fcfn-stack","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbendrucker%2Fcfn-stack/lists"}