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
280 281 282 283 284 285 286 |
# File 'lib/heroku/kensa/client.rb', line 280 def self.defaults { :filename => 'addon-manifest.json', :env => "test", :async => false, } end |
.parse(args) ⇒ Object
276 277 278 |
# File 'lib/heroku/kensa/client.rb', line 276 def self.parse(args) defaults.merge(self.(args)) end |
.parse_command_line(args) ⇒ Object
310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 |
# File 'lib/heroku/kensa/client.rb', line 310 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
296 297 298 299 300 301 302 303 304 305 306 307 308 |
# File 'lib/heroku/kensa/client.rb', line 296 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
290 291 292 293 294 |
# File 'lib/heroku/kensa/client.rb', line 290 def self.pre_parse(args) args.partition do |token| token.match(/^--/) && !token.match(/^--(#{KNOWN_ARGS.join('|')})/) end.reverse end |