summaryrefslogtreecommitdiffstats
path: root/lib/puppet
diff options
context:
space:
mode:
Diffstat (limited to 'lib/puppet')
-rw-r--r--lib/puppet/provider/augeas/augeas.rb10
1 files changed, 8 insertions, 2 deletions
diff --git a/lib/puppet/provider/augeas/augeas.rb b/lib/puppet/provider/augeas/augeas.rb
index 0f1503a2f..dde676c39 100644
--- a/lib/puppet/provider/augeas/augeas.rb
+++ b/lib/puppet/provider/augeas/augeas.rb
@@ -82,18 +82,24 @@ Puppet::Type.type(:augeas).provide(:augeas) do
if f == :path
start = sc.pos
nbracket = 0
+ inSingleTick = false
+ inDoubleTick = false
begin
- sc.skip(/([^\]\[\s\\]|\\.)+/)
+ sc.skip(/([^\]\[\s\\'"]|\\.)+/)
ch = sc.getch
nbracket += 1 if ch == "["
nbracket -= 1 if ch == "]"
+ inSingleTick = !inSingleTick if ch == "'"
+ inDoubleTick = !inDoubleTick if ch == "\""
fail("unmatched [") if nbracket < 0
- end until nbracket == 0 && (sc.eos? || ch =~ /\s/)
+ end until ((nbracket == 0 && !inSingleTick && !inDoubleTick && (ch =~ /\s/)) || sc.eos?)
len = sc.pos - start
len -= 1 unless sc.eos?
unless p = sc.string[start, len]
fail("missing path argument #{narg} for #{cmd}")
end
+ # Rip off any ticks if they are there.
+ p = p[1, (p.size - 2)] if p[0,1] == "'" || p[0,1] == "\""
p.chomp!("/")
if p[0,1] != "$" && p[0,1] != "/"
argline << context + p