Skip to content

Instantly share code, notes, and snippets.

@kwilczynski
Created August 21, 2011 11:06
Show Gist options
  • Save kwilczynski/1160472 to your computer and use it in GitHub Desktop.
Save kwilczynski/1160472 to your computer and use it in GitHub Desktop.
Puppet "exists" function ...
#
# exists.rb
#
# Copyright 2011 Puppet Labs Inc.
# Copyright 2011 Krzysztof Wilczynski
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
module Puppet::Parser::Functions
newfunction(:exists, :type => :rvalue, :doc => <<-EOS
Returns an boolean value if a given file and/or directory exists on Puppet Master.
Prototype:
exists(x)
Where x is a file or directory.
For example:
Given the following statements:
$a = '/etc/resolv.conf'
$b = '/this/does/not/exists'
notice exists($a)
notice exists($b)
The result will be as follows:
notice: Scope(Class[main]): true
notice: Scope(Class[main]): false
Note:
This function will ONLY be evaluated on the Puppet Master side and it
makes no sense to use it when checking whether a file and/or directory
exists on the client side.
EOS
) do |arguments|
#
# This is to ensure that whenever we call this function from within
# the Puppet manifest or alternatively form a template it will always
# do the right thing ...
#
arguments = arguments.shift if arguments.first.is_a?(Array)
raise Puppet::ParseError, "exists(): Wrong number of arguments " +
"given (#{arguments.size} for 1)" if arguments.size < 1
file = arguments.shift
raise Puppet::ParseError, 'exists(): Requires a string type ' +
'to work with' unless file.is_a?(String)
# We want to be sure that we have the complete path ...
file = File.expand_path(file)
File.exists?(file)
end
end
# vim: set ts=2 sw=2 et :
@MMore
Copy link

MMore commented Apr 24, 2012

thx, that was I am looking for :)

@kwilczynski
Copy link
Author

No problem! Glad you found it useful.

Grab better / newer version: https://github.com/kwilczynski/puppet-functions/blob/master/lib/puppet/parser/functions/exists.rb (edit: I think I its the same, but it is better to grab code from the repository anyway).

And have a look at https://github.com/kwilczynski/puppet-functions.

KW

@kwilczynski
Copy link
Author

Support for puppet:/// - https://gist.github.com/j4m3s/3307835

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment