Sha256: 5948ecec0d781ba5f7af46a921c52687edc6637ad689b37dc666d8ec18fc15f4

Contents?: true

Size: 1.05 KB

Versions: 2

Compression:

Stored size: 1.05 KB

Contents

module Hieracles
  module Interpolate

    def parse(data, values, interactive = false)
      data.gsub(/%\{(?:(scope|hiera|literal|alias)\(['"])?(?:::)?([^\}"']*)(?:["']\))?\}/) do |match|
        if interactive && !values[$2.to_sym]
          values[$2.to_sym] = ask_about($2)
          values[$2.to_sym]
        else
          values[$2.to_sym]
        end
      end
    end

    def ask_about(var)
      @@output.puts
      @@output.puts "'#{var}' is not defined."
      @@output.puts "Is it missing in your ENC source?"
      @@output.puts "Maybe you should define a default value for that scope variable in your config file?"
      @@output.puts "Do you want to provide a temmporary value? [input value]"
      @@output.print "#{var} = "
      @@input.gets.chomp
    end

    # makes possible to set input and output
    def setio(input, output)
      @@input = input
      @@output = output
    end

    private

    # defaults to STDIN
    def input
      @@input ||= STDIN
    end

    # defaults to STDOUT
    def output
      @@output ||= STDOUT
    end

  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
hieracles-0.1.7 lib/hieracles/interpolate.rb
hieracles-0.1.6 lib/hieracles/interpolate.rb