license_auto 0.1.1.2 → 0.1.1.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/.gitmodules +3 -0
- data/.travis.yml +9 -2
- data/README.md +10 -8
- data/lib/license_auto/exceptions.rb +10 -0
- data/lib/license_auto/license/frequency.rb +1 -1
- data/lib/license_auto/license/readme.rb +21 -2
- data/lib/license_auto/license/similarity.rb +4 -3
- data/lib/license_auto/license_info_wrapper.rb +16 -0
- data/lib/license_auto/matcher.rb +14 -4
- data/lib/license_auto/package.rb +29 -15
- data/lib/license_auto/package_manager.rb +6 -2
- data/lib/license_auto/package_manager/bundler.rb +10 -6
- data/lib/license_auto/package_manager/gemfury.rb +2 -0
- data/lib/license_auto/package_manager/git_module.rb +73 -0
- data/lib/license_auto/package_manager/golang.rb +155 -0
- data/lib/license_auto/package_manager/gradle.rb +145 -0
- data/lib/license_auto/package_manager/maven.rb +133 -0
- data/lib/license_auto/package_manager/npm.rb +117 -1
- data/lib/license_auto/package_manager/pip.rb +8 -2
- data/lib/license_auto/repo.rb +51 -3
- data/lib/license_auto/source_code_server.rb +13 -0
- data/lib/license_auto/var/golang_std_libs.rb +160 -0
- data/lib/license_auto/version.rb +1 -1
- data/lib/license_auto/website.rb +1 -0
- data/lib/license_auto/website/cocoapods_org.rb +10 -0
- data/lib/license_auto/website/github_com.rb +43 -18
- data/lib/license_auto/website/homepage_spider.rb +56 -0
- data/lib/license_auto/website/maven_central_repository.rb +258 -0
- data/lib/license_auto/website/npm_registry.rb +178 -0
- data/lib/license_auto/website/ruby_gems_org.rb +119 -8
- data/license_auto.gemspec +1 -0
- data/package.json +30 -0
- metadata +25 -40
- data/lib/license_auto/package_manager/golang_stdlibs.rb +0 -161
- data/remove/api.rb +0 -60
- data/remove/api/bitbucket.rb +0 -142
- data/remove/api/code_google_com.rb +0 -66
- data/remove/api/excel_export.rb +0 -189
- data/remove/api/gem_data.rb +0 -30
- data/remove/api/git_kernel_org.rb +0 -59
- data/remove/api/github.rb +0 -376
- data/remove/api/go_pkg_in.rb +0 -41
- data/remove/api/golang_org.rb +0 -63
- data/remove/api/google_source_com.rb +0 -68
- data/remove/api/gradle2.rb +0 -41
- data/remove/api/helper.rb +0 -26
- data/remove/api/j_center.rb +0 -23
- data/remove/api/maven_central_repository.rb +0 -192
- data/remove/api/mq.rb +0 -30
- data/remove/api/npm_registry.rb +0 -169
- data/remove/api/pattern.rb +0 -33
- data/remove/api/remote_source_package.rb +0 -319
- data/remove/api/spider.rb +0 -47
- data/remove/cloner.rb +0 -154
- data/remove/db.rb +0 -267
- data/remove/license_auto +0 -4
- data/remove/misc.rb +0 -131
- data/remove/mq_pack.rb +0 -219
- data/remove/mq_repo.rb +0 -106
- data/remove/parser/gemfile_parser.rb +0 -221
- data/remove/parser/golang_parser.rb +0 -104
- data/remove/parser/gradle_parser.rb +0 -141
- data/remove/parser/manifest_parser.rb +0 -66
- data/remove/parser/maven_parser.rb +0 -91
- data/remove/parser/npm_parser.rb +0 -82
- data/remove/parser/pip_parser.rb +0 -1
- data/remove/parser/rebar_parser.rb +0 -61
- data/remove/recorder.rb +0 -184
- data/remove/script/apt-get.deps.sh +0 -37
- data/remove/script/debian_dpkg_list.sh +0 -2
- data/remove/script/rubygems.org.importdb.sh +0 -22
@@ -1,2 +1,118 @@
|
|
1
|
-
|
1
|
+
require 'open3'
|
2
|
+
require 'bundler'
|
3
|
+
require 'license_auto/package_manager'
|
4
|
+
require 'license_auto/website/npm_registry'
|
5
|
+
|
6
|
+
module LicenseAuto
|
7
|
+
class Npm < LicenseAuto::PackageManager
|
8
|
+
|
9
|
+
LANGUAGE = 'NodeJS'
|
10
|
+
|
11
|
+
def initialize(path)
|
12
|
+
super(path)
|
13
|
+
end
|
14
|
+
|
15
|
+
def dependency_file_pattern
|
16
|
+
/#{@path}\/(src\/|source\/)?package\.json$/
|
17
|
+
end
|
18
|
+
|
19
|
+
def parse_dependencies
|
20
|
+
|
21
|
+
package_json_files = dependency_file_path_names
|
22
|
+
if package_json_files.empty?
|
23
|
+
LicenseAuto.logger.info("#{LANGUAGE}: #{dependency_file_pattern} file not exist")
|
24
|
+
return []
|
25
|
+
else
|
26
|
+
package_json_files.map {|dep_file|
|
27
|
+
LicenseAuto.logger.debug(dep_file)
|
28
|
+
npm_definition = Hashie::Mash.new(JSON.parse(File.read(dep_file)))
|
29
|
+
|
30
|
+
{
|
31
|
+
dep_file: dep_file,
|
32
|
+
deps: [npm_definition.dependencies, npm_definition.devDependencies].compact.map {|hash|
|
33
|
+
hash.map {|pack_name, semver|
|
34
|
+
available_version, remote =
|
35
|
+
if semver =~ /^file:/
|
36
|
+
# DOC: https://docs.npmjs.com/files/package.json#local-paths
|
37
|
+
['local-path', semver]
|
38
|
+
elsif LicenseAuto::Npm.is_valid_semver?(semver)
|
39
|
+
pack = Hashie::Mash.new(
|
40
|
+
"language": "NodeJS",
|
41
|
+
"name": pack_name,
|
42
|
+
"group": "",
|
43
|
+
"version": semver,
|
44
|
+
"server": "registry.npmjs.org"
|
45
|
+
)
|
46
|
+
npm_registry = LicenseAuto::NpmRegistry.new(pack)
|
47
|
+
version = npm_registry.chose_latest_available_version(semver)
|
48
|
+
[version, npm_registry.registry]
|
49
|
+
else
|
50
|
+
# DOC: https://docs.npmjs.com/files/package.json#git-urls-as-dependencies
|
51
|
+
git_url = semver.gsub(/^git\+/, '')
|
52
|
+
matcher = LicenseAuto::Matcher::SourceURL.new(git_url)
|
53
|
+
github_matched = matcher.match_github_resource
|
54
|
+
if github_matched
|
55
|
+
# TODO: ref=github_matched[:ref]
|
56
|
+
github = GithubCom.new({}, github_matched[:owner], github_matched[:repo])
|
57
|
+
version = github.list_tags.first.name
|
58
|
+
LicenseAuto.logger.debug(version)
|
59
|
+
[version, git_url]
|
60
|
+
end
|
61
|
+
end
|
62
|
+
{
|
63
|
+
name: pack_name,
|
64
|
+
version: available_version,
|
65
|
+
remote: remote
|
66
|
+
}
|
67
|
+
}
|
68
|
+
}.flatten
|
69
|
+
}
|
70
|
+
}
|
71
|
+
end
|
72
|
+
# LicenseAuto.logger.debug(JSON.pretty_generate(dep_files))
|
73
|
+
end
|
74
|
+
|
75
|
+
# semver: {String}
|
76
|
+
def self.is_valid_semver?(semver)
|
77
|
+
node_cmd = "node -e \"var semver = require('semver'); var valid = semver.validRange('#{semver}'); console.log(valid)\""
|
78
|
+
# LicenseAuto.logger.debug(node_cmd)
|
79
|
+
stdout_str, _stderr_str, _status = Open3.capture3(node_cmd)
|
80
|
+
is_invalid = stdout_str.gsub(/\n/, '') == 'null'
|
81
|
+
# if is_invalid
|
82
|
+
# LicenseAuto.logger.error("semver: #{semver} is not a valid sem-version")
|
83
|
+
# else
|
84
|
+
# LicenseAuto.logger.debug("semver: #{semver} is valid")
|
85
|
+
# end
|
86
|
+
not is_invalid
|
87
|
+
end
|
88
|
+
|
89
|
+
# TODO: move
|
90
|
+
def self.check_cli
|
91
|
+
bash_cmd = "node -v"
|
92
|
+
LicenseAuto.logger.debug(bash_cmd)
|
93
|
+
stdout_str, stderr_str, status = Open3.capture3(bash_cmd)
|
94
|
+
node_version = /v5\.\d+\.\d+/
|
95
|
+
if not stderr_str.empty?
|
96
|
+
LicenseAuto.logger.error(stderr_str)
|
97
|
+
return false
|
98
|
+
elsif not stdout_str =~ node_version
|
99
|
+
error = "NodeJS version: #{stdout_str} not satisfied: #{node_version}"
|
100
|
+
LicenseAuto.logger.error(error)
|
101
|
+
return false
|
102
|
+
end
|
103
|
+
|
104
|
+
bash_cmd = "node -e \"const semver = require('semver');\" -r semver"
|
105
|
+
LicenseAuto.logger.debug(bash_cmd)
|
106
|
+
stdout_str, stderr_str, status = Open3.capture3(bash_cmd)
|
107
|
+
unless stderr_str.empty?
|
108
|
+
LicenseAuto.logger.error(stderr_str)
|
109
|
+
LicenseAuto.logger.info(
|
110
|
+
"\nInstall npm packages first using:\n
|
111
|
+
$ npm install\n")
|
112
|
+
return false
|
113
|
+
end
|
114
|
+
|
115
|
+
return true
|
116
|
+
end
|
117
|
+
end
|
2
118
|
end
|
data/lib/license_auto/repo.rb
CHANGED
@@ -1,6 +1,11 @@
|
|
1
1
|
require 'hashie/mash'
|
2
2
|
require 'license_auto/website/github_com'
|
3
3
|
require 'license_auto/package_manager/bundler'
|
4
|
+
require 'license_auto/package_manager/npm'
|
5
|
+
require 'license_auto/package_manager/golang'
|
6
|
+
require 'license_auto/package_manager/gradle'
|
7
|
+
require 'license_auto/package_manager/maven'
|
8
|
+
require 'license_auto/package_manager/git_module'
|
4
9
|
|
5
10
|
module LicenseAuto
|
6
11
|
class Repo < Hashie::Mash
|
@@ -15,10 +20,17 @@ module LicenseAuto
|
|
15
20
|
super(hash)
|
16
21
|
@server = chose_repo_server
|
17
22
|
raise("#{hash} is not a Github Repo") unless @server
|
23
|
+
@repo_dir = nil
|
18
24
|
end
|
19
25
|
|
20
26
|
def self.package_managers
|
21
|
-
[
|
27
|
+
[
|
28
|
+
Bundler,
|
29
|
+
Npm,
|
30
|
+
Golang,
|
31
|
+
Gradle,
|
32
|
+
Maven
|
33
|
+
]
|
22
34
|
end
|
23
35
|
|
24
36
|
# @return:
|
@@ -44,14 +56,36 @@ module LicenseAuto
|
|
44
56
|
# }
|
45
57
|
# ]
|
46
58
|
# }
|
59
|
+
# ],
|
60
|
+
# "LicenseAuto::Npm": [
|
61
|
+
# {
|
62
|
+
# "dep_file": "/tmp/license_auto/cache/github.com/mineworks/license_auto.git/package.json",
|
63
|
+
# "deps": [
|
64
|
+
# {
|
65
|
+
# "name": "bower",
|
66
|
+
# "version": "v1.7.9",
|
67
|
+
# "remote": "https://github.com/bower/bower.git"
|
68
|
+
# },
|
69
|
+
# {
|
70
|
+
# "name": "lodash.isarguments",
|
71
|
+
# "version": "3.0.8",
|
72
|
+
# "remote": "http://registry.npmjs.org/"
|
73
|
+
# },
|
74
|
+
# {
|
75
|
+
# "name": "lodash.isarray",
|
76
|
+
# "version": "3.0.4",
|
77
|
+
# "remote": "http://registry.npmjs.org/"
|
78
|
+
# }
|
79
|
+
# ]
|
80
|
+
# }
|
47
81
|
# ]
|
48
82
|
# }
|
49
83
|
def find_dependencies
|
50
|
-
repo_dir = @server.clone
|
84
|
+
@repo_dir = @server.clone
|
51
85
|
deps = {}
|
52
86
|
Repo.package_managers.each {|pm|
|
53
87
|
# LicenseAuto.logger.debug(pm)
|
54
|
-
items = pm.new(repo_dir).parse_dependencies
|
88
|
+
items = pm.new(@repo_dir).parse_dependencies
|
55
89
|
unless items.empty?
|
56
90
|
deps[pm.to_s] = items
|
57
91
|
end
|
@@ -60,6 +94,20 @@ module LicenseAuto
|
|
60
94
|
deps
|
61
95
|
end
|
62
96
|
|
97
|
+
|
98
|
+
# @return Array
|
99
|
+
#
|
100
|
+
def find_git_modules
|
101
|
+
if FileTest.directory?(@repo_dir)
|
102
|
+
pm = LicenseAuto::GitModule.new(@repo_dir)
|
103
|
+
pm.parse_dependencies
|
104
|
+
else
|
105
|
+
error = "Cloned repo_dir is nil"
|
106
|
+
LicenseAuto.logger.error(error)
|
107
|
+
nil
|
108
|
+
end
|
109
|
+
end
|
110
|
+
|
63
111
|
# def get_ref()
|
64
112
|
# @server.get_ref(self.ref)
|
65
113
|
# end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module LicenseAuto
|
2
|
+
class SourceCodeServer
|
3
|
+
def initialize(source_code_uri)
|
4
|
+
@source_code_uri = source_code_uri
|
5
|
+
@website = match_website(source_code_uri)
|
6
|
+
end
|
7
|
+
|
8
|
+
# @Return a subclass of LicenseAuto::Website
|
9
|
+
def match_website(source_code_uri)
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,160 @@
|
|
1
|
+
##
|
2
|
+
# go version go1.6 darwin/amd64
|
3
|
+
# $ go list std
|
4
|
+
# Doc:
|
5
|
+
# * https://golang.org/src/cmd/go/list.go
|
6
|
+
# * http://pmcgrath.net/how-to-get-golang-package-import-list/
|
7
|
+
|
8
|
+
GOLANG_STD_LIBS = [
|
9
|
+
'archive/tar',
|
10
|
+
'archive/zip',
|
11
|
+
'bufio',
|
12
|
+
'bytes',
|
13
|
+
'compress/bzip2',
|
14
|
+
'compress/flate',
|
15
|
+
'compress/gzip',
|
16
|
+
'compress/lzw',
|
17
|
+
'compress/zlib',
|
18
|
+
'container/heap',
|
19
|
+
'container/list',
|
20
|
+
'container/ring',
|
21
|
+
'crypto',
|
22
|
+
'crypto/aes',
|
23
|
+
'crypto/cipher',
|
24
|
+
'crypto/des',
|
25
|
+
'crypto/dsa',
|
26
|
+
'crypto/ecdsa',
|
27
|
+
'crypto/elliptic',
|
28
|
+
'crypto/hmac',
|
29
|
+
'crypto/md5',
|
30
|
+
'crypto/rand',
|
31
|
+
'crypto/rc4',
|
32
|
+
'crypto/rsa',
|
33
|
+
'crypto/sha1',
|
34
|
+
'crypto/sha256',
|
35
|
+
'crypto/sha512',
|
36
|
+
'crypto/subtle',
|
37
|
+
'crypto/tls',
|
38
|
+
'crypto/x509',
|
39
|
+
'crypto/x509/pkix',
|
40
|
+
'database/sql',
|
41
|
+
'database/sql/driver',
|
42
|
+
'debug/dwarf',
|
43
|
+
'debug/elf',
|
44
|
+
'debug/gosym',
|
45
|
+
'debug/macho',
|
46
|
+
'debug/pe',
|
47
|
+
'debug/plan9obj',
|
48
|
+
'encoding',
|
49
|
+
'encoding/ascii85',
|
50
|
+
'encoding/asn1',
|
51
|
+
'encoding/base32',
|
52
|
+
'encoding/base64',
|
53
|
+
'encoding/binary',
|
54
|
+
'encoding/csv',
|
55
|
+
'encoding/gob',
|
56
|
+
'encoding/hex',
|
57
|
+
'encoding/json',
|
58
|
+
'encoding/pem',
|
59
|
+
'encoding/xml',
|
60
|
+
'errors',
|
61
|
+
'expvar',
|
62
|
+
'flag',
|
63
|
+
'fmt',
|
64
|
+
'go/ast',
|
65
|
+
'go/build',
|
66
|
+
'go/constant',
|
67
|
+
'go/doc',
|
68
|
+
'go/format',
|
69
|
+
'go/importer',
|
70
|
+
'go/internal/gccgoimporter',
|
71
|
+
'go/internal/gcimporter',
|
72
|
+
'go/parser',
|
73
|
+
'go/printer',
|
74
|
+
'go/scanner',
|
75
|
+
'go/token',
|
76
|
+
'go/types',
|
77
|
+
'hash',
|
78
|
+
'hash/adler32',
|
79
|
+
'hash/crc32',
|
80
|
+
'hash/crc64',
|
81
|
+
'hash/fnv',
|
82
|
+
'html',
|
83
|
+
'html/template',
|
84
|
+
'image',
|
85
|
+
'image/color',
|
86
|
+
'image/color/palette',
|
87
|
+
'image/draw',
|
88
|
+
'image/gif',
|
89
|
+
'image/internal/imageutil',
|
90
|
+
'image/jpeg',
|
91
|
+
'image/png',
|
92
|
+
'index/suffixarray',
|
93
|
+
'internal/golang.org/x/net/http2/hpack',
|
94
|
+
'internal/race',
|
95
|
+
'internal/singleflight',
|
96
|
+
'internal/testenv',
|
97
|
+
'internal/trace',
|
98
|
+
'io',
|
99
|
+
'io/ioutil',
|
100
|
+
'log',
|
101
|
+
'log/syslog',
|
102
|
+
'math',
|
103
|
+
'math/big',
|
104
|
+
'math/cmplx',
|
105
|
+
'math/rand',
|
106
|
+
'mime',
|
107
|
+
'mime/multipart',
|
108
|
+
'mime/quotedprintable',
|
109
|
+
'net',
|
110
|
+
'net/http',
|
111
|
+
'net/http/cgi',
|
112
|
+
'net/http/cookiejar',
|
113
|
+
'net/http/fcgi',
|
114
|
+
'net/http/httptest',
|
115
|
+
'net/http/httputil',
|
116
|
+
'net/http/internal',
|
117
|
+
'net/http/pprof',
|
118
|
+
'net/internal/socktest',
|
119
|
+
'net/mail',
|
120
|
+
'net/rpc',
|
121
|
+
'net/rpc/jsonrpc',
|
122
|
+
'net/smtp',
|
123
|
+
'net/textproto',
|
124
|
+
'net/url',
|
125
|
+
'os',
|
126
|
+
'os/exec',
|
127
|
+
'os/signal',
|
128
|
+
'os/user',
|
129
|
+
'path',
|
130
|
+
'path/filepath',
|
131
|
+
'reflect',
|
132
|
+
'regexp',
|
133
|
+
'regexp/syntax',
|
134
|
+
'runtime',
|
135
|
+
'runtime/cgo',
|
136
|
+
'runtime/debug',
|
137
|
+
'runtime/internal/atomic',
|
138
|
+
'runtime/internal/sys',
|
139
|
+
'runtime/pprof',
|
140
|
+
'runtime/race',
|
141
|
+
'runtime/trace',
|
142
|
+
'sort',
|
143
|
+
'strconv',
|
144
|
+
'strings',
|
145
|
+
'sync',
|
146
|
+
'sync/atomic',
|
147
|
+
'syscall',
|
148
|
+
'testing',
|
149
|
+
'testing/iotest',
|
150
|
+
'testing/quick',
|
151
|
+
'text/scanner',
|
152
|
+
'text/tabwriter',
|
153
|
+
'text/template',
|
154
|
+
'text/template/parse',
|
155
|
+
'time',
|
156
|
+
'unicode',
|
157
|
+
'unicode/utf16',
|
158
|
+
'unicode/utf8',
|
159
|
+
'unsafe'
|
160
|
+
]
|
data/lib/license_auto/version.rb
CHANGED
data/lib/license_auto/website.rb
CHANGED
@@ -16,6 +16,8 @@ class GithubCom < Website
|
|
16
16
|
|
17
17
|
GIT_HASH_LENGTH = 40
|
18
18
|
|
19
|
+
attr_reader :url
|
20
|
+
|
19
21
|
##
|
20
22
|
# package: Hashie::Mash
|
21
23
|
# user: string
|
@@ -24,18 +26,18 @@ class GithubCom < Website
|
|
24
26
|
def initialize(package, user, repo, ref=nil)
|
25
27
|
super(package)
|
26
28
|
@ref = ref
|
27
|
-
|
28
|
-
LicenseAuto.logger.debug(
|
29
|
+
@url = "https://github.com/#{user}/#{repo}"
|
30
|
+
LicenseAuto.logger.debug(@url)
|
29
31
|
|
30
32
|
@server =
|
31
33
|
begin
|
32
34
|
eval('WebMock')
|
33
|
-
LicenseAuto.logger.debug("LicenseAuto
|
35
|
+
LicenseAuto.logger.debug("Running LicenseAuto in RSpec mode")
|
34
36
|
Github.new(user: user, repo: repo)
|
35
37
|
rescue NameError => e
|
36
|
-
LicenseAuto.logger.debug("LicenseAuto
|
38
|
+
LicenseAuto.logger.debug("Running LicenseAuto in formal mode")
|
37
39
|
basic_auth = "#{LUTO_CONF.github.username}:#{LUTO_CONF.github.access_token}"
|
38
|
-
Github.new(user: user, repo: repo, basic_auth: basic_auth)
|
40
|
+
Github.new(user: user, repo: repo, basic_auth: basic_auth, auto_pagination: true)
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
@@ -44,6 +46,7 @@ class GithubCom < Website
|
|
44
46
|
|
45
47
|
def get_license_info()
|
46
48
|
possible_ref = @ref || match_versioned_ref
|
49
|
+
LicenseAuto.logger.debug("possible_ref: #{possible_ref}")
|
47
50
|
# If possible_ref is nil, the Github API server will return the default branch contents
|
48
51
|
contents = @server.repos.contents.get(path: '/', ref: possible_ref)
|
49
52
|
|
@@ -62,36 +65,44 @@ class GithubCom < Website
|
|
62
65
|
license_files = license_files.map {|obj|
|
63
66
|
license_content = get_blobs(obj['sha'])
|
64
67
|
license_name, sim_ratio = LicenseAuto::Similarity.new(license_content).most_license_sim
|
65
|
-
|
68
|
+
LicenseAuto::LicenseWrapper.new(
|
66
69
|
name: license_name,
|
67
70
|
sim_ratio: sim_ratio,
|
68
71
|
html_url: obj['html_url'],
|
69
72
|
download_url: obj['download_url'],
|
70
73
|
text: license_content
|
71
|
-
|
72
|
-
LicenseAuto::LicenseWrapper.new(_hash)
|
74
|
+
)
|
73
75
|
}
|
74
76
|
|
75
77
|
readme_files = readme_files.map {|obj|
|
76
78
|
readme_content = get_blobs(obj['sha'])
|
77
79
|
license_content = LicenseAuto::Readme.new(obj['download_url'], readme_content).license_content
|
78
|
-
LicenseAuto.logger.debug(license_content)
|
80
|
+
LicenseAuto.logger.debug("readme_content:\n#{license_content}\n")
|
79
81
|
if license_content.nil?
|
80
82
|
next
|
81
83
|
else
|
82
84
|
license_name, sim_ratio = LicenseAuto::Similarity.new(license_content).most_license_sim
|
83
|
-
|
85
|
+
LicenseAuto::LicenseWrapper.new(
|
84
86
|
name: license_name,
|
85
87
|
sim_ratio: sim_ratio,
|
86
88
|
html_url: obj['html_url'],
|
87
89
|
download_url: obj['download_url'],
|
88
90
|
text: license_content
|
89
|
-
|
90
|
-
LicenseAuto::LicenseWrapper.new(_hash)
|
91
|
+
)
|
91
92
|
end
|
92
|
-
}.compact
|
93
|
-
|
94
|
-
LicenseAuto::
|
93
|
+
}.compact
|
94
|
+
|
95
|
+
pack_wrapper = LicenseAuto::PackWrapper.new(
|
96
|
+
homepage: nil,
|
97
|
+
project_url: nil,
|
98
|
+
source_url: @url
|
99
|
+
)
|
100
|
+
LicenseAuto::LicenseInfoWrapper.new(
|
101
|
+
licenses: license_files,
|
102
|
+
readmes: readme_files,
|
103
|
+
notices: notice_files,
|
104
|
+
pack: pack_wrapper
|
105
|
+
)
|
95
106
|
end
|
96
107
|
|
97
108
|
def get_ref(ref)
|
@@ -122,6 +133,20 @@ class GithubCom < Website
|
|
122
133
|
langs
|
123
134
|
end
|
124
135
|
|
136
|
+
# @return
|
137
|
+
# Array: [#<Hashie::Mash commit=#<Hashie::Mash sha="8065e5c64a22bd6d60e4df8d9be46b5805ec9355" url="https://api.github.com/repos/bower/bower/commits/8065e5c64a22bd6d60e4df8d9be46b5805ec9355"> name="v1.7.9" tarball_url="https://api.github.com/repos/bower/bower/tarball/v1.7.9" zipball_url="https://api.github.com/repos/bower/bower/zipball/v1.7.9">, #<Hashie::Mash commit=
|
138
|
+
def list_tags
|
139
|
+
@server.repos.tags.body
|
140
|
+
end
|
141
|
+
|
142
|
+
def list_commits
|
143
|
+
commits = @server.repos.commits.list
|
144
|
+
end
|
145
|
+
|
146
|
+
def latest_commit
|
147
|
+
latest = list_commits.first
|
148
|
+
end
|
149
|
+
|
125
150
|
def clone
|
126
151
|
info = repo_info
|
127
152
|
|
@@ -132,7 +157,7 @@ class GithubCom < Website
|
|
132
157
|
clone_dir = "#{LUTO_CACHE_DIR}/#{trimmed_url}"
|
133
158
|
LicenseAuto.logger.debug(clone_dir)
|
134
159
|
|
135
|
-
if Dir.
|
160
|
+
if Dir.exist?(clone_dir)
|
136
161
|
git = Git.open(clone_dir, :log => LicenseAuto.logger)
|
137
162
|
local_branch = git.branches.local[0].full
|
138
163
|
if local_branch == @ref
|
@@ -154,7 +179,7 @@ class GithubCom < Website
|
|
154
179
|
:branch => @ref
|
155
180
|
}
|
156
181
|
LicenseAuto.logger.debug(clone_url)
|
157
|
-
|
182
|
+
Git.clone(clone_url, clone_dir, clone_opts)
|
158
183
|
end
|
159
184
|
|
160
185
|
def repo_info
|
@@ -167,7 +192,7 @@ class GithubCom < Website
|
|
167
192
|
# http://www.rubydoc.info/github/piotrmurach/github/master/Github/Client/GitData/Blobs#get-instance_method
|
168
193
|
def get_blobs(sha)
|
169
194
|
response_wrapper = @server.git_data.blobs.get(@server.user, @server.repo, sha)
|
170
|
-
LicenseAuto.logger.debug(response_wrapper)
|
195
|
+
# LicenseAuto.logger.debug(response_wrapper)
|
171
196
|
content = response_wrapper.body.content
|
172
197
|
encoding = response_wrapper.body.encoding
|
173
198
|
if encoding == 'base64'
|