[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