diff options
author | Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> | 2011-04-28 03:44:28 +0100 |
---|---|---|
committer | Krzysztof Wilczynski <krzysztof.wilczynski@linux.com> | 2011-04-28 03:44:28 +0100 |
commit | d25cd57dbece241db3642db81ab9c4672fc1eec1 (patch) | |
tree | 3ec67df4bbb31100235620867396be09d4f4c757 | |
parent | 31041c0e372a95c5d0737d0c70db187b2c8e1107 (diff) | |
download | puppet-stdlib-d25cd57dbece241db3642db81ab9c4672fc1eec1.tar.gz puppet-stdlib-d25cd57dbece241db3642db81ab9c4672fc1eec1.tar.bz2 |
First version. Simple strftime function to use within Puppet DSL.
Signed-off-by: Krzysztof Wilczynski <krzysztof.wilczynski@linux.com>
-rw-r--r-- | strftime.rb | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/strftime.rb b/strftime.rb new file mode 100644 index 0000000..b3cd6a6 --- /dev/null +++ b/strftime.rb @@ -0,0 +1,43 @@ +# +# strftime.rb +# + +module Puppet::Parser::Functions + newfunction(:strftime, :type => :rvalue, :doc => <<-EOS + EOS + ) do |arguments| + + # Technically we support two arguments but only first is mandatory ... + raise(Puppet::ParseError, "strftime(): Wrong number of arguments " + + "given (#{arguments.size} for 1)") if arguments.size < 1 + + format = arguments[0] + + raise(Puppet::ParseError, 'strftime(): You must provide ' + + 'format for evaluation') if format.empty? + + # The Time Zone argument is optional ... + time_zone = arguments[1] if arguments[1] + + time = Time.new + + if time_zone and not time_zone.empty? + original_zone = ENV['TZ'] + + local_time = time.clone + local_time = local_time.utc + + ENV['TZ'] = time_zone + + time = local_time.localtime + + ENV['TZ'] = original_zone + end + + result = time.strftime(format) + + return result + end +end + +# vim: set ts=2 sw=2 et : |