kurtisnelson/menu-cli

View on GitHub
bin/menu

Summary

Maintainability
Test Coverage
#!/usr/bin/env ruby

require 'menu'
require 'optparse'

options = OpenStruct.new

options.payload = nil
options.component = nil
options.beta = false
options.verbose = false
options.release = nil
options.bucket = ENV['MENU_BUCKET']

optparse = OptionParser.new do|opts|
  opts.banner = "Usage: menu [options] <payload>"

  opts.on( '-c', '--component [NAME]', 'Select component') do |app|
    options.component = app
  end

  opts.on( '-b', '--beta', 'Mark beta') do |flag|
    options.beta = true
  end

  opts.on('-v', '--verbose', 'Verbose') do |v|
    options.verbose = v
  end

  opts.on( '-r', '--release [NUM]', Integer, 'Set release #') do |v|
    options.release = v
  end

  opts.on( '-h', '--help', 'Display this screen' ) do
    puts opts
    exit 
  end
end

begin
  optparse.parse!
rescue OptionParser::InvalidOption => e
  puts e
  exit 1
end

unless ENV['MENU_SSL_URL']
  puts "Missing SSL-enabled URL, please set $MENU_SSL_URL in environment"
  exit 1
end

unless ENV['MENU_URL']
  puts "Missing base URL, please set $MENU_URL in environment"
  exit 1
end

unless options.bucket
  puts "Missing bucket, please set $MENU_BUCKET in environment"
  exit 1
end

unless options.component
  puts "Missing component!"
  exit 1
end

options.payload = ARGV.pop

unless options.payload
  puts "Missing payload!"
  exit 1
end

Menu::Runner.new(options).release