Skip to content

Instantly share code, notes, and snippets.



Last active Feb 7, 2018
What would you like to do?
Is there any Ruby Command Line Parsing library out there that JUST DOES PARSING?
# The ones I've tried (almost all from
# OptParse -- Doesn't support commands
# Commander -- Everything is about procs
# Trollop -- Doesn't support commands
# GLI -- Relies on calling a proc
# Methadone -- See GLI
# Main -- Seems to require the use of a #run method or proc
# Thor -- Focused on running methods, resulting code very difficult to read
# CRI -- Requires #run method or proc (seeing a pattern here...)
# Optitron -- Very similar to Thor
# Clamp -- Framework, again requires #execute
# Escort -- Also a framework, expects a block to execute
# Executable -- Works with classes and does reflection
# CLI.K -- Everything is a lambda
# Slop -- Close, may need some redesign to get it to where I need it
# Mixlib-CLI -- It's most of the way there but works via polluting the namespace.
# Also, command support is based around the classes configured.
# So yeah the closest I've found is Slop. I'm working on improving it to support all
# of the cases I need but I think I've run into some design issues that will require
# a rewrite of quite a bit of it.
# Is there anything I've missed?
# What is with this fascination with calling procs anyway?
# I just want parsing, nothing else!
library = do
global_option "--verbose", "-v", "Set logging to verbose"
global_option "--log_to FILE", "-L FILE", "Log to a file"
command "one" do
option "--config FILE", "Specify a config file"
results = library.parse("--verbose -L logger.log one --config config.yml extra values")
# Global options
results[:verbose] == true
results[:log_to] == "logger.log"
# Command options are scoped
results[:config] == nil
results[:one][:config] == "config.yml"
# Anything that isn't directly matched is left alone for further use == %w(extra values)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.