Crystal CLI supports inheritance for command classes.
abstract class Say < Cli::Command class Options arg "message" end end class Smile < Say def run puts "#{args.message} :)" end end class Frown < Say def run puts "#{args.message} :(" end end Smile.run %w(hello) # prints hello :) Frown.run %w(bye) # prints bye :(
module CongigFile macro included class Options string "-c", default: "./config.yml" end @config : YAML::Any? def config @config ||= YAML.parse(File.read(File.expand_path(options.c))) end end end class ReadConfig < Cli::Supercommand class Name < Cli::Command include ConfigFile def run puts config["name"].as_s end end class Version < Cli::Command include ConfigFile def run puts config["version"].as_s end end end
There was an error while loading. Please reload this page.