def run
begin
if is_module_package?(@name)
@source = :filesystem
@filename = File.expand_path(@name)
raise MissingPackageError, :requested_package => @filename unless File.exist?(@filename)
parsed = parse_filename(@filename)
@module_name = parsed[:module_name]
@version = parsed[:version]
else
@source = :repository
@module_name = @name.gsub('/', '-')
@version = options[:version]
end
results = {
:module_name => @module_name,
:module_version => @version,
:install_dir => options[:target_dir],
}
@install_dir.prepare(@module_name, @version || 'latest')
cached_paths = get_release_packages
unless @graph.empty?
Puppet.notice 'Installing -- do not interrupt ...'
cached_paths.each do |hash|
hash.each do |dir, path|
Unpacker.new(path, @options.merge(:target_dir => dir)).run
end
end
end
rescue ModuleToolError, ForgeError => err
results[:error] = {
:oneline => err.message,
:multiline => err.multiline,
}
else
results[:result] = :success
results[:installed_modules] = @graph
ensure
results[:result] ||= :failure
end
results
end