class LicenseAuto::Bundler
Constants
- LANGUAGE
Public Class Methods
check_cli()
click to toggle source
# File lib/license_auto/package_manager/bundler.rb, line 86 def self.check_cli # TODO check bundle true end
new(path)
click to toggle source
Calls superclass method
LicenseAuto::PackageManager::new
# File lib/license_auto/package_manager/bundler.rb, line 11 def initialize(path) super(path) end
Public Instance Methods
dependency_file_pattern()
click to toggle source
# File lib/license_auto/package_manager/bundler.rb, line 15 def dependency_file_pattern /#{@path}\/[0-9a-zA-Z_.]*gem.*\.lock$/i end
gemfile_pattern()
click to toggle source
# File lib/license_auto/package_manager/bundler.rb, line 19 def gemfile_pattern /#{@path}\/[0-9a-zA-Z_.]*gemfile$/i end
parse_dependencies()
click to toggle source
# File lib/license_auto/package_manager/bundler.rb, line 23 def parse_dependencies # gemfiles = dependency_file_path_names(pattern=gemfile_pattern) # definition = ::Bundler::Definition.build(gemfiles.first, nil, nil) # definition.dependencies.each {|dep| # LicenseAuto.logger.debug(dep.name + ' ' + dep.source.remotes.to_s) # } lock_files = dependency_file_path_names if lock_files.empty? LicenseAuto.logger.info("#{LANGUAGE}: #{dependency_file_pattern} file not exist") gem_files = dependency_file_path_names(pattern=gemfile_pattern) # TODO: parse gem_files unless gem_files.empty? LicenseAuto.logger.warn("#{LANGUAGE}: Gemfile exisit: #{gem_files}") end return [] else lock_files.map {|dep_file| LicenseAuto.logger.debug(dep_file) lockfile_parser = ::Bundler::LockfileParser.new(::Bundler.read_file(dep_file)) { dep_file: dep_file, deps: lockfile_parser.specs.map {|spec| remote = case when spec.source.class == ::Bundler::Source::Git spec.source.uri when spec.source.class == ::Bundler::Source::Rubygems if spec.source.remotes.size == 1 spec.source.remotes.first.to_s elsif spec.source.remotes.size >= 1 # remotes = # if Gems.info(spec.name) == RubyGemsOrg::GEM_NOT_FOUND # spec.source.remotes.reject {|uri| # uri.to_s == RubyGemsOrg::URI # } # else # spec.source.remotes # end # TODO: support http://www.gemfury.com, aka multi `source` DSL; requre 'rubygems'? spec.source.remotes.map {|r| r.to_s }.join(',') end when spec.source.class == ::Bundler::Source::Path::Installer # Untested spec.full_gem_path else raise('Yo, this error should ever not occur!') end { name: spec.name, version: spec.version.to_s, remote: remote } } } } end # LicenseAuto.logger.debug(JSON.pretty_generate(dep_files)) end