diff options
| author | Max Martin <max@puppetlabs.com> | 2011-03-30 13:00:56 -0700 |
|---|---|---|
| committer | Max Martin <max@puppetlabs.com> | 2011-03-30 13:00:56 -0700 |
| commit | 9d17809e5b240aa80d2c30f4d9625d4812802b8f (patch) | |
| tree | f2c9101dbf36c9fcbf51454c9baca9a7d92cb667 /lib/puppet/parameter | |
| parent | 76b3ee6822f52b100c45cd8921f13739f12ddf38 (diff) | |
| parent | f5170fc2dbcbb4202b9b08e8944aa35f7a7bf7b8 (diff) | |
Merge branch '2.6.next' into 2.6.x
* 2.6.next: (23 commits)
(#5908) Add support for new update-rc.d disable API
(#6862) Add a default subject for the mail_patches rake task
Fixed #6256 - Creation of rrd directory.
(#5477) Allow watch_file to watch non-existent files, especially site.pp
(#5221) Add test for fix to fileset with trailing separator
(#5221) Fix fileset path absoluteness checking with trailing slash
(#4769) Fix negative timeout support for newer rubies
Fixed #6562 - Minor kick documentation fix
(#6658) Propagate ENC connection errors to the agent
(#4884) Remove typo from spec test
(#4884) Modify tests to pass on non-OS X systems
(#4884) Revise new exec tests, add a few more
(4576) - if ENC declares invalid class, it is logged at warning.
(#4884) Add an shell provider for execs
(#4884) Fix Test::Unit exec tests
(#4884) Break the exec type out to have a posix provider
(#4884) Add consistent path validation and behavior
(#4884) Add expand_path to requiring the spec_helper
(#4884) Autorequire shared behaviors and method to silence warnings
(#4884) Fix whitespace
...
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 |
