| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Copyright © 2011 Martin Velez
Distributed under the same terms as Ruby
“RubyCLI” is a Ruby library which factors out the code needed to create Ruby programs with a command line interface (CLI) and that follow the Unix Philosophy design method outlined in www.faqs.org/docs/artu/ch01s06.html.
Currently, RubyCLI is short and simple. It uses Ruby’s core optparse library.
What does a command line application library need to do?
Provide a user interface (UI)
Process options (use Ruby’s Option Parser)
Process arguments
Pass options and arguments as parameters to other functions defined in libraries or other executables.
What does a command line application library need not do?
Validate options or arguments.
Libraries or other executables should do this.
This is the core algorithm of any Ruby CLI application
def run if parse_options? && arguments_Valid? process_options process_arguments output_options_and_arguments# def run command else output_help(1) end end
gem install ruby_cli
Download ruby_cli
Only the lib folder contents are needed
Use the RubyCLI module as a mixin for your CLI application
There are other tools out there which can be used to write command line applications.
clamp - I don’t like to learn new DSLs
optparse - This library uses this to parse options.
Thor - It does not try to follow the Unix Philosophy.
Clip - OptionParser already exists.
New File
Require the ruby_cli gem.
Create a Ruby class.
Call it “App”, for example.
Include the RubyCLI module.
Define the command method.
This is where your program does the actual work.
At this point you have options and arguments available.
Pass them as parameters to library functions or as options/arguments to other executables.
Be smart! Have libraries and other executables do the heavy work.
Be smart! Fewer lines of code (LOC) here is an indication that your code will be easy to maintain.
Define command options and defaults (optional)
This is where you define a hash for your options and set the default values.
Remember, options by definition are optional.
Define command arguments and defaults (optional)
This example demonstrates how to use RubyCLI to create a command line application.
#!/usr/bin/ruby require 'ruby_cli' class App include RubyCLI def command puts "hello world" end end app = App.new(ARGV) app.run
This example demonstrates how command specific options can be defined easily using RubyCLI. It is taken from the ruby_ngrams gem executable, which I also authored.
#!/usr/bin/env ruby require 'ruby_cli' require 'ruby_ngrams' class App include RubyCLI def initialize_command_options() @options = {:regex => //, :n => 2} end def define_command_option_parsing @opt_parser.on('-n', '--n NUM', Integer, 'set length n for n-grams') do |n| @options[:n] = n end @opt_parser.on('-r', '--regex "REGEX"', Regexp, 'set regex to split string into tokens') do |r| @options[:regex] = r end end def command text = ARGF.read text.ngrams(@options).each { |ngram| puts ngram.inspect } end end app = App.new(ARGV, __FILE__) app.run
Ruby 1.8.7 or greater
None other
There are other tools out there which can be used to write command line applications.
clamp - I don’t like to learn new DSLs
optparse - This library uses this to parse options.
Thor - It does not try to follow the Unix Philosophy.
Clip - OptionParser already exists.
I used his Ruby command line application skeleton code. I borrowed some ideas from there.
Add tests
ruby_cli is hosted on Github at:
https://github.com/martinvelez/ruby_cli
Provide feedback, get help, request features, and reports bugs here:
https://github.com/martinvelez/ruby_cli/issues
| Back | FazBrowse Home | New Git URL |