diff options
| author | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-01-18 17:24:15 +0000 |
|---|---|---|
| committer | luke <luke@980ebf18-57e1-0310-9a29-db15c13687c0> | 2006-01-18 17:24:15 +0000 |
| commit | 6bab167dcbb274fd302a65d567d6af0ef6621b79 (patch) | |
| tree | 92093e971bab20400ac8218a5cf1b159e64b5cbb /lib/puppet/parser/ast | |
| parent | ed39be9dd2ecdbe9a8624ed2f6c03334e123e81d (diff) | |
| download | puppet-6bab167dcbb274fd302a65d567d6af0ef6621b79.tar.gz puppet-6bab167dcbb274fd302a65d567d6af0ef6621b79.tar.xz puppet-6bab167dcbb274fd302a65d567d6af0ef6621b79.zip | |
Made lots of small changes, mostly to help usability but also fixed a couple of key bugs
git-svn-id: https://reductivelabs.com/svn/puppet/trunk@841 980ebf18-57e1-0310-9a29-db15c13687c0
Diffstat (limited to 'lib/puppet/parser/ast')
| -rw-r--r-- | lib/puppet/parser/ast/astarray.rb | 3 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/classdef.rb | 2 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/compdef.rb | 4 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/component.rb | 7 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/leaf.rb | 7 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/nodedef.rb | 5 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/objectdef.rb | 52 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/objectref.rb | 20 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/typedefaults.rb | 2 | ||||
| -rw-r--r-- | lib/puppet/parser/ast/vardef.rb | 2 |
10 files changed, 55 insertions, 49 deletions
diff --git a/lib/puppet/parser/ast/astarray.rb b/lib/puppet/parser/ast/astarray.rb index 3a02c58ea..1e7bdb81c 100644 --- a/lib/puppet/parser/ast/astarray.rb +++ b/lib/puppet/parser/ast/astarray.rb @@ -43,7 +43,10 @@ class Puppet::Parser::AST item.safeevaluate(scope) } end + rets = rets.reject { |obj| obj.nil? } + + return rets end def push(*ary) diff --git a/lib/puppet/parser/ast/classdef.rb b/lib/puppet/parser/ast/classdef.rb index b9f1c1c6b..7386b25eb 100644 --- a/lib/puppet/parser/ast/classdef.rb +++ b/lib/puppet/parser/ast/classdef.rb @@ -47,7 +47,7 @@ class Puppet::Parser::AST error = Puppet::ParseError.new(detail) error.line = self.line error.file = self.file - error.stack = caller + error.backtrace = detail.backtrace raise error end end diff --git a/lib/puppet/parser/ast/compdef.rb b/lib/puppet/parser/ast/compdef.rb index ffd0dc0e0..4118c7184 100644 --- a/lib/puppet/parser/ast/compdef.rb +++ b/lib/puppet/parser/ast/compdef.rb @@ -36,7 +36,7 @@ class Puppet::Parser::AST error = Puppet::ParseError.new(detail) error.line = self.line error.file = self.file - error.stack = caller + error.backtrace = detail.backtrace raise error end end @@ -45,7 +45,7 @@ class Puppet::Parser::AST @parentclass = nil super - Puppet.debug "Defining type %s" % @name.value + #Puppet.debug "Defining type %s" % @name.value # we need to both mark that a given argument is valid, # and we need to also store any provided default arguments diff --git a/lib/puppet/parser/ast/component.rb b/lib/puppet/parser/ast/component.rb index f1e6b9648..841977b2f 100644 --- a/lib/puppet/parser/ast/component.rb +++ b/lib/puppet/parser/ast/component.rb @@ -48,8 +48,8 @@ class Puppet::Parser::AST unless hash.include?(arg) if defined? default and ! default.nil? hash[arg] = default - Puppet.debug "Got default %s for %s in %s" % - [default.inspect, arg.inspect, objname.inspect] + #Puppet.debug "Got default %s for %s in %s" % + # [default.inspect, arg.inspect, objname.inspect] else error = Puppet::ParseError.new( "Must pass %s to %s of type %s" % @@ -57,7 +57,6 @@ class Puppet::Parser::AST ) error.line = self.line error.file = self.file - error.stack = caller raise error end end @@ -82,7 +81,7 @@ class Puppet::Parser::AST error = Puppet::ParseError.new(except.message) error.line = self.line error.file = self.file - error.stack = caller + error.backtrace = except.backtrace raise error end } diff --git a/lib/puppet/parser/ast/leaf.rb b/lib/puppet/parser/ast/leaf.rb index 53cefdeb3..d25527864 100644 --- a/lib/puppet/parser/ast/leaf.rb +++ b/lib/puppet/parser/ast/leaf.rb @@ -29,11 +29,8 @@ class Puppet::Parser::AST super unless @value == 'true' or @value == 'false' - error = Puppet::DevError.new( + raise Puppet::DevError, "'%s' is not a boolean" % @value - ) - error.stack = caller - raise error end if @value == 'true' @value = true @@ -80,7 +77,7 @@ class Puppet::Parser::AST error = Puppet::DevError.new(detail) error.line = self.line error.file = self.file - error.stack = caller + error.backtrace = detail.backtrace raise error end end diff --git a/lib/puppet/parser/ast/nodedef.rb b/lib/puppet/parser/ast/nodedef.rb index 1cd0f683e..c0e1ee63e 100644 --- a/lib/puppet/parser/ast/nodedef.rb +++ b/lib/puppet/parser/ast/nodedef.rb @@ -18,8 +18,8 @@ class Puppet::Parser::AST end names.each { |name| - Puppet.debug("defining host '%s' in scope %s" % - [name, scope.object_id]) + #Puppet.debug("defining host '%s' in scope %s" % + # [name, scope.object_id]) arghash = { :name => name, :code => @code @@ -41,7 +41,6 @@ class Puppet::Parser::AST error = Puppet::ParseError.new(detail) error.line = self.line error.file = self.file - error.stack = caller raise error end } diff --git a/lib/puppet/parser/ast/objectdef.rb b/lib/puppet/parser/ast/objectdef.rb index 05be941ac..8999e921d 100644 --- a/lib/puppet/parser/ast/objectdef.rb +++ b/lib/puppet/parser/ast/objectdef.rb @@ -63,25 +63,24 @@ class Puppet::Parser::AST error = Puppet::ParseError.new(detail) error.line = self.line error.file = self.file - error.stack = caller + error.backtrace = detail.backtrace raise error end unless object # If not, verify that it's a builtin type - begin - object = Puppet::Type.type(objtype) - rescue TypeError - # otherwise, the user specified an invalid type - error = Puppet::ParseError.new( - "Invalid type %s" % objtype - ) - error.line = @line - error.file = @file + object = Puppet::Type.type(objtype) + + # Type.type returns nil on object types that aren't found + unless object + error = Puppet::ParseError.new("Invalid type %s" % objtype) + error.line = self.line + error.file = self.file raise error end end + # Autogenerate the name if one was not passed. if defined? @name objnames = @name.safeevaluate(scope) @@ -110,12 +109,12 @@ class Puppet::Parser::AST # If the object is a class, that means it's a builtin type if object.is_a?(Class) begin - Puppet.debug( - ("Setting object '%s' " + - "in scope %s " + - "with arguments %s") % - [objname, scope.object_id, hash.inspect] - ) + #Puppet.debug( + # ("Setting object '%s' " + + # "in scope %s " + + # "with arguments %s") % + # [objname, scope.object_id, hash.inspect] + #) obj = scope.setobject( objtype, objname, @@ -131,14 +130,14 @@ class Puppet::Parser::AST error = Puppet::ParseError.new(detail) error.line = self.line error.file = self.file - error.stack = caller + error.backtrace = detail.backtrace raise error end else # but things like components create a new type; if we find # one of those, evaluate that with our arguments - Puppet.debug("Calling object '%s' with arguments %s" % - [object.name, hash.inspect]) + #Puppet.debug("Calling object '%s' with arguments %s" % + # [object.name, hash.inspect]) object.safeevaluate(scope,hash,objtype,objname) end }.reject { |obj| obj.nil? } @@ -150,8 +149,8 @@ class Puppet::Parser::AST begin defaults = scope.lookupdefaults(objtype) if defaults.length > 0 - Puppet.debug "Got defaults for %s: %s" % - [objtype,defaults.inspect] + #Puppet.debug "Got defaults for %s: %s" % + # [objtype,defaults.inspect] end rescue => detail raise Puppet::DevError, @@ -219,7 +218,6 @@ class Puppet::Parser::AST "Invalid parameter '%s' for type '%s'" % [pname,type.name] ) - error.stack = caller error.line = self.line error.file = self.file raise error @@ -243,7 +241,6 @@ class Puppet::Parser::AST "Invalid parameter '%s' for type '%s'" % [pname,objtype] ) - error.stack = caller error.line = self.line error.file = self.file raise error @@ -277,7 +274,7 @@ class Puppet::Parser::AST error = Puppet::DevError.new( "failed to tree a %s" % self.class ) - error.stack = caller + error.backtrace = detail.backtrace raise error end }.join("\n") @@ -306,13 +303,12 @@ class Puppet::Parser::AST ) error.line = self.line error.file = self.file - error.stack = caller raise error end - unless builtin - Puppet.debug "%s is a defined type" % objtype - end + #unless builtin + # Puppet.debug "%s is a defined type" % objtype + #end self.paramcheck(builtin, objtype) diff --git a/lib/puppet/parser/ast/objectref.rb b/lib/puppet/parser/ast/objectref.rb index e9561d65d..6418c14fb 100644 --- a/lib/puppet/parser/ast/objectref.rb +++ b/lib/puppet/parser/ast/objectref.rb @@ -21,7 +21,7 @@ class Puppet::Parser::AST objnames = [objnames] end - # Verify we can find the object. + # See if we can look the object up in our scope tree. begin object = scope.lookuptype(objtype) rescue Puppet::ParseError => except @@ -32,20 +32,32 @@ class Puppet::Parser::AST error = Puppet::ParseError.new(detail) error.line = self.line error.file = self.file - error.stack = caller + error.backtrace = detail.backtrace + raise error + end + + # If the type isn't defined, verify that it's builtin + unless object or Puppet::Type.type(objtype) + error = Puppet::ParseError.new("Could not find type %s" % + objtype.inspect) + error.line = self.line + error.file = self.file raise error end - Puppet.debug "ObjectRef returned type %s" % object # should we implicitly iterate here? # yes, i believe that we essentially have to... - objnames.collect { |objname| + ret = objnames.collect { |objname| if object.is_a?(AST::Component) objname = "%s[%s]" % [objtype,objname] objtype = "component" end [objtype,objname] }.reject { |obj| obj.nil? } + + # Return a flattened array, since we know that we've created an + # array + return *ret end def tree(indent = 0) diff --git a/lib/puppet/parser/ast/typedefaults.rb b/lib/puppet/parser/ast/typedefaults.rb index 17ef94589..c1f8cce52 100644 --- a/lib/puppet/parser/ast/typedefaults.rb +++ b/lib/puppet/parser/ast/typedefaults.rb @@ -24,7 +24,7 @@ class Puppet::Parser::AST error = Puppet::ParseError.new(detail) error.line = self.line error.file = self.file - error.stack = caller + error.backtrace = detail.backtrace raise error end end diff --git a/lib/puppet/parser/ast/vardef.rb b/lib/puppet/parser/ast/vardef.rb index 6ada75589..52548a42c 100644 --- a/lib/puppet/parser/ast/vardef.rb +++ b/lib/puppet/parser/ast/vardef.rb @@ -19,7 +19,7 @@ class Puppet::Parser::AST error = Puppet::ParseError.new(detail) error.line = self.line error.file = self.file - error.stack = caller + error.backtrace = detail.backtrace raise error end end |
