Module: CliHelper
- Defined in:
 - lib/cli_helper.rb
 
Overview
Used to handle terraform command options and execution in a consistent way
Class Method Summary collapse
- 
  
    
      .execute(command, opts = {})  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
Execute a Terraform command with open3.
 - 
  
    
      .transcribe_to_cli(opts, dir = nil, required = [])  ⇒ Object 
    
    
  
  
  
  
  
  
  
  
  
    
The apply and destroy CLI opts map from the same task opts to cli opts, share that code.
 
Class Method Details
.execute(command, opts = {}) ⇒ Object
Execute a Terraform command with open3. Supported option is ‘:dir` which is optionally the path to the Terraform project dir
      10 11 12 13 14 15 16 17 18 19 20 21 22 23 24  | 
    
      # File 'lib/cli_helper.rb', line 10 def execute(command, opts = {}) if opts[:dir] begin Open3.capture3(command, chdir: opts[:dir]) rescue Errno::ENOENT => e raise TaskHelper::Error.new(e., 'terraform/validation-error') end else begin Open3.capture3(command) rescue Errno::ENOENT => e raise TaskHelper::Error.new(e., 'terraform/validation-error') end end end  | 
  
.transcribe_to_cli(opts, dir = nil, required = []) ⇒ Object
The apply and destroy CLI opts map from the same task opts to cli opts, share that code.
      27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46  | 
    
      # File 'lib/cli_helper.rb', line 27 def transcribe_to_cli(opts, dir = nil, required = []) cli_opts = ['-no-color'] cli_opts.push(*required) cli_opts << "-state=#{File.(opts[:state], dir)}" if opts[:state] cli_opts << "-state-out=#{File.(opts[:state_out], dir)}" if opts[:state_out] if opts[:target] resources = opts[:target].is_a?(Array) ? opts[:target] : Array(opts[:target]) resources.each { |resource| cli_opts << "-target=#{resource}" } end opts[:var]&.each { |k, v| cli_opts << "-var '#{k}=#{v}'" } if opts[:var_file] var_file_paths = opts[:var_file].is_a?(Array) ? opts[:var_file] : Array(opts[:var_file]) var_file_paths.each { |path| cli_opts << "-var-file=#{File.(path, dir)}" } end cli_opts.join(' ') end  |