├── .editorconfig ├── .github ├── FUNDING.yml └── PULL_REQUEST_TEMPLATE.md ├── .gitignore ├── CODE_OF_CONDUCT.md ├── CONTRIBUTING.md ├── Gemfile ├── LICENSE.txt ├── README.md ├── assets └── awesome_ruby_cli_apps.png └── logo.rb /.editorconfig: -------------------------------------------------------------------------------- 1 | root = true 2 | 3 | [*] 4 | charset = utf-8 5 | end_of_line = lf 6 | insert_final_newline = true 7 | indent_style = space 8 | indent_size = 2 9 | trim_trailing_whitespace = true 10 | -------------------------------------------------------------------------------- /.github/FUNDING.yml: -------------------------------------------------------------------------------- 1 | github: piotrmurach 2 | -------------------------------------------------------------------------------- /.github/PULL_REQUEST_TEMPLATE.md: -------------------------------------------------------------------------------- 1 | ### Submission Requirements 2 | 3 | - [] I've reviewed the [contribution guidelines](https://github.com/piotrmurach/awesome-ruby-cli-apps/blob/master/CONTRIBUTING.md). 4 | - [] This is an awesome CLI that I've used and cannot live without. 5 | 6 | ### Describe the CLI app 7 | 8 | * Repository/Homepage link: 9 | * Description: 10 | 11 | ### Why is this CLI app awesome? 12 | 13 | Mention any features that make this CLI stand out. 14 | 15 | ### How does this CLI compare with other similar tools? 16 | 17 | Explain the major differences. 18 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /.bundle/ 2 | /Gemfile.lock 3 | /README.md.* 4 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Contributor Covenant Code of Conduct 2 | 3 | ## Our Pledge 4 | 5 | We as members, contributors, and leaders pledge to make participation in our 6 | community a harassment-free experience for everyone, regardless of age, body 7 | size, visible or invisible disability, ethnicity, sex characteristics, gender 8 | identity and expression, level of experience, education, socio-economic status, 9 | nationality, personal appearance, race, caste, color, religion, or sexual 10 | identity and orientation. 11 | 12 | We pledge to act and interact in ways that contribute to an open, welcoming, 13 | diverse, inclusive, and healthy community. 14 | 15 | ## Our Standards 16 | 17 | Examples of behavior that contributes to a positive environment for our 18 | community include: 19 | 20 | * Demonstrating empathy and kindness toward other people 21 | * Being respectful of differing opinions, viewpoints, and experiences 22 | * Giving and gracefully accepting constructive feedback 23 | * Accepting responsibility and apologizing to those affected by our mistakes, 24 | and learning from the experience 25 | * Focusing on what is best not just for us as individuals, but for the overall 26 | community 27 | 28 | Examples of unacceptable behavior include: 29 | 30 | * The use of sexualized language or imagery, and sexual attention or advances of 31 | any kind 32 | * Trolling, insulting or derogatory comments, and personal or political attacks 33 | * Public or private harassment 34 | * Publishing others' private information, such as a physical or email address, 35 | without their explicit permission 36 | * Other conduct which could reasonably be considered inappropriate in a 37 | professional setting 38 | 39 | ## Enforcement Responsibilities 40 | 41 | Community leaders are responsible for clarifying and enforcing our standards of 42 | acceptable behavior and will take appropriate and fair corrective action in 43 | response to any behavior that they deem inappropriate, threatening, offensive, 44 | or harmful. 45 | 46 | Community leaders have the right and responsibility to remove, edit, or reject 47 | comments, commits, code, wiki edits, issues, and other contributions that are 48 | not aligned to this Code of Conduct, and will communicate reasons for moderation 49 | decisions when appropriate. 50 | 51 | ## Scope 52 | 53 | This Code of Conduct applies within all community spaces, and also applies when 54 | an individual is officially representing the community in public spaces. 55 | Examples of representing our community include using an official e-mail address, 56 | posting via an official social media account, or acting as an appointed 57 | representative at an online or offline event. 58 | 59 | ## Enforcement 60 | 61 | Instances of abusive, harassing, or otherwise unacceptable behavior may be 62 | reported to the community leaders responsible for enforcement at 63 | piotr@piotrmurach.com. 64 | All complaints will be reviewed and investigated promptly and fairly. 65 | 66 | All community leaders are obligated to respect the privacy and security of the 67 | reporter of any incident. 68 | 69 | ## Enforcement Guidelines 70 | 71 | Community leaders will follow these Community Impact Guidelines in determining 72 | the consequences for any action they deem in violation of this Code of Conduct: 73 | 74 | ### 1. Correction 75 | 76 | **Community Impact**: Use of inappropriate language or other behavior deemed 77 | unprofessional or unwelcome in the community. 78 | 79 | **Consequence**: A private, written warning from community leaders, providing 80 | clarity around the nature of the violation and an explanation of why the 81 | behavior was inappropriate. A public apology may be requested. 82 | 83 | ### 2. Warning 84 | 85 | **Community Impact**: A violation through a single incident or series of 86 | actions. 87 | 88 | **Consequence**: A warning with consequences for continued behavior. No 89 | interaction with the people involved, including unsolicited interaction with 90 | those enforcing the Code of Conduct, for a specified period of time. This 91 | includes avoiding interactions in community spaces as well as external channels 92 | like social media. Violating these terms may lead to a temporary or permanent 93 | ban. 94 | 95 | ### 3. Temporary Ban 96 | 97 | **Community Impact**: A serious violation of community standards, including 98 | sustained inappropriate behavior. 99 | 100 | **Consequence**: A temporary ban from any sort of interaction or public 101 | communication with the community for a specified period of time. No public or 102 | private interaction with the people involved, including unsolicited interaction 103 | with those enforcing the Code of Conduct, is allowed during this period. 104 | Violating these terms may lead to a permanent ban. 105 | 106 | ### 4. Permanent Ban 107 | 108 | **Community Impact**: Demonstrating a pattern of violation of community 109 | standards, including sustained inappropriate behavior, harassment of an 110 | individual, or aggression toward or disparagement of classes of individuals. 111 | 112 | **Consequence**: A permanent ban from any sort of public interaction within the 113 | community. 114 | 115 | ## Attribution 116 | 117 | This Code of Conduct is adapted from the [Contributor Covenant][homepage], 118 | version 2.1, available at 119 | [https://www.contributor-covenant.org/version/2/1/code_of_conduct.html][v2.1]. 120 | 121 | Community Impact Guidelines were inspired by 122 | [Mozilla's code of conduct enforcement ladder][Mozilla CoC]. 123 | 124 | For answers to common questions about this code of conduct, see the FAQ at 125 | [https://www.contributor-covenant.org/faq][FAQ]. Translations are available at 126 | [https://www.contributor-covenant.org/translations][translations]. 127 | 128 | [homepage]: https://www.contributor-covenant.org 129 | [v2.1]: https://www.contributor-covenant.org/version/2/1/code_of_conduct.html 130 | [Mozilla CoC]: https://github.com/mozilla/diversity 131 | [FAQ]: https://www.contributor-covenant.org/faq 132 | [translations]: https://www.contributor-covenant.org/translations 133 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contribution Guidelines 2 | 3 | It's great that you decided to contribute! Before you make an awesome submission, please read the guidelines carefully. 4 | 5 | ## Guidelines: 6 | 7 | - CLI is free and open source. 8 | - Tool's main goal is to be used in the terminal, e.g. `rspec` has CLI but it's predominantly a testing framework. 9 | - A tool is actively used and maintained, e.g. recent releases and significant download numbers. 10 | - The entries follow a pattern: `[name](URL) - Brief description that ends with a full stop.` 11 | - The name should match, if possible, the `rubygems.org` published gem name and not the stylised project name. 12 | - The URL should link, when possible, to a source code repository with documentation. 13 | - Avoid starting description with `A/An/The` and instead use third-person form, e.i. `Provides access to...`. 14 | - Prefer brevity. Write description that explains the tool's purpose most succinctly. 15 | - Don't mention `command-line`, `terminal`, `CLI` in the description as they're implied. 16 | - Check your spelling and grammar. 17 | - Preserve alphabetical ordering of the entries. 18 | - Check if your entry doesn't already exist. 19 | 20 | Thank you for your contribution! 21 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | source "https://rubygems.org" 4 | 5 | git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } 6 | 7 | gem "tty-box", "~> 0.7" 8 | gem "tty-font", "~> 0.5" 9 | gem "octodown", "~> 1.9" 10 | -------------------------------------------------------------------------------- /LICENSE.txt: -------------------------------------------------------------------------------- 1 | Attribution 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More_considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution 4.0 International Public License 58 | 59 | By exercising the Licensed Rights (defined below), You accept and agree 60 | to be bound by the terms and conditions of this Creative Commons 61 | Attribution 4.0 International Public License ("Public License"). To the 62 | extent this Public License may be interpreted as a contract, You are 63 | granted the Licensed Rights in consideration of Your acceptance of 64 | these terms and conditions, and the Licensor grants You such rights in 65 | consideration of benefits the Licensor receives from making the 66 | Licensed Material available under these terms and conditions. 67 | 68 | 69 | Section 1 -- Definitions. 70 | 71 | a. Adapted Material means material subject to Copyright and Similar 72 | Rights that is derived from or based upon the Licensed Material 73 | and in which the Licensed Material is translated, altered, 74 | arranged, transformed, or otherwise modified in a manner requiring 75 | permission under the Copyright and Similar Rights held by the 76 | Licensor. For purposes of this Public License, where the Licensed 77 | Material is a musical work, performance, or sound recording, 78 | Adapted Material is always produced where the Licensed Material is 79 | synched in timed relation with a moving image. 80 | 81 | b. Adapter's License means the license You apply to Your Copyright 82 | and Similar Rights in Your contributions to Adapted Material in 83 | accordance with the terms and conditions of this Public License. 84 | 85 | c. Copyright and Similar Rights means copyright and/or similar rights 86 | closely related to copyright including, without limitation, 87 | performance, broadcast, sound recording, and Sui Generis Database 88 | Rights, without regard to how the rights are labeled or 89 | categorized. For purposes of this Public License, the rights 90 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 91 | Rights. 92 | 93 | d. Effective Technological Measures means those measures that, in the 94 | absence of proper authority, may not be circumvented under laws 95 | fulfilling obligations under Article 11 of the WIPO Copyright 96 | Treaty adopted on December 20, 1996, and/or similar international 97 | agreements. 98 | 99 | e. Exceptions and Limitations means fair use, fair dealing, and/or 100 | any other exception or limitation to Copyright and Similar Rights 101 | that applies to Your use of the Licensed Material. 102 | 103 | f. Licensed Material means the artistic or literary work, database, 104 | or other material to which the Licensor applied this Public 105 | License. 106 | 107 | g. Licensed Rights means the rights granted to You subject to the 108 | terms and conditions of this Public License, which are limited to 109 | all Copyright and Similar Rights that apply to Your use of the 110 | Licensed Material and that the Licensor has authority to license. 111 | 112 | h. Licensor means the individual(s) or entity(ies) granting rights 113 | under this Public License. 114 | 115 | i. Share means to provide material to the public by any means or 116 | process that requires permission under the Licensed Rights, such 117 | as reproduction, public display, public performance, distribution, 118 | dissemination, communication, or importation, and to make material 119 | available to the public including in ways that members of the 120 | public may access the material from a place and at a time 121 | individually chosen by them. 122 | 123 | j. Sui Generis Database Rights means rights other than copyright 124 | resulting from Directive 96/9/EC of the European Parliament and of 125 | the Council of 11 March 1996 on the legal protection of databases, 126 | as amended and/or succeeded, as well as other essentially 127 | equivalent rights anywhere in the world. 128 | 129 | k. You means the individual or entity exercising the Licensed Rights 130 | under this Public License. Your has a corresponding meaning. 131 | 132 | 133 | Section 2 -- Scope. 134 | 135 | a. License grant. 136 | 137 | 1. Subject to the terms and conditions of this Public License, 138 | the Licensor hereby grants You a worldwide, royalty-free, 139 | non-sublicensable, non-exclusive, irrevocable license to 140 | exercise the Licensed Rights in the Licensed Material to: 141 | 142 | a. reproduce and Share the Licensed Material, in whole or 143 | in part; and 144 | 145 | b. produce, reproduce, and Share Adapted Material. 146 | 147 | 2. Exceptions and Limitations. For the avoidance of doubt, where 148 | Exceptions and Limitations apply to Your use, this Public 149 | License does not apply, and You do not need to comply with 150 | its terms and conditions. 151 | 152 | 3. Term. The term of this Public License is specified in Section 153 | 6(a). 154 | 155 | 4. Media and formats; technical modifications allowed. The 156 | Licensor authorizes You to exercise the Licensed Rights in 157 | all media and formats whether now known or hereafter created, 158 | and to make technical modifications necessary to do so. The 159 | Licensor waives and/or agrees not to assert any right or 160 | authority to forbid You from making technical modifications 161 | necessary to exercise the Licensed Rights, including 162 | technical modifications necessary to circumvent Effective 163 | Technological Measures. For purposes of this Public License, 164 | simply making modifications authorized by this Section 2(a) 165 | (4) never produces Adapted Material. 166 | 167 | 5. Downstream recipients. 168 | 169 | a. Offer from the Licensor -- Licensed Material. Every 170 | recipient of the Licensed Material automatically 171 | receives an offer from the Licensor to exercise the 172 | Licensed Rights under the terms and conditions of this 173 | Public License. 174 | 175 | b. No downstream restrictions. You may not offer or impose 176 | any additional or different terms or conditions on, or 177 | apply any Effective Technological Measures to, the 178 | Licensed Material if doing so restricts exercise of the 179 | Licensed Rights by any recipient of the Licensed 180 | Material. 181 | 182 | 6. No endorsement. Nothing in this Public License constitutes or 183 | may be construed as permission to assert or imply that You 184 | are, or that Your use of the Licensed Material is, connected 185 | with, or sponsored, endorsed, or granted official status by, 186 | the Licensor or others designated to receive attribution as 187 | provided in Section 3(a)(1)(A)(i). 188 | 189 | b. Other rights. 190 | 191 | 1. Moral rights, such as the right of integrity, are not 192 | licensed under this Public License, nor are publicity, 193 | privacy, and/or other similar personality rights; however, to 194 | the extent possible, the Licensor waives and/or agrees not to 195 | assert any such rights held by the Licensor to the limited 196 | extent necessary to allow You to exercise the Licensed 197 | Rights, but not otherwise. 198 | 199 | 2. Patent and trademark rights are not licensed under this 200 | Public License. 201 | 202 | 3. To the extent possible, the Licensor waives any right to 203 | collect royalties from You for the exercise of the Licensed 204 | Rights, whether directly or through a collecting society 205 | under any voluntary or waivable statutory or compulsory 206 | licensing scheme. In all other cases the Licensor expressly 207 | reserves any right to collect such royalties. 208 | 209 | 210 | Section 3 -- License Conditions. 211 | 212 | Your exercise of the Licensed Rights is expressly made subject to the 213 | following conditions. 214 | 215 | a. Attribution. 216 | 217 | 1. If You Share the Licensed Material (including in modified 218 | form), You must: 219 | 220 | a. retain the following if it is supplied by the Licensor 221 | with the Licensed Material: 222 | 223 | i. identification of the creator(s) of the Licensed 224 | Material and any others designated to receive 225 | attribution, in any reasonable manner requested by 226 | the Licensor (including by pseudonym if 227 | designated); 228 | 229 | ii. a copyright notice; 230 | 231 | iii. a notice that refers to this Public License; 232 | 233 | iv. a notice that refers to the disclaimer of 234 | warranties; 235 | 236 | v. a URI or hyperlink to the Licensed Material to the 237 | extent reasonably practicable; 238 | 239 | b. indicate if You modified the Licensed Material and 240 | retain an indication of any previous modifications; and 241 | 242 | c. indicate the Licensed Material is licensed under this 243 | Public License, and include the text of, or the URI or 244 | hyperlink to, this Public License. 245 | 246 | 2. You may satisfy the conditions in Section 3(a)(1) in any 247 | reasonable manner based on the medium, means, and context in 248 | which You Share the Licensed Material. For example, it may be 249 | reasonable to satisfy the conditions by providing a URI or 250 | hyperlink to a resource that includes the required 251 | information. 252 | 253 | 3. If requested by the Licensor, You must remove any of the 254 | information required by Section 3(a)(1)(A) to the extent 255 | reasonably practicable. 256 | 257 | 4. If You Share Adapted Material You produce, the Adapter's 258 | License You apply must not prevent recipients of the Adapted 259 | Material from complying with this Public License. 260 | 261 | 262 | Section 4 -- Sui Generis Database Rights. 263 | 264 | Where the Licensed Rights include Sui Generis Database Rights that 265 | apply to Your use of the Licensed Material: 266 | 267 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 268 | to extract, reuse, reproduce, and Share all or a substantial 269 | portion of the contents of the database; 270 | 271 | b. if You include all or a substantial portion of the database 272 | contents in a database in which You have Sui Generis Database 273 | Rights, then the database in which You have Sui Generis Database 274 | Rights (but not its individual contents) is Adapted Material; and 275 | 276 | c. You must comply with the conditions in Section 3(a) if You Share 277 | all or a substantial portion of the contents of the database. 278 | 279 | For the avoidance of doubt, this Section 4 supplements and does not 280 | replace Your obligations under this Public License where the Licensed 281 | Rights include other Copyright and Similar Rights. 282 | 283 | 284 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 285 | 286 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 287 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 288 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 289 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 290 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 291 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 292 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 293 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 294 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 295 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 296 | 297 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 298 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 299 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 300 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 301 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 302 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 303 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 304 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 305 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 306 | 307 | c. The disclaimer of warranties and limitation of liability provided 308 | above shall be interpreted in a manner that, to the extent 309 | possible, most closely approximates an absolute disclaimer and 310 | waiver of all liability. 311 | 312 | 313 | Section 6 -- Term and Termination. 314 | 315 | a. This Public License applies for the term of the Copyright and 316 | Similar Rights licensed here. However, if You fail to comply with 317 | this Public License, then Your rights under this Public License 318 | terminate automatically. 319 | 320 | b. Where Your right to use the Licensed Material has terminated under 321 | Section 6(a), it reinstates: 322 | 323 | 1. automatically as of the date the violation is cured, provided 324 | it is cured within 30 days of Your discovery of the 325 | violation; or 326 | 327 | 2. upon express reinstatement by the Licensor. 328 | 329 | For the avoidance of doubt, this Section 6(b) does not affect any 330 | right the Licensor may have to seek remedies for Your violations 331 | of this Public License. 332 | 333 | c. For the avoidance of doubt, the Licensor may also offer the 334 | Licensed Material under separate terms or conditions or stop 335 | distributing the Licensed Material at any time; however, doing so 336 | will not terminate this Public License. 337 | 338 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 339 | License. 340 | 341 | 342 | Section 7 -- Other Terms and Conditions. 343 | 344 | a. The Licensor shall not be bound by any additional or different 345 | terms or conditions communicated by You unless expressly agreed. 346 | 347 | b. Any arrangements, understandings, or agreements regarding the 348 | Licensed Material not stated herein are separate from and 349 | independent of the terms and conditions of this Public License. 350 | 351 | 352 | Section 8 -- Interpretation. 353 | 354 | a. For the avoidance of doubt, this Public License does not, and 355 | shall not be interpreted to, reduce, limit, restrict, or impose 356 | conditions on any use of the Licensed Material that could lawfully 357 | be made without permission under this Public License. 358 | 359 | b. To the extent possible, if any provision of this Public License is 360 | deemed unenforceable, it shall be automatically reformed to the 361 | minimum extent necessary to make it enforceable. If the provision 362 | cannot be reformed, it shall be severed from this Public License 363 | without affecting the enforceability of the remaining terms and 364 | conditions. 365 | 366 | c. No term or condition of this Public License will be waived and no 367 | failure to comply consented to unless expressly agreed to by the 368 | Licensor. 369 | 370 | d. Nothing in this Public License constitutes or may be interpreted 371 | as a limitation upon, or waiver of, any privileges and immunities 372 | that apply to the Licensor or You, including from the legal 373 | processes of any jurisdiction or authority. 374 | 375 | 376 | ======================================================================= 377 | 378 | Creative Commons is not a party to its public 379 | licenses. Notwithstanding, Creative Commons may elect to apply one of 380 | its public licenses to material it publishes and in those instances 381 | will be considered the “Licensor.” The text of the Creative Commons 382 | public licenses is dedicated to the public domain under the CC0 Public 383 | Domain Dedication. Except for the limited purpose of indicating that 384 | material is shared under a Creative Commons public license or as 385 | otherwise permitted by the Creative Commons policies published at 386 | creativecommons.org/policies, Creative Commons does not authorize the 387 | use of the trademark "Creative Commons" or any other trademark or logo 388 | of Creative Commons without its prior written consent including, 389 | without limitation, in connection with any unauthorized modifications 390 | to any of its public licenses or any other arrangements, 391 | understandings, or agreements concerning use of licensed material. For 392 | the avoidance of doubt, this paragraph does not form part of the 393 | public licenses. 394 | 395 | Creative Commons may be contacted at creativecommons.org. 396 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 |
2 | Awesome Ruby CLI Apps 3 |
4 | 5 | # Awesome Ruby CLI Apps [![Awesome](https://awesome.re/badge.svg)](https://awesome.re) 6 | 7 | > A curated list of awesome command-line applications in Ruby. 8 | 9 | Do you know an awesome Ruby CLI app? Great. Contribute it to the list! But first, please read the [contribution guidelines](https://github.com/piotrmurach/awesome-ruby-cli-apps/blob/main/CONTRIBUTING.md). 10 | 11 | ## Contents 12 | 13 | - [Awesome Ruby CLIs](#awesome-ruby-clis) 14 | - [Automation](#automation) 15 | - [Code Quality](#code-quality) 16 | - [Converting](#converting) 17 | - [Database](#database) 18 | - [DevOps](#devops) 19 | - [Games](#games) 20 | - [Generating](#generating) 21 | - [Learning](#learning) 22 | - [Linting](#linting) 23 | - [Miscellaneous](#miscellaneous) 24 | - [Package Management](#package-management) 25 | - [Profiling](#profiling) 26 | - [Release](#release) 27 | - [Search](#search) 28 | - [Security](#security) 29 | - [Third-party APIs](#third-party-apis) 30 | - [Workflow](#workflow) 31 | - [License](#license) 32 | - [Share it!](#share-it) 33 | 34 | ## Awesome Ruby CLIs 35 | 36 | ### Automation 37 | 38 | - [danger](https://github.com/danger/danger) - Automates team's conventions surrounding code review. 39 | - [git-pr-release](https://github.com/x-motemen/git-pr-release) - Creates a release pull request from production-ready branches. 40 | - [git_reflow](https://github.com/reenhanced/gitreflow) - Automatically creates pull requests and ensures code review process. 41 | - [guard](https://github.com/guard/guard) - Automates tasks based on file or directory modifications. 42 | - [overcommit](https://github.com/sds/overcommit) - Automates management and configuration of [Git hooks](https://git-scm.com/book/en/v2/Customizing-Git-Git-Hooks). 43 | - [pronto](https://github.com/prontolabs/pronto) - Automates code review of relevant changes. 44 | 45 | ### Code Quality 46 | 47 | - [flay](https://github.com/seattlerb/flay) - Analyzes code for structural similarities. 48 | - [flog](https://github.com/seattlerb/flog) - Reports the most tortured/complex code. 49 | - [rails_best_practices](https://github.com/flyerhzm/rails_best_practices) - Checks the quality of Rails code. 50 | - [reek](https://github.com/troessner/reek) - Detects code smells. 51 | - [rubocop](https://github.com/rubocop-hq/rubocop) - Analyzes and formats code based on the community [style guide](https://rubystyle.guide/). 52 | - [rubycritic](https://github.com/whitesmith/rubycritic) - Uses Reek, Flay and Flog to provide a code quality report. 53 | 54 | ### Converting 55 | 56 | - [asciidoctor](https://github.com/asciidoctor/asciidoctor) - Converts AsciiDoc content to HTML 5, DocBook 5, and other formats. 57 | - [asciidoctor-pdf](https://github.com/asciidoctor/asciidoctor-pdf) - Converts AsciiDoc content to PDF. 58 | - [image_optim](https://github.com/toy/image_optim) - Optimizes images using multiple utilities. 59 | - [kitabu](https://github.com/fnando/kitabu) - Creates e-books from Markdown. 60 | - [review](https://github.com/kmuto/review) - Converts Re:VIEW files to e-book formats. 61 | - [video_transcoding](https://github.com/donmelton/video_transcoding) - Transcodes, inspects and converts videos. 62 | 63 | ### Database 64 | 65 | - [database_consistency](https://github.com/djezzzl/database_consistency) - Checks database constraints for consistency with Rails model validations. 66 | - [lol_dba](https://github.com/plentz/lol_dba) - Scans your Rails application for missing indexes. 67 | - [pgdexter](https://github.com/ankane/dexter) - Creates Postgres indexes based on query analysis. 68 | - [pgslice](https://github.com/ankane/pgslice) - Partitions Postgres tables. 69 | - [pgsync](https://github.com/ankane/pgsync) - Syncs data from one Postgres database to another. 70 | - [squasher](https://github.com/jalkoby/squasher) - Compresses old Rails migrations into a single migration. 71 | 72 | ### DevOps 73 | 74 | - [dip](https://github.com/bibendi/dip) - Gives the "native" interaction with applications configured with Docker Compose. 75 | - [foreman](https://github.com/ddollar/foreman) - Manages Procfile-based applications. 76 | - [vagrant](https://github.com/hashicorp/vagrant) - Builds and distributes development environments. 77 | 78 | ### Games 79 | 80 | - [wolfentext3d](https://github.com/AtomicPair/wolfentext3d) - 3D dungeon crawling game. 81 | 82 | ### Generating 83 | 84 | - [annotate](https://github.com/ctran/annotate_models) - Comments Rails models with database schema information. 85 | - [github-changelog-generator](https://github.com/github-changelog-generator/github-changelog-generator) - Generates a changelog from tags, issues, labels and pull requests on GitHub. 86 | - [jazzy](https://github.com/realm/jazzy) - Generates documentation for Objective-C or Swift applications. 87 | - [pliny](https://github.com/interagent/pliny) - Generates endpoints, models, schemas and other APIs. 88 | - [sord](https://github.com/AaronC81/sord) - Generates RBI and RBS type signature files from YARD documentation. 89 | - [tapioca](https://github.com/Shopify/tapioca) - Generates RBI type signature files for DSLs, gems and Rails applications. 90 | - [tty](https://github.com/piotrmurach/tty) - Generates a new application and commands in a gem directory structure. 91 | 92 | ### Learning 93 | 94 | - [coltrane](https://github.com/pedrozath/coltrane) - Teaches music theory. 95 | 96 | ### Linting 97 | 98 | - [cookstyle](https://github.com/chef/cookstyle) - Lints Chef Infra cookbooks. 99 | - [csvlint](https://github.com/Data-Liberation-Front/csvlint.rb) - Validates CSV files. 100 | - [erblint](https://github.com/Shopify/erb-lint) - Lints ERB or HTML files. 101 | - [haml-lint](https://github.com/sds/haml-lint) - Keeps HAML files clean and readable. 102 | - [jsonlint](https://github.com/dougbarth/jsonlint) - Lints JSON files. 103 | - [markdownlint](https://github.com/markdownlint/markdownlint) - Lints Markdown files. 104 | - [puppet-lint](https://github.com/rodjek/puppet-lint) - Checks Puppet manifests conformity with the style guide. 105 | - [scss-lint](https://github.com/sds/scss-lint) - Lints SCSS files. 106 | - [slim-lint](https://github.com/sds/slim-lint) - Lints Slim templates. 107 | - [yard-junk](https://github.com/zverok/yard-junk) - Lints YARD documentation. 108 | 109 | ### Miscellaneous 110 | 111 | - [doomfire](https://github.com/marcinruszkiewicz/doomfire) - Animates Doom fire. 112 | - [lolcat](https://github.com/busyloop/lolcat) - Displays output in rainbow colours. 113 | 114 | ### Package Management 115 | 116 | - [brew](https://github.com/Homebrew/brew) - Manages packages for MacOS. 117 | - [cocoapods](https://github.com/CocoaPods/CocoaPods) - Manages dependencies for Xcode projects. 118 | - [gel](https://github.com/gel-rb/gel) - Manages gem dependencies. 119 | 120 | ### Profiling 121 | 122 | - [derailed_benchmarks](https://github.com/schneems/derailed_benchmarks) - Provides various benchmarks for a Rails application. 123 | - [fasterer](https://github.com/DamirSvrtan/fasterer) - Suggests speed improvements based on [common idioms](https://github.com/JuanitoFatas/fast-ruby). 124 | - [rbspy](https://github.com/rbspy/rbspy) - Profiles processes that are already running. 125 | - [ruby-prof](https://github.com/ruby-prof/ruby-prof) - Profiles code measuring elapsed time, allocations or memory. 126 | - [stackprof](https://github.com/tmm1/stackprof) - Profiles code by sampling call-stacks. 127 | - [typeprof](https://github.com/ruby/typeprof) - Performs type analysis. 128 | 129 | ### Release 130 | 131 | - [bump](https://github.com/gregorym/bump) - Increments the version number of a gem and a chef-cookbook. 132 | - [fastlane](https://github.com/fastlane/fastlane) - Automates building and releasing iOS and Android apps. 133 | - [fpm](https://github.com/jordansissel/fpm) - Builds packages such as rpms, debs, OSX packages, etc. 134 | - [ocra](https://github.com/larsch/ocra/) - Builds Windows executables from source code. 135 | - [rubyc](https://github.com/pmq20/ruby-packer) - Packs a Ruby application into a single executable. 136 | - [warbler](https://github.com/jruby/warbler) - Makes a Java jar or war file out of any Ruby, Rails or Rack application. 137 | 138 | ### Search 139 | 140 | - [colorls](https://github.com/athityakumar/colorls) - Enhances the `ls` command output. 141 | - [faker-bot](https://github.com/faker-ruby/faker-bot) - Looks up [Faker](https://github.com/faker-ruby/faker) methods. 142 | - [gemdiff](https://github.com/teeparham/gemdiff) - Finds source repositories for gems. 143 | - [license_finder](https://github.com/pivotal/LicenseFinder) - Finds licenses for the project's dependencies. 144 | 145 | ### Security 146 | 147 | - [brakeman](https://github.com/presidentbeef/brakeman) - Scans Rails applications for security vulnerabilities. 148 | - [bundler-audit](https://github.com/rubysec/bundler-audit) - Audits a project's Gemfile.lock for vulnerable gems and insecure gem sources. 149 | - [haiti-hash](https://github.com/noraj/haiti) - Identifies hash functions. 150 | - [pws](https://github.com/janlelis/pws) - Provides a secure password safe. 151 | - [wpscan](https://github.com/wpscanteam/wpscan) - Scans WordPress websites for security vulnerabilities. 152 | 153 | ### Third-party APIs 154 | 155 | - [3llo](https://github.com/qcam/3llo) - Trello client. 156 | - [t](https://github.com/sferik/t) - Twitter power tool. 157 | - [terjira](https://github.com/keepcosmos/terjira) - Jira client. 158 | - [twterm](https://github.com/ryota-ka/twterm) - Twitter client. 159 | 160 | ### Workflow 161 | 162 | - [doing](https://github.com/ttscoff/doing) - Manages a plain text to-do list in the TaskPaper format. 163 | - [git_fame](https://github.com/oleander/git-fame-rb) - Displays contribution statistics for git repository collaborators. 164 | - [gitsh](https://github.com/thoughtbot/gitsh) - Runs an interactive shell for git. 165 | - [octodown](https://github.com/ianks/octodown) - Previews GitHub flavoured Markdown. 166 | - [textbringer](https://github.com/shugo/textbringer) - Runs Emacs-like text editor. 167 | - [tmuxinator](https://github.com/tmuxinator/tmuxinator) - Creates and manages tmux sessions. 168 | 169 | ## License 170 | 171 | [![CC4](https://i.creativecommons.org/l/by/4.0/88x31.png)](https://creativecommons.org/licenses/by/4.0) This work is licensed under a [Creative Commons Attribution 4.0 International License](https://creativecommons.org/licenses/by/4.0) 172 | 173 | ## Share it! 174 | 175 | Ruby command-line applications are awesome. I trust you agree. To make this resource useful and full of great CLI app examples, I need your help. Could I ask you to share this README far and wide and star it so that we reach as many developers as possible? 176 | -------------------------------------------------------------------------------- /assets/awesome_ruby_cli_apps.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/piotrmurach/awesome-ruby-cli-apps/6bb7bfc68ca1da0549fd8d2c12ba5f94bcf2dffa/assets/awesome_ruby_cli_apps.png -------------------------------------------------------------------------------- /logo.rb: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | 3 | require "tty-box" 4 | require "tty-font" 5 | 6 | font = TTY::Font.new(:standard) 7 | box = TTY::Box.frame( 8 | align: :center, 9 | padding: [1, 20], 10 | border: { 11 | type: :thick 12 | }, 13 | style: { 14 | fg: :bright_yellow, 15 | bg: :blue, 16 | border: { 17 | fg: :bright_yellow, 18 | bg: :blue, 19 | } 20 | } 21 | ) do 22 | font.write("Awesome") + "\n" + font.write("Ruby CLI Apps") 23 | end 24 | 25 | print box 26 | --------------------------------------------------------------------------------