lib/gjp/get_source.rb in gjp-0.6.0 vs lib/gjp/get_source.rb in gjp-0.7.0

- old
+ new

@@ -1,81 +1,85 @@ # encoding: UTF-8 require "rest_client" -# implements the get-source subcommand -class SourceGetter +module Gjp + # implements the get-source subcommand + class SourceGetter + def self.log + Gjp.logger + end - # downloads a project's source into a specified directory - def self.get_source(address, pomfile, directory) - $log.info("downloading: #{address} in #{directory}, pomfile: #{pomfile}") - - dummy, prefix, scm_address = address.split(/^([^:]+):(.*)$/) - $log.info("prefix: #{prefix}, scm_address: #{scm_address}") - - get_source_from_scm(prefix, scm_address, pomfile, directory) - end + # downloads a project's source into a specified directory + def self.get_source(address, pomfile, directory) + log.info("downloading: #{address} in #{directory}, pomfile: #{pomfile}") + + dummy, prefix, scm_address = address.split(/^([^:]+):(.*)$/) + log.info("prefix: #{prefix}, scm_address: #{scm_address}") + + get_source_from_scm(prefix, scm_address, pomfile, directory) + end - # checks code out from an scm - def self.get_source_from_scm(prefix, scm_address, pomfile, directory) - pom = Pom.new(pomfile) - dir = File.join(directory, "#{pom.group_id}:#{pom.artifact_id}:#{pom.version}") - begin - Dir::mkdir(dir) - rescue Errno::EEXIST - $log.warn("Source directory exists, leaving...") - end - - if prefix == "git" - get_source_from_git(scm_address, dir, pom.version) - elsif prefix == "svn" - get_source_from_svn(scm_address, dir, pom.version) - end - end + # checks code out from an scm + def self.get_source_from_scm(prefix, scm_address, pomfile, directory) + pom = Pom.new(pomfile) + dir = File.join(directory, "#{pom.group_id}:#{pom.artifact_id}:#{pom.version}") + begin + Dir::mkdir(dir) + rescue Errno::EEXIST + log.warn("Source directory exists, leaving...") + end + + if prefix == "git" + get_source_from_git(scm_address, dir, pom.version) + elsif prefix == "svn" + get_source_from_svn(scm_address, dir, pom.version) + end + end - # checks code out of git - def self.get_source_from_git(scm_address, dir, version) - `git clone #{scm_address} #{dir}` - - Dir.chdir(dir) do - tags = `git tag`.split("\n") - - if tags.any? - best_tag = get_best_tag(tags, version) - $log.info("checking out tag: #{best_tag}") + # checks code out of git + def self.get_source_from_git(scm_address, dir, version) + `git clone #{scm_address} #{dir}` + + Dir.chdir(dir) do + tags = `git tag`.split("\n") + + if tags.any? + best_tag = get_best_tag(tags, version) + log.info("checking out tag: #{best_tag}") - `git checkout #{best_tag}` - end - end - end + `git checkout #{best_tag}` + end + end + end - # checks code out of svn - def self.get_source_from_svn(scm_address, dir, version) - `svn checkout #{scm_address} #{dir}` - - Dir.chdir(dir) do - tags = `svn ls "^/tags"`.split("\n") - - if tags.any? - best_tag = get_best_tag(tags, version) - $log.info("checking out tag: #{best_tag}") + # checks code out of svn + def self.get_source_from_svn(scm_address, dir, version) + `svn checkout #{scm_address} #{dir}` + + Dir.chdir(dir) do + tags = `svn ls "^/tags"`.split("\n") + + if tags.any? + best_tag = get_best_tag(tags, version) + log.info("checking out tag: #{best_tag}") - `svn checkout #{scm_address}/tags/#{best_tag}` - end - end - end + `svn checkout #{scm_address}/tags/#{best_tag}` + end + end + end - # return the (heuristically) most similar tag to the specified version - def self.get_best_tag(tags, version) - versions_to_tags =Hash[ - *tags.map do |tag| - [VersionMatcher.split_version(tag)[1], tag] - end.flatten - ] - - $log.info("found the following versions and tags: #{versions_to_tags}") + # return the (heuristically) most similar tag to the specified version + def self.get_best_tag(tags, version) + versions_to_tags =Hash[ + *tags.map do |tag| + [VersionMatcher.split_version(tag)[1], tag] + end.flatten + ] + + log.info("found the following versions and tags: #{versions_to_tags}") - best_version = VersionMatcher.best_match(version, versions_to_tags.keys) - versions_to_tags[best_version] - end + best_version = VersionMatcher.best_match(version, versions_to_tags.keys) + versions_to_tags[best_version] + end + end end -