{"id":13531703,"url":"https://github.com/DannyBen/bashly","last_synced_at":"2025-04-01T20:30:25.830Z","repository":{"id":36252908,"uuid":"222777351","full_name":"DannyBen/bashly","owner":"DannyBen","description":"Bash command line framework and CLI generator","archived":false,"fork":false,"pushed_at":"2025-03-16T08:15:31.000Z","size":3548,"stargazers_count":2218,"open_issues_count":0,"forks_count":90,"subscribers_count":15,"default_branch":"master","last_synced_at":"2025-03-25T19:08:34.254Z","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/DannyBen.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},"funding":{"github":"DannyBen"}},"created_at":"2019-11-19T19:52:16.000Z","updated_at":"2025-03-25T15:25:46.000Z","dependencies_parsed_at":"2023-01-17T00:00:42.636Z","dependency_job_id":"2eefa0b5-fc90-4854-99ef-430a7305b031","html_url":"https://github.com/DannyBen/bashly","commit_stats":{"total_commits":703,"total_committers":5,"mean_commits":140.6,"dds":"0.017069701280227556","last_synced_commit":"23100222ca54158f5f0ee203a0770df768a6beed"},"previous_names":[],"tags_count":94,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DannyBen%2Fbashly","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DannyBen%2Fbashly/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DannyBen%2Fbashly/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DannyBen%2Fbashly/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DannyBen","download_url":"https://codeload.github.com/DannyBen/bashly/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246706657,"owners_count":20820785,"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":["bash","bash-scripting","cli","cli-framework","cli-generator","code-generator","ruby"],"created_at":"2024-08-01T07:01:04.993Z","updated_at":"2025-04-01T20:30:25.823Z","avatar_url":"https://github.com/DannyBen.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[![Gem Version](https://badge.fury.io/rb/bashly.svg)](https://badge.fury.io/rb/bashly)\n[![Build Status](https://github.com/DannyBen/bashly/workflows/Test/badge.svg)](https://github.com/DannyBen/bashly/actions?query=workflow%3ATest)\n[![Maintainability](https://api.codeclimate.com/v1/badges/8cf89047e50ca601e431/maintainability)](https://codeclimate.com/github/DannyBen/bashly/maintainability)\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/DannyBen/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/DannyBen/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/DannyBen/bashly/issues\n[discussions]: https://github.com/DannyBen/bashly/discussions\n[docs]: https://bashly.dev/\n[examples]: https://github.com/DannyBen/bashly/tree/master/examples#bashly-examples\n[contributing]: https://github.com/DannyBen/bashly/blob/master/CONTRIBUTING.md#how-to-contribute\n","funding_links":["https://github.com/sponsors/DannyBen"],"categories":["Ruby","Happy Exploring 🤘","cli","Shell Script Development","Bash/Shell","Libraries"],"sub_categories":["Reusable Things"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDannyBen%2Fbashly","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FDannyBen%2Fbashly","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FDannyBen%2Fbashly/lists"}