Class: Opsup::CLI::OptionBuilder
- Inherits:
-
Object
- Object
- Opsup::CLI::OptionBuilder
- Extended by:
- T::Sig
- Defined in:
- lib/opsup/cli/option_builder.rb
Constant Summary collapse
- DEFAULT_AWS_REGION =
'ap-northeast-1'
Class Method Summary collapse
Instance Method Summary collapse
- #define_options(parser) ⇒ Object
- #generate_config(options) ⇒ Object
- #options_from_env_vars(env_vars) ⇒ Object
Class Method Details
.create ⇒ Object
10 11 12 |
# File 'lib/opsup/cli/option_builder.rb', line 10 def self.create new end |
Instance Method Details
#define_options(parser) ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/opsup/cli/option_builder.rb', line 17 def (parser) parser.tap do |p| p.on('-s', '--stack STACK_NAME', 'target stack name') p.on('-m', '--mode MODE', Opsup::Config::MODES.join(' | ').to_s) p.on('--aws-cred KEY_ID,SECRET_KEY', 'AWS credentials') p.on('--opsworks-region REGION', "default: #{DEFAULT_AWS_REGION}") p.on('--cookbook-url URL', 'URL of cookbook to upload') p.on('--s3-bucket NAME', 'S3 bucket name for cookbooks') p.on('-d', '--dryrun') end end |
#generate_config(options) ⇒ Object
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 |
# File 'lib/opsup/cli/option_builder.rb', line 50 def generate_config() %w[stack aws-cred].each do |key| raise Opsup::Error, "missing required option: --#{key}" unless [key.to_sym] end aws_key_id, aws_secret = [:"aws-cred"].split(',') if aws_key_id.nil? || aws_secret.nil? raise Opsup::Error, "aws-cred must be 'key_id,secret_key' format" end mode = [:mode]&.to_sym raise Opsup::Error, "invalid mode: #{mode}" if mode && !Opsup::Config::MODES.include?(mode) Opsup::Config.new( stack_name: [:stack], aws_access_key_id: aws_key_id, aws_secret_access_key: aws_secret, opsworks_region: [:"opsworks-region"] || DEFAULT_AWS_REGION, cookbook_url: [:"cookbook-url"], s3_bucket_name: [:"s3-bucket"], s3_region: [:"s3-region"] || DEFAULT_AWS_REGION, running_mode: mode, dryrun: [:dryrun] || false, ) end |
#options_from_env_vars(env_vars) ⇒ Object
34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/opsup/cli/option_builder.rb', line 34 def (env_vars) [ %w[stack STACK], %w[mode MODE], %w[aws-cred AWS_CRED], %w[opsworks-region OPSWORKS_REGION], %w[cookbook-url COOKBOOK_URL], %w[s3-bucket S3_BUCKET], %w[dryrun DRYRUN], ].each_with_object({}) do |(key, env_key), obj| value = env_vars["OPSUP_#{env_key}"] obj[key.to_sym] = value if value end end |