module Formatron::CLI::Generators::Instance

CLI command for instance generator

Public Instance Methods

instance_action(c) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/formatron/cli/generators/instance.rb, line 87
def instance_action(c)
  c.action do |_args, options|
    directory = instance_directory options
    name = instance_name options, directory
    Formatron::Generators::Instance.generate(
      directory,
      name: name,
      instance_name: instance_instance_name(options, name),
      s3_bucket: instance_s3_bucket(options),
      bootstrap_configuration:
        instance_bootstrap_configuration(options),
      vpc: instance_vpc(options),
      subnet: instance_subnet(options),
      targets: instance_targets(options)
    )
  end
end
instance_bootstrap_configuration(options) click to toggle source
# File lib/formatron/cli/generators/instance.rb, line 63
def instance_bootstrap_configuration(options)
  options.bootstrap_configuration ||
    ask('Bootstrap configuration? ')
end
instance_directory(options) click to toggle source

rubocop:enable Metrics/MethodLength

# File lib/formatron/cli/generators/instance.rb, line 41
def instance_directory(options)
  options.directory || ask('Directory? ') do |q|
    q.default = Dir.pwd
  end
end
instance_formatron_command() click to toggle source

rubocop:enable Metrics/MethodLength

# File lib/formatron/cli/generators/instance.rb, line 106
def instance_formatron_command
  command :'generate instance' do |c|
    c.syntax = 'formatron generate instance [options]'
    c.summary = 'Generate an instance configuration'
    c.description = 'Generate an instance configuration'
    instance_options c
    instance_action c
  end
end
instance_instance_name(options, name) click to toggle source
# File lib/formatron/cli/generators/instance.rb, line 53
def instance_instance_name(options, name)
  options.instance_name || ask('Instance Name? ') do |q|
    q.default = name
  end
end
instance_name(options, directory) click to toggle source
# File lib/formatron/cli/generators/instance.rb, line 47
def instance_name(options, directory)
  options.name || ask('Name? ') do |q|
    q.default = File.basename directory
  end
end
instance_options(c) click to toggle source

rubocop:disable Metrics/MethodLength

# File lib/formatron/cli/generators/instance.rb, line 9
def instance_options(c)
  c.option '-n', '--name STRING', 'The name for the configuration'
  c.option '-i', '--instance-name STRING', 'The name for the instance'
  c.option(
    '-s',
    '--s3-bucket STRING',
    'The S3 bucket to store encrypted configuration'
  )
  c.option(
    '-b',
    '--bootstrap-configuration STRING',
    'The name of the bootstrap configuration to depend on'
  )
  c.option(
    '-p',
    '--vpc STRING',
    'The name of the VPC to add the instance to'
  )
  c.option(
    '-u',
    '--subnet STRING',
    'The name of the subnet to add the instance to'
  )
  c.option(
    '-x',
    '--targets LIST',
    Array,
    'The targets (eg. production test)'
  )
end
instance_s3_bucket(options) click to toggle source
# File lib/formatron/cli/generators/instance.rb, line 59
def instance_s3_bucket(options)
  options.s3_bucket || ask('S3 Bucket? ')
end
instance_subnet(options) click to toggle source
# File lib/formatron/cli/generators/instance.rb, line 74
def instance_subnet(options)
  options.subnet || ask('Subnet? ') do |q|
    q.default = 'private'
  end
end
instance_targets(options) click to toggle source
# File lib/formatron/cli/generators/instance.rb, line 80
def instance_targets(options)
  options.targets || ask('Targets? ', Array) do |q|
    q.default = 'production test'
  end
end
instance_vpc(options) click to toggle source
# File lib/formatron/cli/generators/instance.rb, line 68
def instance_vpc(options)
  options.vpc || ask('VPC? ') do |q|
    q.default = 'vpc'
  end
end