{"id":30069154,"url":"https://github.com/bashly-framework/bashly","last_synced_at":"2025-08-08T11:02:57.330Z","repository":{"id":36252908,"uuid":"222777351","full_name":"bashly-framework/bashly","owner":"bashly-framework","description":"Bash command line framework and CLI generator","archived":false,"fork":false,"pushed_at":"2025-08-04T14:10:17.000Z","size":3535,"stargazers_count":2297,"open_issues_count":5,"forks_count":93,"subscribers_count":17,"default_branch":"master","last_synced_at":"2025-08-04T18:12:05.732Z","etag":null,"topics":["bash","bash-scripting","cli","cli-framework","cli-generator","code-generator","ruby"],"latest_commit_sha":null,"homepage":"https://bashly.dev","language":"Ruby","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/bashly-framework.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":".github/FUNDING.yml","license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":"support/demo/.gitignore","governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null},"funding":{"github":"DannyBen"}},"created_at":"2019-11-19T19:52:16.000Z","updated_at":"2025-08-04T14:09:39.000Z","dependencies_parsed_at":"2023-01-17T00:00:42.636Z","dependency_job_id":"2eefa0b5-fc90-4854-99ef-430a7305b031","html_url":"https://github.com/bashly-framework/bashly","commit_stats":{"total_commits":703,"total_committers":5,"mean_commits":140.6,"dds":"0.017069701280227556","last_synced_commit":"23100222ca54158f5f0ee203a0770df768a6beed"},"previous_names":["bashly-framework/bashly"],"tags_count":98,"template":false,"template_full_name":null,"purl":"pkg:github/bashly-framework/bashly","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bashly-framework%2Fbashly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bashly-framework%2Fbashly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bashly-framework%2Fbashly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bashly-framework%2Fbashly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/bashly-framework","download_url":"https://codeload.github.com/bashly-framework/bashly/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/bashly-framework%2Fbashly/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":269366775,"owners_count":24405242,"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-08-08T02:00:09.200Z","response_time":72,"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":["bash","bash-scripting","cli","cli-framework","cli-generator","code-generator","ruby"],"created_at":"2025-08-08T11:01:47.770Z","updated_at":"2025-08-08T11:02:57.317Z","avatar_url":"https://github.com/bashly-framework.png","language":"Ruby","readme":"\u003cdiv align='center'\u003e\n\u003cimg src='support/img/bashly-logo.svg' width=280\u003e\n\n# Bashly - Bash CLI Framework and Generator\n\nCreate feature-rich bash scripts using simple YAML configuration\n\n## [bashly.dev](https://bashly.dev)\n\n---\n\n![demo](support/demo/cast.gif)\n\n\u003c/div\u003e\n\nBashly is a command line application (written in Ruby) that lets you\ngenerate feature-rich bash command line tools.\n\nBashly lets you focus on your specific code, without worrying about command line\nargument parsing, usage texts, error messages and other functions that are\nusually handled by a framework in any other programming language.\n\nIt is available both as a [ruby gem](https://rubygems.org/gems/bashly) and as\na [docker image](https://hub.docker.com/r/dannyben/bashly).\n\n## Documentation\n\n- [Bashly Homepage][docs]\n- [Examples][examples]\n\n## How it works\n\n1. You provide a YAML configuration file, describing commands, sub-commands,\n   arguments, and flags. Running `bashly init` creates an initial sample YAML\n   file for you ([example](https://github.com/bashly-framework/bashly/tree/master/examples/minimal#bashlyyml)).\n2. Bashly then automatically generates a bash script (when you run\n   `bashly generate`) that can parse and validate user input, provide help\n   messages, and run your code for each command.\n3. Your code for each command is kept in a separate file, and can be merged\n   again if you change it ([example](https://github.com/bashly-framework/bashly/blob/master/examples/minimal/src/root_command.sh)).\n\n## Features\n\nBashly is responsible for:\n\n- Generating a **single, standalone bash script**.\n- Generating a **human readable, shellcheck-compliant and shfmt-compliant script**.\n- Generating **usage texts** and help screens, showing your tool's arguments, flags and commands (works for sub-commands also).\n- Parsing the user's command line and extracting:\n  - Optional or required **positional arguments**.\n  - Optional or required **option flags** (with or without flag arguments).\n  - **Commands** (and sub-commands).\n  - Standard flags (like **--help** and **--version**).\n- Preventing your script from running unless the command line is valid.\n- Providing you with a place to input your code for each of the functions your tool performs, and merging it back to the final script.\n- Providing you with additional (optional) framework-style, standard library functions:\n  - **Color output**.\n  - **Config file management** (INI format).\n  - **YAML parsing**.\n  - **Bash completions**.\n  - *and more*.\n- Auto-generating **markdown and man page documentation** for your script.\n\n## Contributing / Support\n\nIf you experience any issue, have a question or a suggestion, or if you wish\nto contribute, feel free to [open an issue][issues] or\n[start a discussion][discussions].\n\nVisit the *[How to contribute][contributing]* page for more information.\n\n\n[issues]: https://github.com/bashly-framework/bashly/issues\n[discussions]: https://github.com/bashly-framework/bashly/discussions\n[docs]: https://bashly.dev/\n[examples]: https://github.com/bashly-framework/bashly/tree/master/examples#bashly-examples\n[contributing]: https://github.com/bashly-framework/bashly/blob/master/CONTRIBUTING.md#how-to-contribute\n","funding_links":["https://github.com/sponsors/DannyBen"],"categories":["Ruby","bash"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbashly-framework%2Fbashly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fbashly-framework%2Fbashly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fbashly-framework%2Fbashly/lists"}