diff options
| author | Max Martin <max@puppetlabs.com> | 2011-03-23 14:43:29 -0700 |
|---|---|---|
| committer | Max Martin <max@puppetlabs.com> | 2011-03-23 14:43:29 -0700 |
| commit | 4196699f5fbb90ceecbb709c8502622eaad39062 (patch) | |
| tree | adb06f307051368e9fe9a23c3338fe7511eb8adf /lib/puppet/parameter | |
| parent | 7e71840e29cb09c772668a51ada3cab1e319e50f (diff) | |
| parent | 66d0b16c8a0a55dd79b1b0f0e639f107e552d9ab (diff) | |
| download | puppet-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.rb | 42 |
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 |
