[DRE-commits] [librarian-puppet] 42/97: Consider Puppetfile recursively in git source

Stig Sandbeck Mathisen ssm at debian.org
Tue Mar 11 12:12:49 UTC 2014


This is an automated email from the git hooks/post-receive script.

ssm pushed a commit to branch master
in repository librarian-puppet.

commit 7447e2d3f47ef3dedb273ce9b710f923362a0ca4
Author: Reto Kaiser <reto at cargomedia.ch>
Date:   Sun Dec 29 21:38:40 2013 +0100

    Consider Puppetfile recursively in git source
---
 Changelog.md                       |  1 +
 README.md                          |  5 +++++
 lib/librarian/puppet/source/git.rb | 45 ++++++++++++++++++++++++--------------
 3 files changed, 34 insertions(+), 17 deletions(-)

diff --git a/Changelog.md b/Changelog.md
index 0adda1b..5ee472f 100644
--- a/Changelog.md
+++ b/Changelog.md
@@ -13,6 +13,7 @@
  * Add a User-Agent header to all requests to the GitHub API
  * Convert puppet version requirements to rubygems, pessimistic and ranges
  * Use librarian gem
+ * Consider Puppetfile-dependencies recursively in git-source
 
 ### 0.9.10
 
diff --git a/README.md b/README.md
index bc2b32e..a429086 100644
--- a/README.md
+++ b/README.md
@@ -49,6 +49,11 @@ This Puppetfile will download all the dependencies listed in your Modulefile fro
 *See [jenkins-appliance](https://github.com/aussielunix/jenkins-appliance) for
 a puppet repo already setup to use librarian-puppet.*
 
+### Recursive module dependency resolving
+
+When fetching a module from a `:git`-source all dependencies specified in its
+`Modulefile` and `Puppetfile` will be resolved and installed.
+
 ### Puppetfile Breakdown
 
     forge "http://forge.puppetlabs.com"
diff --git a/lib/librarian/puppet/source/git.rb b/lib/librarian/puppet/source/git.rb
index 607f38d..07b0b20 100644
--- a/lib/librarian/puppet/source/git.rb
+++ b/lib/librarian/puppet/source/git.rb
@@ -67,10 +67,27 @@ module Librarian
         end
 
         def fetch_dependencies(name, version, extra)
-          dependencies.map do |k, v|
-            v = Requirement.new(v).gem_requirement
-            Dependency.new(k, v, forge_source)
+          dependencies = []
+
+          if modulefile?
+            metadata = ::Puppet::ModuleTool::Metadata.new
+
+            ::Puppet::ModuleTool::ModulefileReader.evaluate(metadata, modulefile)
+
+            metadata.dependencies.each do |dependency|
+              name = dependency.instance_variable_get(:@full_module_name)
+              version = dependency.instance_variable_get(:@version_requirement)
+              gem_requirement = Requirement.new(version).gem_requirement
+              dependencies.push Dependency.new(name, gem_requirement, forge_source)
+            end
+          end
+
+          if specfile?
+            spec = environment.dsl(Pathname(specfile))
+            dependencies.concat spec.dependencies
           end
+
+          dependencies
         end
 
         def forge_source
@@ -89,20 +106,6 @@ module Librarian
           metadata.version
         end
 
-        def dependencies
-          return {} unless modulefile?
-
-          metadata = ::Puppet::ModuleTool::Metadata.new
-
-          ::Puppet::ModuleTool::ModulefileReader.evaluate(metadata, modulefile)
-
-          metadata.dependencies.inject({}) do |h, dependency|
-            name = dependency.instance_variable_get(:@full_module_name)
-            version = dependency.instance_variable_get(:@version_requirement)
-            h.update(name => version)
-          end
-        end
-
         def modulefile
           File.join(filesystem_path, 'Modulefile')
         end
@@ -111,6 +114,14 @@ module Librarian
           File.exists?(modulefile)
         end
 
+        def specfile
+          File.join(filesystem_path, environment.specfile_name)
+        end
+
+        def specfile?
+          File.exists?(specfile)
+        end
+
       end
     end
   end

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-ruby-extras/librarian-puppet.git



More information about the Pkg-ruby-extras-commits mailing list