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
@@ -0,0 +1,73 @@
|
|
1
|
+
# https://git-scm.com/book/en/v2/Git-Tools-Submodules
|
2
|
+
|
3
|
+
require 'open3'
|
4
|
+
require 'license_auto/package_manager'
|
5
|
+
|
6
|
+
module LicenseAuto
|
7
|
+
class GitModule < LicenseAuto::PackageManager
|
8
|
+
|
9
|
+
LANGUAGE = 'GitModule'
|
10
|
+
|
11
|
+
def initialize(path)
|
12
|
+
super(path)
|
13
|
+
end
|
14
|
+
|
15
|
+
def dependency_file_pattern
|
16
|
+
/#{@path}\/\.gitmodules$/
|
17
|
+
end
|
18
|
+
|
19
|
+
def parse_dependencies
|
20
|
+
git_module_files = dependency_file_path_names
|
21
|
+
if git_module_files.empty?
|
22
|
+
LicenseAuto.logger.info("#{LANGUAGE}: #{dependency_file_pattern} file not exist")
|
23
|
+
[]
|
24
|
+
elsif git_module_files.size == 1
|
25
|
+
dep_file = git_module_files.first
|
26
|
+
LicenseAuto.logger.debug(dep_file)
|
27
|
+
modules = parse_modules(dep_file)
|
28
|
+
LicenseAuto.logger.debug(modules)
|
29
|
+
[
|
30
|
+
{
|
31
|
+
dep_file: dep_file,
|
32
|
+
deps: modules
|
33
|
+
}
|
34
|
+
]
|
35
|
+
end
|
36
|
+
# LicenseAuto.logger.debug(JSON.pretty_generate(dep_files))
|
37
|
+
end
|
38
|
+
|
39
|
+
def self.check_cli
|
40
|
+
cmd = 'git version'
|
41
|
+
stdout_str, stderr_str, _status = Open3.capture3(cmd)
|
42
|
+
if stdout_str.include?('git version')
|
43
|
+
true
|
44
|
+
else
|
45
|
+
LicenseAuto.logger.error("stdout_str: #{stdout_str}, stderr_str: #{stderr_str}")
|
46
|
+
false
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def parse_modules(dep_file)
|
53
|
+
lines = File.readlines(dep_file)
|
54
|
+
module_pattern = /url\s=\s(?<url>.+)(\.git)?$/
|
55
|
+
lines.map {|line|
|
56
|
+
matched = module_pattern.match(line)
|
57
|
+
if matched
|
58
|
+
LicenseAuto.logger.debug("matched: #{matched}, .gitmodule line: #{line}")
|
59
|
+
clone_url = matched[:url].gsub(/\.git$/, '')
|
60
|
+
{
|
61
|
+
name: clone_url,
|
62
|
+
# TODO: fetch version infomation from .git/ dir is to complex
|
63
|
+
version: nil,
|
64
|
+
remote: clone_url
|
65
|
+
}
|
66
|
+
end
|
67
|
+
}.compact
|
68
|
+
end
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
@@ -0,0 +1,155 @@
|
|
1
|
+
require 'open3'
|
2
|
+
require 'set'
|
3
|
+
require 'license_auto/package_manager'
|
4
|
+
require 'license_auto/var/golang_std_libs'
|
5
|
+
require 'license_auto/matcher'
|
6
|
+
|
7
|
+
module LicenseAuto
|
8
|
+
class Golang < LicenseAuto::PackageManager
|
9
|
+
|
10
|
+
LANGUAGE = 'Golang'
|
11
|
+
|
12
|
+
def initialize(path)
|
13
|
+
super(path)
|
14
|
+
end
|
15
|
+
|
16
|
+
# Fake
|
17
|
+
def dependency_file_pattern
|
18
|
+
/#{@path}\/.*\.go$/
|
19
|
+
end
|
20
|
+
|
21
|
+
def parse_dependencies
|
22
|
+
content = list_content
|
23
|
+
if content.nil?
|
24
|
+
LicenseAuto.logger.info("Golang dependencies not exist")
|
25
|
+
return []
|
26
|
+
else
|
27
|
+
deps = filter_deps(content)
|
28
|
+
LicenseAuto.logger.debug(deps)
|
29
|
+
[
|
30
|
+
{
|
31
|
+
dep_file: nil,
|
32
|
+
deps: deps.map {|dep|
|
33
|
+
remote, latest_sha = fetch_remote_latest_sha(dep)
|
34
|
+
{
|
35
|
+
name: dep,
|
36
|
+
version: latest_sha,
|
37
|
+
remote: remote
|
38
|
+
}
|
39
|
+
}
|
40
|
+
}
|
41
|
+
]
|
42
|
+
end
|
43
|
+
# LicenseAuto.logger.debug(JSON.pretty_generate(dep_files))
|
44
|
+
end
|
45
|
+
|
46
|
+
# @return [clone_url, latest_sha]
|
47
|
+
def fetch_remote_latest_sha(repo_url)
|
48
|
+
matcher = Matcher::SourceURL.new(repo_url)
|
49
|
+
github_matched = matcher.match_github_resource
|
50
|
+
if github_matched
|
51
|
+
github = GithubCom.new({}, github_matched[:owner], github_matched[:repo])
|
52
|
+
latest_sha = github.latest_commit.sha
|
53
|
+
# LicenseAuto.logger.debug(latest_sha)
|
54
|
+
[github.url, latest_sha]
|
55
|
+
else
|
56
|
+
[repo_url, nil]
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def filter_deps(listed_content)
|
61
|
+
|
62
|
+
dep_keys = ['Deps', 'Imports', 'TestImports', 'XTestImports']
|
63
|
+
deps = dep_keys.map {|key|
|
64
|
+
listed_content[key]
|
65
|
+
}.flatten.compact
|
66
|
+
|
67
|
+
deps = Set.new(deps)
|
68
|
+
deps.reject {|dep|
|
69
|
+
bool = GOLANG_STD_LIBS.include?(dep)
|
70
|
+
# LicenseAuto.logger.debug("#{dep}, #{bool}")
|
71
|
+
bool
|
72
|
+
}.map {|dep|
|
73
|
+
host, owner, repo, _subdir = dep.split('/')
|
74
|
+
[host, owner, repo].join('/')
|
75
|
+
}
|
76
|
+
end
|
77
|
+
|
78
|
+
def uniform_url
|
79
|
+
|
80
|
+
end
|
81
|
+
|
82
|
+
# @return
|
83
|
+
# {
|
84
|
+
# "Dir": "/Users/mic/vm/test-branch",
|
85
|
+
# "ImportPath": "_/Users/mic/vm/test-branch",
|
86
|
+
# "Name": "main",
|
87
|
+
# "Stale": true,
|
88
|
+
# "GoFiles": [
|
89
|
+
# "main.go"
|
90
|
+
# ],
|
91
|
+
# "Imports": [
|
92
|
+
# "fmt",
|
93
|
+
# "github.com/astaxie/beego",
|
94
|
+
# "math/rand"
|
95
|
+
# ],
|
96
|
+
# "Deps": [
|
97
|
+
# "errors",
|
98
|
+
# "fmt",
|
99
|
+
# "github.com/astaxie/beego",
|
100
|
+
# "internal/race",
|
101
|
+
# "io",
|
102
|
+
# "math",
|
103
|
+
# "math/rand",
|
104
|
+
# "os",
|
105
|
+
# "reflect",
|
106
|
+
# "runtime",
|
107
|
+
# "runtime/internal/atomic",
|
108
|
+
# "runtime/internal/sys",
|
109
|
+
# "strconv",
|
110
|
+
# "sync",
|
111
|
+
# "sync/atomic",
|
112
|
+
# "syscall",
|
113
|
+
# "time",
|
114
|
+
# "unicode/utf8",
|
115
|
+
# "unsafe"
|
116
|
+
# ],
|
117
|
+
# "Incomplete": true,
|
118
|
+
# "DepsErrors": [
|
119
|
+
# {
|
120
|
+
# "ImportStack": [
|
121
|
+
# ".",
|
122
|
+
# "github.com/astaxie/beego"
|
123
|
+
# ],
|
124
|
+
# "Pos": "main.go:9:2",
|
125
|
+
# "Err": "cannot find package \"github.com/astaxie/beego\" in any of:\n\t/usr/local/Cellar/go/1.6/libexec/src/github.com/astaxie/beego (from $GOROOT)\n\t($GOPATH not set)"
|
126
|
+
# }
|
127
|
+
# ]
|
128
|
+
# }
|
129
|
+
def list_content
|
130
|
+
Dir.chdir(@path) do
|
131
|
+
cmd = 'go list -json ./...'
|
132
|
+
stdout_str, stderr_str, status = Open3.capture3(cmd)
|
133
|
+
Hashie::Mash.new(JSON.parse(stdout_str)) if stdout_str.length > 0
|
134
|
+
end
|
135
|
+
end
|
136
|
+
|
137
|
+
def self.check_cli
|
138
|
+
bash_cmd = "go version"
|
139
|
+
# LicenseAuto.logger.debug(bash_cmd)
|
140
|
+
stdout_str, stderr_str, _status = Open3.capture3(bash_cmd)
|
141
|
+
golang_version = /1\.6/
|
142
|
+
|
143
|
+
if not stderr_str.empty?
|
144
|
+
LicenseAuto.logger.error(stderr_str)
|
145
|
+
return false
|
146
|
+
elsif not stdout_str =~ golang_version
|
147
|
+
error = "Golang version: #{stdout_str} not satisfied: #{golang_version}"
|
148
|
+
LicenseAuto.logger.error(error)
|
149
|
+
return false
|
150
|
+
end
|
151
|
+
|
152
|
+
return true
|
153
|
+
end
|
154
|
+
end
|
155
|
+
end
|
@@ -0,0 +1,145 @@
|
|
1
|
+
require 'bundler'
|
2
|
+
require 'license_auto/package_manager'
|
3
|
+
# require 'license_auto/website/'
|
4
|
+
|
5
|
+
module LicenseAuto
|
6
|
+
class Gradle < LicenseAuto::PackageManager
|
7
|
+
|
8
|
+
LANGUAGE = 'Java'
|
9
|
+
|
10
|
+
DEPENDENCY_PATTERN = /\\---\s(?<group>.+):(?<name>.+):(?<version>.+)/
|
11
|
+
|
12
|
+
REMOTE = 'https://repo1.maven.org/maven2/'
|
13
|
+
|
14
|
+
def initialize(path)
|
15
|
+
super(path)
|
16
|
+
end
|
17
|
+
|
18
|
+
def dependency_file_pattern
|
19
|
+
/#{@path}\/build.gradle$/i
|
20
|
+
end
|
21
|
+
|
22
|
+
def parse_dependencies
|
23
|
+
build_files = dependency_file_path_names
|
24
|
+
if build_files.empty?
|
25
|
+
LicenseAuto.logger.info("#{LANGUAGE}: #{dependency_file_pattern} file not exist")
|
26
|
+
[]
|
27
|
+
# TODO: check his sub dir has `build.gradle` or not
|
28
|
+
else
|
29
|
+
build_files.map {|dep_file|
|
30
|
+
LicenseAuto.logger.debug(dep_file)
|
31
|
+
|
32
|
+
{
|
33
|
+
dep_file: dep_file,
|
34
|
+
deps: collect_dependencies
|
35
|
+
}
|
36
|
+
}
|
37
|
+
end
|
38
|
+
# LicenseAuto.logger.debug(JSON.pretty_generate(dep_files))
|
39
|
+
end
|
40
|
+
|
41
|
+
def self.check_cli
|
42
|
+
cmd = 'gradle --version'
|
43
|
+
stdout_str, stderr_str, _status = Open3.capture3(cmd)
|
44
|
+
if stdout_str.include?('Gradle 2.8')
|
45
|
+
true
|
46
|
+
else
|
47
|
+
LicenseAuto.logger.error("stdout_str: #{stdout_str}, stderr_str: #{stderr_str}")
|
48
|
+
false
|
49
|
+
end
|
50
|
+
end
|
51
|
+
|
52
|
+
# Out put sample:
|
53
|
+
# ------------------------------------------------------------
|
54
|
+
# Root project
|
55
|
+
# ------------------------------------------------------------
|
56
|
+
#
|
57
|
+
# Root project 'maven-gradle-comparison-dependency-simplest'
|
58
|
+
# No sub-projects
|
59
|
+
def list_projects
|
60
|
+
cmd = "gradle -q project"
|
61
|
+
LicenseAuto.logger.debug(@path)
|
62
|
+
projects = []
|
63
|
+
Dir.chdir(@path) do
|
64
|
+
stdout_str, stderr_str, _status = Open3.capture3(cmd)
|
65
|
+
if stdout_str.length > 0
|
66
|
+
LicenseAuto.logger.debug(stdout_str)
|
67
|
+
stdout_str.split("\n").each {|line|
|
68
|
+
sub_project_pattern = /Project\s\'(:)?(?<project_name>.+)\'/
|
69
|
+
matched = sub_project_pattern.match(line)
|
70
|
+
if matched
|
71
|
+
projects.push(match_result[:project_name])
|
72
|
+
end
|
73
|
+
}
|
74
|
+
else
|
75
|
+
LicenseAuto.logger.error(stderr_str)
|
76
|
+
end
|
77
|
+
projects
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def collect_dependencies
|
82
|
+
root_deps = list_dependencies
|
83
|
+
projects = list_projects
|
84
|
+
projects.each {|project_name|
|
85
|
+
deps = list_dependencies(project_name)
|
86
|
+
root_deps.merge(deps)
|
87
|
+
}
|
88
|
+
root_deps.map {|dep|
|
89
|
+
group, name, version_range = dep.split(':')
|
90
|
+
version = filter_version(version_range)
|
91
|
+
{
|
92
|
+
name: [group, name].join(':'),
|
93
|
+
version: version,
|
94
|
+
remote: REMOTE
|
95
|
+
}
|
96
|
+
}
|
97
|
+
end
|
98
|
+
|
99
|
+
def filter_version(version_range)
|
100
|
+
# 'junit:junit:3.8.2 -> 4.11'
|
101
|
+
range_arrow_pattern = /(?<min_ver>.*)\s->\s(?<max_ver>.*)/
|
102
|
+
matched = range_arrow_pattern.match(version_range)
|
103
|
+
if matched
|
104
|
+
version_range = matched[:max_ver]
|
105
|
+
end
|
106
|
+
|
107
|
+
# 'org.apache.ant:ant:1.8.3 (*)'
|
108
|
+
star_pattern = /\s\(\*\)/
|
109
|
+
version_range.gsub(star_pattern, '')
|
110
|
+
end
|
111
|
+
|
112
|
+
# @return sample:
|
113
|
+
# Set.new(["commons-beanutils:commons-beanutils:1.8.3", "commons-logging:commons-logging:1.1.1", "junit:junit:4.8.2"])
|
114
|
+
def list_dependencies(project_name=nil)
|
115
|
+
Dir.chdir(@path) do
|
116
|
+
deps = Set.new
|
117
|
+
cmd = if project_name
|
118
|
+
"gradle -q #{project_name}:dependencies"
|
119
|
+
else
|
120
|
+
"gradle -q dependencies"
|
121
|
+
end
|
122
|
+
LicenseAuto.logger.debug("cmd: #{cmd}")
|
123
|
+
|
124
|
+
stdout_str, stderr_str, _status = Open3.capture3(cmd)
|
125
|
+
if stdout_str.length > 0
|
126
|
+
LicenseAuto.logger.debug("stdout_str: #{stdout_str}")
|
127
|
+
stdout_str.split("\n").each {|line|
|
128
|
+
matched = DEPENDENCY_PATTERN.match(line)
|
129
|
+
# LicenseAuto.logger.debug("#{line}, matched: #{matched}")
|
130
|
+
if matched
|
131
|
+
group_name_version = matched.to_s.gsub(/\\---\s/, '')
|
132
|
+
# External dependencies
|
133
|
+
# DOC: https://docs.gradle.org/current/userguide/artifact_dependencies_tutorial.html#N105E1
|
134
|
+
deps.add(group_name_version)
|
135
|
+
end
|
136
|
+
}
|
137
|
+
else
|
138
|
+
LicenseAuto.logger.error("stderr_str: #{stderr_str}")
|
139
|
+
end
|
140
|
+
LicenseAuto.logger.debug(deps)
|
141
|
+
deps
|
142
|
+
end
|
143
|
+
end
|
144
|
+
end
|
145
|
+
end
|
@@ -0,0 +1,133 @@
|
|
1
|
+
# [Maven3](https://maven.apache.org/index.html)
|
2
|
+
# [Introduction to the Dependency Mechanism](https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html)
|
3
|
+
|
4
|
+
require 'bundler'
|
5
|
+
require 'license_auto/package_manager'
|
6
|
+
|
7
|
+
module LicenseAuto
|
8
|
+
class Maven < LicenseAuto::PackageManager
|
9
|
+
|
10
|
+
LANGUAGE = 'Java'
|
11
|
+
|
12
|
+
# DOC: https://maven.apache.org/guides/introduction/introduction-to-dependency-mechanism.html#Dependency_Scope
|
13
|
+
scopes = ""
|
14
|
+
DEPENDENCY_PATTERN = /^\[INFO\]\s+(?<group>.+):(?<name>.+):(?<type>.+):(?<version>.+):(?<scope>(compile|provided|runtime|test|system|import))$/
|
15
|
+
|
16
|
+
def initialize(path)
|
17
|
+
super(path)
|
18
|
+
end
|
19
|
+
|
20
|
+
def dependency_file_pattern
|
21
|
+
/#{@path}\/pom\.xml$/i
|
22
|
+
end
|
23
|
+
|
24
|
+
def parse_dependencies
|
25
|
+
build_files = dependency_file_path_names
|
26
|
+
if build_files.empty?
|
27
|
+
LicenseAuto.logger.info("#{LANGUAGE}: #{dependency_file_pattern} file not exist")
|
28
|
+
[]
|
29
|
+
else
|
30
|
+
build_files.map {|dep_file|
|
31
|
+
LicenseAuto.logger.debug(dep_file)
|
32
|
+
|
33
|
+
{
|
34
|
+
dep_file: dep_file,
|
35
|
+
deps: collect_dependencies
|
36
|
+
}
|
37
|
+
}
|
38
|
+
end
|
39
|
+
# LicenseAuto.logger.debug(JSON.pretty_generate(deps))
|
40
|
+
end
|
41
|
+
|
42
|
+
# @return example
|
43
|
+
# => Array: [{:name=>"junit:junit", :version=>"4.8", :remote=>nil}]
|
44
|
+
def collect_dependencies
|
45
|
+
deps =
|
46
|
+
if resolve_dependencies
|
47
|
+
list_dependencies.map {|dep|
|
48
|
+
group, name, type, version, scope = dep.split(':')
|
49
|
+
{
|
50
|
+
name: [group, name].join(':'),
|
51
|
+
version: version,
|
52
|
+
remote: nil
|
53
|
+
}
|
54
|
+
}
|
55
|
+
else
|
56
|
+
[]
|
57
|
+
end
|
58
|
+
LicenseAuto.logger.debug(deps)
|
59
|
+
deps
|
60
|
+
end
|
61
|
+
|
62
|
+
def resolve_dependencies
|
63
|
+
bool = false
|
64
|
+
Dir.chdir(@path) do
|
65
|
+
cmd = 'mvn dependency:resolve'
|
66
|
+
stdout_str, stderr_str, _status = Open3.capture3(cmd)
|
67
|
+
if stdout_str.length > 0
|
68
|
+
# LicenseAuto.logger.debug("stdout_str: #{stdout_str}")
|
69
|
+
if stdout_str.include?("[INFO] BUILD SUCCESS")
|
70
|
+
bool = true
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
bool
|
75
|
+
end
|
76
|
+
|
77
|
+
# Command output sample:
|
78
|
+
# [INFO]
|
79
|
+
# [INFO] ------------------------------------------------------------------------
|
80
|
+
# [INFO] Building GitHub Maven Plugin Example 0.1-SNAPSHOT
|
81
|
+
# [INFO] ------------------------------------------------------------------------
|
82
|
+
# [INFO]
|
83
|
+
# [INFO] --- maven-dependency-plugin:2.8:list (default-cli) @ github-maven-example ---
|
84
|
+
# [INFO]
|
85
|
+
# [INFO] The following files have been resolved:
|
86
|
+
# [INFO] junit:junit:jar:4.8:test
|
87
|
+
# [INFO]
|
88
|
+
# [INFO] ------------------------------------------------------------------------
|
89
|
+
# [INFO] BUILD SUCCESS
|
90
|
+
# [INFO] ------------------------------------------------------------------------
|
91
|
+
# [INFO] Total time: 1.819 s
|
92
|
+
# [INFO] Finished at: 2016-04-18T15:26:58+08:00
|
93
|
+
# [INFO] Final Memory: 14M/155M
|
94
|
+
# [INFO] ------------------------------------------------------------------------
|
95
|
+
#
|
96
|
+
# @return sample:
|
97
|
+
# Set.new(["junit:junit:jar:4.8:test"])
|
98
|
+
def list_dependencies
|
99
|
+
if resolve_dependencies
|
100
|
+
deps = Set.new
|
101
|
+
Dir.chdir(@path) do
|
102
|
+
cmd = 'mvn dependency:list'
|
103
|
+
out, err, _st = Open3.capture3(cmd)
|
104
|
+
# LicenseAuto.logger.debug("#{out}")
|
105
|
+
if out.include?("The following files have been resolved:")
|
106
|
+
out.split("\n").each {|line|
|
107
|
+
matched = DEPENDENCY_PATTERN.match(line)
|
108
|
+
# LicenseAuto.logger.debug("#{line}, matched: #{matched}")
|
109
|
+
if matched
|
110
|
+
group_name_version = line.gsub!(/\[INFO\]/,'').strip!
|
111
|
+
deps.add(group_name_version)
|
112
|
+
end
|
113
|
+
}
|
114
|
+
else
|
115
|
+
LicenseAuto.logger.error("#{err}")
|
116
|
+
end
|
117
|
+
end
|
118
|
+
deps
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
def self.check_cli
|
123
|
+
cmd = 'mvn -v'
|
124
|
+
stdout_str, stderr_str, _status = Open3.capture3(cmd)
|
125
|
+
if stdout_str.include?('Apache Maven 3')
|
126
|
+
true
|
127
|
+
else
|
128
|
+
LicenseAuto.logger.error("stdout_str: #{stdout_str}, stderr_str: #{stderr_str}")
|
129
|
+
false
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
end
|