Class: Heroku::Kensa::Client::OptParser
- Inherits:
-
Object
- Object
- Heroku::Kensa::Client::OptParser
- Defined in:
- lib/heroku/kensa/client.rb
Constant Summary collapse
- KNOWN_ARGS =
OptionParser errors out on unnamed options so we have to pull out all the –flags and –flag=somethings
%w{file async production without-sso help plan version sso foreman template}
Class Method Summary collapse
- .defaults ⇒ Object
- .parse(args) ⇒ Object
- .parse_command_line(args) ⇒ Object
- .parse_provision(flags, args) ⇒ Object
- .pre_parse(args) ⇒ Object
Class Method Details
.defaults ⇒ Object
265 266 267 268 269 270 271 |
# File 'lib/heroku/kensa/client.rb', line 265 def self.defaults { :filename => 'addon-manifest.json', :env => "test", :async => false, } end |
.parse(args) ⇒ Object
261 262 263 |
# File 'lib/heroku/kensa/client.rb', line 261 def self.parse(args) defaults.merge(self.(args)) end |
.parse_command_line(args) ⇒ Object
295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 |
# File 'lib/heroku/kensa/client.rb', line 295 def self.parse_command_line(args) {}.tap do || OptionParser.new do |o| o.on("-f file", "--filename") { |filename| [:filename] = filename } o.on("--async") { [:async] = true } o.on("--production") { [:env] = "production" } o.on("--without-sso") { [:sso] = false } o.on("-h", "--help") { command = "help" } o.on("-p plan", "--plan") { |plan| [:plan] = plan } o.on("-v", "--version") { [:command] = "version" } o.on("-s sso", "--sso") { |method| [:method] = method } o.on("--foreman") { [:foreman] = true } o.on("-t name", "--template") do |template| [:template] = template end #note: have to add these to KNOWN_ARGS begin o.parse!(args) rescue OptionParser::InvalidOption => e raise CommandInvalid, e. end end end end |
.parse_provision(flags, args) ⇒ Object
281 282 283 284 285 286 287 288 289 290 291 292 293 |
# File 'lib/heroku/kensa/client.rb', line 281 def self.parse_provision(flags, args) {}.tap do || flags.each do |arg| key, value = arg.split('=') unless value peek = args[args.index(key) + 1] value = peek && !peek.match(/^--/) ? peek : 'true' end key = key.sub(/^--/,'') [key] = value end end end |
.pre_parse(args) ⇒ Object
275 276 277 278 279 |
# File 'lib/heroku/kensa/client.rb', line 275 def self.pre_parse(args) args.partition do |token| token.match(/^--/) && !token.match(/^--(#{KNOWN_ARGS.join('|')})/) end.reverse end |