class LicenseAuto::Repo

Public Class Methods

new(hash) click to toggle source

hash example:

{
    "clone_url": "https://github.com/mineworks/license_auto.git",
    "ref": "readme",
    "access_token": "40 chars token"
}
Calls superclass method
# File lib/license_auto/repo.rb, line 19
def initialize(hash)
  super(hash)
  @server = chose_repo_server
  raise("#{hash} is not a Github Repo") unless @server
  @repo_dir = nil
end
package_managers() click to toggle source
# File lib/license_auto/repo.rb, line 26
def self.package_managers
  [
      Bundler,
      Npm,
      Golang,
      Gradle,
      Maven
  ]
end

Public Instance Methods

find_dependencies() click to toggle source

@return: {

"LicenseAuto::Bundler": [
    {
        "dep_file": "/tmp/license_auto/cache/github.com/mineworks/license_auto.git/Gemfile.lock",
        "deps": [
            {
                "name": "addressable",
                "version": "2.4.0",
                "remote": "https://rubygems.org/"
            },
            {
                "name": "anemone",
                "version": "0.7.2",
                "remote": "https://rubygems.org/"
            },
            {
                "name": "ast",
                "version": "2.2.0",
                "remote": "https://rubygems.org/"
            }
        ]
    }
],
"LicenseAuto::Npm": [
    {
        "dep_file": "/tmp/license_auto/cache/github.com/mineworks/license_auto.git/package.json",
        "deps": [
            {
                "name": "bower",
                "version": "v1.7.9",
                "remote": "https://github.com/bower/bower.git"
            },
            {
                "name": "lodash.isarguments",
                "version": "3.0.8",
                "remote": "http://registry.npmjs.org/"
            },
            {
                "name": "lodash.isarray",
                "version": "3.0.4",
                "remote": "http://registry.npmjs.org/"
            }
        ]
    }
]

}

# File lib/license_auto/repo.rb, line 83
def find_dependencies
  @repo_dir = @server.clone
  deps = {}
  Repo.package_managers.each {|pm|
    # LicenseAuto.logger.debug(pm)
    items = pm.new(@repo_dir).parse_dependencies
    unless items.empty?
      deps[pm.to_s] = items
    end
  }
  LicenseAuto.logger.debug(JSON.pretty_generate(deps))
  deps
end
find_git_modules() click to toggle source

@return Array

# File lib/license_auto/repo.rb, line 100
def find_git_modules
  if FileTest.directory?(@repo_dir)
    pm = LicenseAuto::GitModule.new(@repo_dir)
    pm.parse_dependencies
  else
    error = "Cloned repo_dir is nil"
    LicenseAuto.logger.error(error)
    nil
  end
end

Private Instance Methods

chose_repo_server() click to toggle source

def get_ref()

@server.get_ref(self.ref)

end

# File lib/license_auto/repo.rb, line 117
def chose_repo_server
  source_code_matcher = LicenseAuto::Matcher::SourceURL.new(clone_url)
  github_matched = source_code_matcher.match_github_resource
  if github_matched
    # TODO: pass argument: ref

    @server = GithubCom.new({}, github_matched[:owner], github_matched[:repo], ref=self.ref)
  end
end