summaryrefslogtreecommitdiffstats
path: root/lib/puppet/parameter
diff options
context:
space:
mode:
authorMax Martin <max@puppetlabs.com>2011-03-23 14:43:29 -0700
committerMax Martin <max@puppetlabs.com>2011-03-23 14:43:29 -0700
commit4196699f5fbb90ceecbb709c8502622eaad39062 (patch)
treeadb06f307051368e9fe9a23c3338fe7511eb8adf /lib/puppet/parameter
parent7e71840e29cb09c772668a51ada3cab1e319e50f (diff)
parent66d0b16c8a0a55dd79b1b0f0e639f107e552d9ab (diff)
downloadpuppet-4196699f5fbb90ceecbb709c8502622eaad39062.tar.gz
puppet-4196699f5fbb90ceecbb709c8502622eaad39062.tar.xz
puppet-4196699f5fbb90ceecbb709c8502622eaad39062.zip
Merge branch 'next'
* next: (34 commits) (#6820) Fix File class lookup in the file type for Ruby 1.9 (#6820) Fix nagios parser to use proper hash syntax for Ruby 1.9 (#6820) Fix Invalid multibyte character (#6820) Fix RDOC parser to work with Ruby 1.9 (#6820) Fix invalid next that should be a return (#2782) Fix constant_defined? (#6527) Fix pip tests (#6527) Fix uninstall problem and refactor (#6527) Added pip package provider. maint: Change code for finding spec_helper to work with Ruby 1.9 Fix error "invalid multibyte char (US-ASCII)" under Ruby 1.9 Fixed #6562 - Minor kick documentation fix (#6566) Replace tabs with spaces (#6566) Fix ruby 1.9 incompatible case statement Fixed #6566 Replace ftools with filetuils in rake gem task (#6555) Fix another ruby 1.9 incompatible case statement Fixed #6555 - Fixed two more when then colon issues Fixed #6555 - Ruby 1.9.x returning Invalid next (SyntaxError) Fixed #6555 - Ruby 1.9.x warning: class variable access from toplevel (#6658) Propagate ENC connection errors to the agent ...
Diffstat (limited to 'lib/puppet/parameter')
-rw-r--r--lib/puppet/parameter/path.rb42
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/puppet/parameter/path.rb b/lib/puppet/parameter/path.rb
new file mode 100644
index 000000000..44886afd0
--- /dev/null
+++ b/lib/puppet/parameter/path.rb
@@ -0,0 +1,42 @@
+require 'puppet/parameter'
+
+class Puppet::Parameter::Path < Puppet::Parameter
+ def self.accept_arrays(bool = true)
+ @accept_arrays = !!bool
+ end
+ def self.arrays?
+ @accept_arrays
+ end
+
+ def validate_path(paths)
+ if paths.is_a?(Array) and ! self.class.arrays? then
+ fail "#{name} only accepts a single path, not an array of paths"
+ end
+
+ # We *always* support Unix path separators, as Win32 does now too.
+ absolute = "[/#{::Regexp.quote(::File::SEPARATOR)}]"
+ win32 = Puppet.features.microsoft_windows?
+
+ Array(paths).each do |path|
+ next if path =~ %r{^#{absolute}}
+ next if win32 and path =~ %r{^(?:[a-zA-Z]:)?#{absolute}}
+ fail("#{name} must be a fully qualified path")
+ end
+
+ paths
+ end
+
+ # This will be overridden if someone uses the validate option, which is why
+ # it just delegates to the other, useful, method.
+ def unsafe_validate(paths)
+ validate_path(paths)
+ end
+
+ # Likewise, this might be overridden, but by default...
+ def unsafe_munge(paths)
+ if paths.is_a?(Array) and ! self.class.arrays? then
+ fail "#{name} only accepts a single path, not an array of paths"
+ end
+ paths
+ end
+end