- Author
-
Martin Velez
- Copyright
-
Copyright © 2011 Martin Velez
- License
-
Distributed under the same terms as Ruby
“RubyCLI” is a Ruby library which factors out the code needed to create Ruby programswith a command line interface (CLI) which follows 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? 1. A command line application does not need to validate options or arguments. Libraries or other executables should do this.
gem install ruby_cli
There are other tools out there which can be used to write command line applications.
-
-
I don’t like to learn new DSLs
-
-
-
This library uses this to parse options.
-
-
-
It does not try to follow the Unix Philosophy.
-
-
-
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) is good.
-
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 #!/usr/bin/ruby
require ‘ruby_cli’
class App include RubyCLI
def command puts “hello world” end
end
if __FILE__ == $0 app = App.new(ARGV) app.run end
-
Ruby 1.8.7 or greater
Todd Werth
-
I used his Ruby command line application skeleton code. I borrowed
some ideas from there.
-
?