]> gitweb.fluxo.info Git - puppet-stdlib.git/commitdiff
First version. Improvment upon bool2num function found on the Internet.
authorKrzysztof Wilczynski <krzysztof.wilczynski@linux.com>
Mon, 25 Apr 2011 02:19:10 +0000 (03:19 +0100)
committerKrzysztof Wilczynski <krzysztof.wilczynski@linux.com>
Mon, 25 Apr 2011 02:19:10 +0000 (03:19 +0100)
Signed-off-by: Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>
bool2num.rb [new file with mode: 0644]
load_variables.rb

diff --git a/bool2num.rb b/bool2num.rb
new file mode 100644 (file)
index 0000000..c197b17
--- /dev/null
@@ -0,0 +1,36 @@
+#
+# bool2num.rb
+#
+
+module Puppet::Parser::Functions
+  newfunction(:bool2num, :type => :rvalue, :doc => <<-EOS
+    EOS
+  ) do |arguments|
+
+    raise(Puppet::ParseError, "bool2num(): Wrong number of arguments " +
+      "given (#{arguments.size} for 1)") if arguments.size < 1
+
+    boolean = arguments[0]
+
+    result = case boolean
+      #
+      # This is how undef looks like in Puppet ...
+      # We yield 0 (or false if you wish) in this case.
+      #
+      when /^$/, ''        then '0'
+      when /^(1|t|true)$/  then '1'
+      when /^(0|f|false)$/ then '0'
+      # This is not likely to happen ...
+      when /^(undef|undefined)$/ then '0'
+      # We may get real boolean values as well ...
+      when true  then '1'
+      when false then '0'
+      else
+        raise(Puppet::ParseError, 'bool2num(): Unknown type of boolean given')
+    end
+
+    return result
+  end
+end
+
+# vim: set ts=2 sw=2 et :
index 95dcc90858449f7d1d28767332c8059952a0b069..a28c64bc40d617dc75564177ba4739b493b061d4 100644 (file)
@@ -43,8 +43,8 @@ This will result in a variable $foo being added and ready for use.
     EOS
   ) do |arguments|
 
-    raise(Puppet::ParseError, "Wrong number of arguments " +
-      "given (#{arguments.size} for 2)") if arguments.size < 2
+    raise(Puppet::ParseError, "load_variables(): Wrong number of " +
+      "arguments given (#{arguments.size} for 2)") if arguments.size < 2
 
     data = {}
 
@@ -56,17 +56,21 @@ This will result in a variable $foo being added and ready for use.
       begin
         data = YAML.load_file(file)
       rescue => error
-        raise(Puppet::ParseError, "Unable to load data " +
+        raise(Puppet::ParseError, "load_variables(): Unable to load data " +
           "from the file `%s': %s" % file, error.to_s)
       end
 
-      raise(Puppet::ParseError, "Data in the file `%s' " +
+      raise(Puppet::ParseError, "load_variables(): Data in the file `%s' " +
         "is not a hash" % file) unless data.is_a?(Hash)
 
       data = ((data[key] and data[key].is_a?(Hash)) ? data[key] : {}) if key
     end
 
-    data.each { |param, value| setvar(param, strinterp(value)) }
+    data.each do |param, value|
+      value = strinterp(value) # Evaluate any interpolated variable names ...
+
+      setvar(param, value)
+    end
   end
 end