fluke/devops-client/lib/devops-client/options/project_options.rb
2015-04-14 13:32:20 +04:00

95 lines
3.1 KiB
Ruby

require "devops-client/options/common_options"
require "set"
class ProjectOptions < CommonOptions
commands :create, :delete, :deploy, :list, {:multi => [:create]}, :servers, {:set => [:run_list]}, :show, :test, :update, {:user => [:add, :delete]}
def initialize args, def_options
super(args, def_options)
self.header = I18n.t("headers.project")
self.banner_header = "project"
id = "PROJECT_ID"
env = "DEPLOY_ENV"
self.show_params = [id]
self.create_params = [id]
self.delete_params = [id, "[#{env}]"]
self.deploy_params = [id, "[#{env}]"]
self.set_run_list_params = [id, env, "[(recipe[mycookbook::myrecipe])|(role[myrole]) ...]"]
self.servers_params = [id, "[#{env}]"]
self.multi_create_params = [id]
self.update_params = [id, "FILE"]
self.user_add_params = [id, "USER_NAME", "[USER_NAME ...]"]
self.user_delete_params = [id, "USER_NAME", "[USER_NAME ...]"]
self.test_params = [id, env]
end
def create_options
self.options do |parser, options|
parser.banner << self.create_banner
parser.recognize_option_value(:groups, 'project', variable: 'GROUP_1,GROUP_2...') do |groups|
options[:groups] = groups.split(",")
end
parser.recognize_option_value(:file, 'project') do |file|
abort("File '#{file}' does not exist") unless File.exist?(file)
options[:file] = file
end
parser.recognize_option_value(:subnets, 'project', variable: 'SUBNET_1,SUBNET_2...') do |subnets|
options[:subnets] = subnets.split(",")
end
parser.recognize_option_value(:users, 'project', variable: 'USER_1,USER_2...') do |users|
options[:users] = Set.new(users.split(","))
end
parser.recognize_option_value(:deploy_env, 'project', option_key: :identifier)
parser.recognize_option_value(:flavor, 'project')
parser.recognize_option_value(:image, 'project')
parser.recognize_option_value(:run_list, 'project')
parser.recognize_option_value(:provider, 'project')
parser.recognize_option_value(:no_expires, 'project', type: :switch, switch_value: true, default: false)
parser.recognize_option_value(:expires, 'project')
# TODO:
# support short options names
#
# options[:file] = nil
# parser.on("-f", "--file FILE", I18n.t("options.project.create.file")) do |file|
# abort("File '#{file}' does not exist") unless File.exist?(file)
# options[:file] = file
# end
end
end
def user_add_options
self.options do |parser, options|
parser.banner << self.user_add_banner
parser.recognize_option_value(:deploy_env, 'project', i18n_scope: 'user_add')
end
end
def user_delete_options
self.options do |parser, options|
parser.banner << self.user_delete_banner
parser.recognize_option_value(:deploy_env, 'project', i18n_scope: 'user_delete')
end
end
def deploy_options
options do |parser, options|
parser.banner << self.deploy_banner
parser.recognize_option_value(:servers, 'project', i18n_scope: 'deploy') do |servers|
options[:servers] = servers.split(",")
end
end
end
end