Class: LicenseAuto::Repo

Inherits:
Hashie::Mash
  • Object
show all
Defined in:
lib/license_auto/repo.rb

Class Method Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(hash) ⇒ Repo

hash example:

{
    "clone_url": "https://github.com/mineworks/license_auto.git",
    "ref": "readme",
    "access_token": "40 chars token"
}


19
20
21
22
23
24
# 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

Class Method Details

.package_managersObject



26
27
28
29
30
31
32
33
34
# File 'lib/license_auto/repo.rb', line 26

def self.package_managers
  [
      Bundler,
      Npm,
      Golang,
      Gradle,
      Maven
  ]
end

Instance Method Details

#find_dependenciesObject

@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/"
            }
        ]
    }
]

}



83
84
85
86
87
88
89
90
91
92
93
94
95
# 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_modulesObject

Returns Array.

Returns:

  • Array



100
101
102
103
104
105
106
107
108
109
# 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