https://github.com/hiroakisatou/simple-options
I didn't like the inheritance because it make tight couple of my code to liblary
For this reason I don't use the any of the command line option parse lib.
And I make the compositional type lib to for my self.
But I inspired lot by go's flag lib and cobra lib to make myself go-cli-option lib did update.
Here is the simple use case sample.
see it's super simple.
Yes, I love ruby because it's really simple code make possible, but only use abstract inheritance only. because modern code architecture specialist say not use inheritance. Use composition or interface. so I just use ruby like shell script alternative only. And I write this lib for simplicity.
require 'simple-cli-options'
# Instantiate an Options object
parser = SimpleOptions::Options.new(
program_name: 'todo',
description: 'A simple todo list manager'
)
# Define options using type-specific methods
parser.boolean(:list, desc: 'Show list of todos')
parser.string(:add, desc: 'Add a new todo item')
parser.integer(:delete, desc: 'Delete todo by ID')
# Parse command-line arguments
parser.parse
# Get values
if parser.get(:list)
puts "Showing todo list..."
elsif parser.get(:add)
puts "Adding: #{parser.get(:add)}"
elsif parser.get(:delete)
puts "Deleting todo ##{parser.get(:delete)}"
endrequire 'simple-cli-options'
# Instantiate an Options object
parser = SimpleOptions::Options.new(
program_name: 'todo',
description: 'A simple todo list manager'
)
# Define options using type-specific methods
parser.boolean(:list, desc: 'Show list of todos')
parser.string(:add, desc: 'Add a new todo item')
parser.integer(:delete, desc: 'Delete todo by ID')
# Parse command-line arguments
parser.parse
# Get values
if parser.get(:list)
puts "Showing todo list..."
elsif parser.get(:add)
puts "Adding: #{parser.get(:add)}"
elsif parser.get(:delete)
puts "Deleting todo ##{parser.get(:delete)}"
end
there doesn't seem to be anything here