require 'sfn' module Sfn class Config # Update command configuration class Update < Validate attribute( :apply_stack, String, :multiple => true, :description => 'Apply outputs from stack to input parameters', :short_flag => 'A' ) attribute( :apply_mapping, Smash, :description => 'Customize apply stack mapping as [StackName__]OutputName:ParameterName' ) attribute( :parameter, Smash, :multiple => true, :description => '[DEPRECATED - use `parameters`] Pass template parameters directly (ParamName:ParamValue)', :coerce => lambda{|v, inst| result = inst.data[:parameter] || Array.new case v when String v.split(',').each do |item| result.push(Smash[*item.split(/[=:]/, 2)]) end else result.push(v.to_smash) end {:bogo_multiple => result} }, :short_flag => 'R' ) attribute( :parameters, Smash, :description => 'Pass template parameters directly', :short_flag => 'm' ) attribute( :plan, [TrueClass, FalseClass], :default => true, :description => 'Provide planning information prior to update', :short_flag => 'l' ) attribute( :plan_only, [TrueClass, FalseClass], :default => false, :description => 'Exit after plan display' ) attribute( :diffs, [TrueClass, FalseClass], :description => 'Show planner content diff', :short_flag => 'D' ) attribute( :merge_api_options, [TrueClass, FalseClass], :description => 'Merge API options defined within configuration on update', :default => false ) attribute( :parameter_validation, String, :allowed => ['default', 'none', 'current', 'expected'], :description => 'Stack parameter validation behavior', :default => 'default' ) end end end