pmdtester 1.1.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.ci/build.sh +87 -55
- data/.ci/inc/fetch_ci_scripts.bash +19 -0
- data/.ci/manual-integration-tests.sh +31 -14
- data/.github/workflows/build.yml +23 -7
- data/.github/workflows/manual-integration-tests.yml +16 -5
- data/.hoerc +1 -1
- data/.rubocop.yml +3 -0
- data/History.md +12 -0
- data/Manifest.txt +3 -2
- data/README.rdoc +20 -18
- data/config/project-list.xml +8 -7
- data/config/projectlist_1_2_0.xsd +39 -0
- data/lib/pmdtester.rb +1 -1
- data/lib/pmdtester/builders/liquid_renderer.rb +60 -3
- data/lib/pmdtester/builders/pmd_report_builder.rb +2 -2
- data/lib/pmdtester/builders/project_builder.rb +14 -9
- data/lib/pmdtester/builders/project_hasher.rb +41 -39
- data/lib/pmdtester/builders/rule_set_builder.rb +4 -0
- data/lib/pmdtester/builders/summary_report_builder.rb +1 -0
- data/lib/pmdtester/parsers/options.rb +5 -0
- data/lib/pmdtester/parsers/pmd_report_document.rb +0 -2
- data/lib/pmdtester/parsers/projects_parser.rb +1 -1
- data/lib/pmdtester/pmd_branch_detail.rb +6 -0
- data/lib/pmdtester/pmd_tester_utils.rb +1 -0
- data/lib/pmdtester/project.rb +24 -11
- data/lib/pmdtester/report_diff.rb +20 -4
- data/lib/pmdtester/runner.rb +1 -0
- data/pmdtester.gemspec +4 -4
- data/resources/js/project-report.js +2 -1
- data/resources/project_diff_report.html +9 -0
- data/resources/project_index.html +11 -0
- data/resources/project_pmd_report.html +186 -0
- metadata +5 -4
- data/.ci/files/env.gpg +0 -1
- data/.ci/inc/install-openjdk.inc +0 -26
@@ -57,28 +57,45 @@ module PmdTester
|
|
57
57
|
:configerrors_by_rule,
|
58
58
|
:exec_time,
|
59
59
|
:timestamp,
|
60
|
-
:
|
60
|
+
:file
|
61
61
|
|
62
62
|
def initialize(report_document: nil,
|
63
|
+
file: '',
|
63
64
|
exec_time: 0,
|
64
65
|
timestamp: '0')
|
65
66
|
initialize_empty
|
66
67
|
initialize_with_report_document report_document unless report_document.nil?
|
67
68
|
@exec_time = exec_time
|
68
69
|
@timestamp = timestamp
|
70
|
+
@file = file
|
69
71
|
end
|
70
72
|
|
71
73
|
def self.empty
|
72
74
|
new
|
73
75
|
end
|
74
76
|
|
77
|
+
def rule_summaries
|
78
|
+
summary = {}
|
79
|
+
@violations_by_file.each_value do |violation|
|
80
|
+
unless summary.key?(violation.rule_name)
|
81
|
+
summary[violation.rule_name] = {
|
82
|
+
'name' => violation.rule_name,
|
83
|
+
'info_url' => violation.info_url,
|
84
|
+
'count' => 0
|
85
|
+
}
|
86
|
+
end
|
87
|
+
summary[violation.rule_name]['count'] += 1
|
88
|
+
end
|
89
|
+
|
90
|
+
summary.values
|
91
|
+
end
|
92
|
+
|
75
93
|
private
|
76
94
|
|
77
95
|
def initialize_with_report_document(report_document)
|
78
96
|
@violations_by_file = report_document.violations
|
79
97
|
@errors_by_file = report_document.errors
|
80
98
|
@configerrors_by_rule = report_document.configerrors
|
81
|
-
@infos_by_rule = report_document.infos_by_rules
|
82
99
|
|
83
100
|
PmdTester.logger.debug("Loaded #{@violations_by_file.total_size} violations " \
|
84
101
|
"in #{@violations_by_file.num_files} files")
|
@@ -91,7 +108,6 @@ module PmdTester
|
|
91
108
|
@violations_by_file = CollectionByFile.new
|
92
109
|
@errors_by_file = CollectionByFile.new
|
93
110
|
@configerrors_by_rule = {}
|
94
|
-
@infos_by_rule = {}
|
95
111
|
end
|
96
112
|
end
|
97
113
|
|
@@ -122,7 +138,7 @@ module PmdTester
|
|
122
138
|
@error_diffs_by_file = {}
|
123
139
|
@configerror_diffs_by_rule = {}
|
124
140
|
|
125
|
-
@rule_infos_union =
|
141
|
+
@rule_infos_union = {}
|
126
142
|
@base_report = base_report
|
127
143
|
@patch_report = patch_report
|
128
144
|
|
data/lib/pmdtester/runner.rb
CHANGED
@@ -59,6 +59,7 @@ module PmdTester
|
|
59
59
|
@options.patch_config = "#{baseline_path}/config.xml"
|
60
60
|
else
|
61
61
|
logger.info "Using config #{@options.patch_config} which might differ from baseline"
|
62
|
+
RuleSetBuilder.new(@options).calculate_filter_set if @options.filter_with_patch_config
|
62
63
|
end
|
63
64
|
|
64
65
|
patch_branch_details = create_pmd_report(config: @options.patch_config, branch: @options.patch_branch)
|
data/pmdtester.gemspec
CHANGED
@@ -1,22 +1,22 @@
|
|
1
1
|
# DO NOT EDIT THIS FILE. Instead, edit Rakefile, and run `rake hoe:spec`.
|
2
2
|
|
3
3
|
# -*- encoding: utf-8 -*-
|
4
|
-
# stub: pmdtester 1.
|
4
|
+
# stub: pmdtester 1.2.0 ruby lib
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "pmdtester".freeze
|
8
|
-
s.version = "1.
|
8
|
+
s.version = "1.2.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0".freeze) if s.respond_to? :required_rubygems_version=
|
11
11
|
s.metadata = { "bug_tracker_uri" => "https://github.com/pmd/pmd-regression-tester/issues", "homepage_uri" => "https://pmd.github.io", "source_code_uri" => "https://github.com/pmd/pmd-regression-tester" } if s.respond_to? :metadata=
|
12
12
|
s.require_paths = ["lib".freeze]
|
13
13
|
s.authors = ["Andreas Dangel".freeze, "Binguo Bao".freeze, "Cl\u00E9ment Fournier".freeze]
|
14
|
-
s.date = "2021-
|
14
|
+
s.date = "2021-06-20"
|
15
15
|
s.description = "A regression testing tool ensure that new problems and unexpected behaviors will not be introduced to PMD project after fixing an issue , and new rules can work as expected.".freeze
|
16
16
|
s.email = ["andreas.dangel@pmd-code.org".freeze, "djydewang@gmail.com".freeze, "clement.fournier76@gmail.com".freeze]
|
17
17
|
s.executables = ["pmdtester".freeze]
|
18
18
|
s.extra_rdoc_files = ["History.md".freeze, "Manifest.txt".freeze, "README.rdoc".freeze]
|
19
|
-
s.files = [".ci/build.sh".freeze, ".ci/
|
19
|
+
s.files = [".ci/build.sh".freeze, ".ci/inc/fetch_ci_scripts.bash".freeze, ".ci/manual-integration-tests.sh".freeze, ".github/workflows/build.yml".freeze, ".github/workflows/manual-integration-tests.yml".freeze, ".gitignore".freeze, ".hoerc".freeze, ".rubocop.yml".freeze, ".rubocop_todo.yml".freeze, ".ruby-version".freeze, "Gemfile".freeze, "History.md".freeze, "LICENSE".freeze, "Manifest.txt".freeze, "README.rdoc".freeze, "Rakefile".freeze, "bin/pmdtester".freeze, "config/all-java.xml".freeze, "config/design.xml".freeze, "config/project-list.xml".freeze, "config/projectlist_1_0_0.xsd".freeze, "config/projectlist_1_1_0.xsd".freeze, "config/projectlist_1_2_0.xsd".freeze, "lib/pmdtester.rb".freeze, "lib/pmdtester/builders/liquid_renderer.rb".freeze, "lib/pmdtester/builders/pmd_report_builder.rb".freeze, "lib/pmdtester/builders/project_builder.rb".freeze, "lib/pmdtester/builders/project_hasher.rb".freeze, "lib/pmdtester/builders/rule_set_builder.rb".freeze, "lib/pmdtester/builders/simple_progress_logger.rb".freeze, "lib/pmdtester/builders/summary_report_builder.rb".freeze, "lib/pmdtester/cmd.rb".freeze, "lib/pmdtester/collection_by_file.rb".freeze, "lib/pmdtester/parsers/options.rb".freeze, "lib/pmdtester/parsers/pmd_report_document.rb".freeze, "lib/pmdtester/parsers/projects_parser.rb".freeze, "lib/pmdtester/pmd_branch_detail.rb".freeze, "lib/pmdtester/pmd_configerror.rb".freeze, "lib/pmdtester/pmd_error.rb".freeze, "lib/pmdtester/pmd_report_detail.rb".freeze, "lib/pmdtester/pmd_tester_utils.rb".freeze, "lib/pmdtester/pmd_violation.rb".freeze, "lib/pmdtester/project.rb".freeze, "lib/pmdtester/report_diff.rb".freeze, "lib/pmdtester/resource_locator.rb".freeze, "lib/pmdtester/runner.rb".freeze, "pmdtester.gemspec".freeze, "resources/_includes/diff_pill_row.html".freeze, "resources/css/bootstrap.min.css".freeze, "resources/css/datatables.min.css".freeze, "resources/css/pmd-tester.css".freeze, "resources/js/bootstrap.min.js".freeze, "resources/js/code-snippets.js".freeze, "resources/js/datatables.min.js".freeze, "resources/js/jquery-3.2.1.slim.min.js".freeze, "resources/js/jquery.min.js".freeze, "resources/js/popper.min.js".freeze, "resources/js/project-report.js".freeze, "resources/project_diff_report.html".freeze, "resources/project_index.html".freeze, "resources/project_pmd_report.html".freeze]
|
20
20
|
s.homepage = "https://pmd.github.io".freeze
|
21
21
|
s.licenses = ["BSD-2-Clause".freeze]
|
22
22
|
s.rdoc_options = ["--main".freeze, "README.rdoc".freeze]
|
@@ -57,7 +57,8 @@ $(document).ready(function () {
|
|
57
57
|
viewTotal: true,
|
58
58
|
cascadePanes: true,
|
59
59
|
columns: [0, 1, 3],
|
60
|
-
order: ['Rule', 'Location (click row to expand)', 'Type']
|
60
|
+
order: ['Rule', 'Location (click row to expand)', 'Type'],
|
61
|
+
threshold: 1 // always show filters in search pane (default: 0.6)
|
61
62
|
},
|
62
63
|
// scrollCollapse: true,
|
63
64
|
// paging: false,
|
@@ -18,6 +18,9 @@
|
|
18
18
|
|
19
19
|
</head>
|
20
20
|
<body>
|
21
|
+
<div class="section">
|
22
|
+
<h1>PMD Regression Tester Diff Report for {{project_name}}</h1>
|
23
|
+
</div>
|
21
24
|
<div class="section">
|
22
25
|
<h2>Summary</h2>
|
23
26
|
<div class="section-content">
|
@@ -68,6 +71,12 @@
|
|
68
71
|
<td class="patch">{{diff.patch_timestamp}}</td>
|
69
72
|
<td class="diff"></td>
|
70
73
|
</tr>
|
74
|
+
<tr>
|
75
|
+
<td class="item">Full Report</td>
|
76
|
+
<td class="base"><a href="base_pmd_report.html">Base PMD Report</a></td>
|
77
|
+
<td class="patch"><a href="patch_pmd_report.html">Patch PMD Report</a></td>
|
78
|
+
<td class="diff"></td>
|
79
|
+
</tr>
|
71
80
|
</tbody>
|
72
81
|
</table>
|
73
82
|
</div>
|
@@ -13,6 +13,12 @@
|
|
13
13
|
<link rel="stylesheet" href="css/pmd-tester.css">
|
14
14
|
</head>
|
15
15
|
<body>
|
16
|
+
<div class="section">
|
17
|
+
<h1>PMD Regression Tester Report</h1>
|
18
|
+
<p>
|
19
|
+
<a href="https://github.com/pmd/pmd-regression-tester">github.com/pmd/pmd-regression-tester</a>
|
20
|
+
</p>
|
21
|
+
</div>
|
16
22
|
<div class="section">
|
17
23
|
<h2>Branch details</h2>
|
18
24
|
<div class="section-content">
|
@@ -37,6 +43,11 @@
|
|
37
43
|
<span class="external-link-secondary"><a href="{{ comparison_url }}">[Compare]</a></span>
|
38
44
|
</td>
|
39
45
|
</tr>
|
46
|
+
<tr>
|
47
|
+
<td class="item">Timestamp</td>
|
48
|
+
<td class="base">{{base.timestamp}}</td>
|
49
|
+
<td class="patch">{{patch.timestamp}}</td>
|
50
|
+
</tr>
|
40
51
|
<tr>
|
41
52
|
<td class="item">Total PMD runtime</td>
|
42
53
|
<td class="base">{{base.execution_time}}</td>
|
@@ -0,0 +1,186 @@
|
|
1
|
+
<!DOCTYPE html>
|
2
|
+
<html lang="en">
|
3
|
+
<head>
|
4
|
+
<meta charset="utf-8">
|
5
|
+
<title>PMD Report for {{project_name}}</title>
|
6
|
+
|
7
|
+
<link rel="stylesheet" type="text/css" href="../css/bootstrap.min.css"/>
|
8
|
+
<link rel="stylesheet" type="text/css" href="../css/datatables.min.css"/>
|
9
|
+
<link rel="stylesheet" type="text/css" href="../css/pmd-tester.css">
|
10
|
+
|
11
|
+
<script src="../js/jquery-3.2.1.slim.min.js"></script>
|
12
|
+
<script src="../js/popper.min.js"></script>
|
13
|
+
<script src="../js/bootstrap.min.js"></script>
|
14
|
+
<script src="../js/datatables.min.js"></script>
|
15
|
+
<script src="../js/code-snippets.js"></script>
|
16
|
+
<!-- This is generated -->
|
17
|
+
<script src="./{{branch}}_data.js"></script>
|
18
|
+
|
19
|
+
</head>
|
20
|
+
<body>
|
21
|
+
<div class="section">
|
22
|
+
<h1>PMD Report for {{project_name}}</h1>
|
23
|
+
</div>
|
24
|
+
<div class="section">
|
25
|
+
<h2>Summary</h2>
|
26
|
+
<div class="section-content">
|
27
|
+
<table id="table-summary" class="table">
|
28
|
+
<thead>
|
29
|
+
<tr>
|
30
|
+
<th></th>
|
31
|
+
<th>{{branch | capitalize}}</th>
|
32
|
+
</tr>
|
33
|
+
</thead>
|
34
|
+
<tbody>
|
35
|
+
<tr>
|
36
|
+
<td class="item"><a href="#section-violations">Violations</a>
|
37
|
+
</td>
|
38
|
+
<td class="{{branch}}">{{report.violation_counts}}</td>
|
39
|
+
</tr>
|
40
|
+
<tr>
|
41
|
+
<td class="item"><a href="#section-errors">Errors</a></td>
|
42
|
+
<td class="{{branch}}">{{report.error_counts}}</td>
|
43
|
+
</tr>
|
44
|
+
<tr>
|
45
|
+
<td class="item"><a href="#section-configerrors">ConfigErrors</a></td>
|
46
|
+
<td class="{{branch}}">{{report.configerror_counts}}</td>
|
47
|
+
</tr>
|
48
|
+
<tr>
|
49
|
+
<td class="item">Execution time</td>
|
50
|
+
<td class="{{branch}}">{{report.execution_time}}</td>
|
51
|
+
</tr>
|
52
|
+
<tr>
|
53
|
+
<td class="item">Timestamp</td>
|
54
|
+
<td class="{{branch}}">{{report.timestamp}}</td>
|
55
|
+
</tr>
|
56
|
+
<tr>
|
57
|
+
<td class="item">Full Report</td>
|
58
|
+
<td class="{{branch}}"><a href="{{branch}}_pmd_report.xml">{{branch}}_pmd_report.xml</a></td>
|
59
|
+
</tr>
|
60
|
+
</tbody>
|
61
|
+
</table>
|
62
|
+
</div>
|
63
|
+
</div>
|
64
|
+
|
65
|
+
<div class="section" id="section-rule-summary">
|
66
|
+
|
67
|
+
<h2>Summary by rule</h2>
|
68
|
+
|
69
|
+
<div class="section-content">
|
70
|
+
|
71
|
+
<div class="table-responsive">
|
72
|
+
<table id="rule-summary" class="table">
|
73
|
+
<thead>
|
74
|
+
<tr>
|
75
|
+
<th>Rule</th>
|
76
|
+
<th>{{branch | capitalize}}</th>
|
77
|
+
</tr>
|
78
|
+
</thead>
|
79
|
+
<tbody>
|
80
|
+
|
81
|
+
{% assign sorted_rules = report.rules | sort: 'name' %}
|
82
|
+
|
83
|
+
{% for rule in sorted_rules %}
|
84
|
+
<tr id="rule-summary-{{rule.name}}">
|
85
|
+
<td class="rulename">
|
86
|
+
{{ rule.name }}
|
87
|
+
<span class="external-link-secondary"><a class="rulelink" href="{{rule.info_url}}" target="_blank" rel="noopener noreferrer">[doc]</a></span>
|
88
|
+
</td>
|
89
|
+
<td class="{{branch}}count">{{ rule.count }}</td>
|
90
|
+
</tr>
|
91
|
+
{% endfor %}
|
92
|
+
</tbody>
|
93
|
+
</table>
|
94
|
+
</div>
|
95
|
+
</div>
|
96
|
+
</div>
|
97
|
+
<div class="section" id="section-violations">
|
98
|
+
|
99
|
+
<h2>Violations</h2>
|
100
|
+
|
101
|
+
<div class="section-content">
|
102
|
+
|
103
|
+
<table id="violationsTable" width="100%" class="table">
|
104
|
+
<thead>
|
105
|
+
<tr>
|
106
|
+
<th>Location (click row to expand)</th>
|
107
|
+
<th>Rule</th>
|
108
|
+
<th>Message</th>
|
109
|
+
<th>Type</th>
|
110
|
+
</tr>
|
111
|
+
</thead>
|
112
|
+
</table>
|
113
|
+
|
114
|
+
</div>
|
115
|
+
</div>
|
116
|
+
|
117
|
+
<div class="section" id="section-errors">
|
118
|
+
|
119
|
+
<h2>Errors</h2>
|
120
|
+
|
121
|
+
<div class="section-content">
|
122
|
+
|
123
|
+
<div class="table-responsive">
|
124
|
+
<table id="error-table" class="table">
|
125
|
+
<thead>
|
126
|
+
<tr>
|
127
|
+
<th>File</th>
|
128
|
+
<th>Description (click to expand)</th>
|
129
|
+
</tr>
|
130
|
+
</thead>
|
131
|
+
<tbody>
|
132
|
+
{% for error in report.errors %}
|
133
|
+
<tr id="error-{{forloop.index}}" class="accordion-toggle error-row" data-toggle="collapse" data-target="#error-{{forloop.index}}-expanded">
|
134
|
+
<td><a href="{{error.file_url}}" target="_blank" rel="noopener noreferrer">{{error.short_filename}}</a></td>
|
135
|
+
<td>{{error.short_message | escape | replace: error.filename, "<span class='meta-var'>$FILE</span>" }}</td>
|
136
|
+
</tr>
|
137
|
+
<tr>
|
138
|
+
<td class="row-hidden" colspan="2">
|
139
|
+
<div class="accordion-body collapse" id="error-{{forloop.index}}-expanded">
|
140
|
+
<div class="collapsed-content-padder">
|
141
|
+
<pre>
|
142
|
+
{{ error.stack_trace_html }}
|
143
|
+
</pre>
|
144
|
+
</div>
|
145
|
+
</div>
|
146
|
+
</td>
|
147
|
+
</tr>
|
148
|
+
{% endfor %}
|
149
|
+
</tbody>
|
150
|
+
</table>
|
151
|
+
</div>
|
152
|
+
|
153
|
+
</div>
|
154
|
+
</div>
|
155
|
+
|
156
|
+
<div class="section" id="section-configerrors">
|
157
|
+
|
158
|
+
<h2>ConfigErrors</h2>
|
159
|
+
|
160
|
+
<div class="section-content">
|
161
|
+
|
162
|
+
<div class="table-responsive">
|
163
|
+
<table id="configerror-table" class="table">
|
164
|
+
<thead>
|
165
|
+
<tr>
|
166
|
+
<th>Rule</th>
|
167
|
+
<th>Message</th>
|
168
|
+
</tr>
|
169
|
+
</thead>
|
170
|
+
<tbody>
|
171
|
+
{% for configerror in report.configerrors %}
|
172
|
+
<tr class="configerror-row">
|
173
|
+
<td>{{configerror.rule}}</td>
|
174
|
+
<td>{{configerror.message}}</td>
|
175
|
+
</tr>
|
176
|
+
{% endfor %}
|
177
|
+
</tbody>
|
178
|
+
</table>
|
179
|
+
</div>
|
180
|
+
</div>
|
181
|
+
</div>
|
182
|
+
|
183
|
+
<script src="../js/project-report.js"></script>
|
184
|
+
|
185
|
+
</body>
|
186
|
+
</html>
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: pmdtester
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.2.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Andreas Dangel
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2021-
|
13
|
+
date: 2021-06-20 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: nokogiri
|
@@ -230,8 +230,7 @@ extra_rdoc_files:
|
|
230
230
|
- README.rdoc
|
231
231
|
files:
|
232
232
|
- ".ci/build.sh"
|
233
|
-
- ".ci/
|
234
|
-
- ".ci/inc/install-openjdk.inc"
|
233
|
+
- ".ci/inc/fetch_ci_scripts.bash"
|
235
234
|
- ".ci/manual-integration-tests.sh"
|
236
235
|
- ".github/workflows/build.yml"
|
237
236
|
- ".github/workflows/manual-integration-tests.yml"
|
@@ -252,6 +251,7 @@ files:
|
|
252
251
|
- config/project-list.xml
|
253
252
|
- config/projectlist_1_0_0.xsd
|
254
253
|
- config/projectlist_1_1_0.xsd
|
254
|
+
- config/projectlist_1_2_0.xsd
|
255
255
|
- lib/pmdtester.rb
|
256
256
|
- lib/pmdtester/builders/liquid_renderer.rb
|
257
257
|
- lib/pmdtester/builders/pmd_report_builder.rb
|
@@ -289,6 +289,7 @@ files:
|
|
289
289
|
- resources/js/project-report.js
|
290
290
|
- resources/project_diff_report.html
|
291
291
|
- resources/project_index.html
|
292
|
+
- resources/project_pmd_report.html
|
292
293
|
homepage: https://pmd.github.io
|
293
294
|
licenses:
|
294
295
|
- BSD-2-Clause
|
data/.ci/files/env.gpg
DELETED
@@ -1 +0,0 @@
|
|
1
|
-
�
|
data/.ci/inc/install-openjdk.inc
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
|
2
|
-
function install_openjdk() {
|
3
|
-
OPENJDK_VERSION=$1
|
4
|
-
echo "Installing OpenJDK ${OPENJDK_VERSION}"
|
5
|
-
JDK_OS=linux
|
6
|
-
COMPONENTS_TO_STRIP=1 # e.g. openjdk-11.0.3+7/bin/java
|
7
|
-
DOWNLOAD_URL=$(curl --silent -X GET "https://api.adoptopenjdk.net/v3/assets/feature_releases/${OPENJDK_VERSION}/ga?architecture=x64&heap_size=normal&image_type=jdk&jvm_impl=hotspot&os=${JDK_OS}&page=0&page_size=1&project=jdk&sort_method=DEFAULT&sort_order=DESC&vendor=adoptopenjdk" \
|
8
|
-
-H "accept: application/json" \
|
9
|
-
| jq -r ".[0].binaries[0].package.link")
|
10
|
-
OPENJDK_ARCHIVE=$(basename ${DOWNLOAD_URL})
|
11
|
-
CACHE_DIR=${HOME}/.cache/openjdk
|
12
|
-
TARGET_DIR=${HOME}/openjdk${OPENJDK_VERSION}
|
13
|
-
mkdir -p ${CACHE_DIR}
|
14
|
-
mkdir -p ${TARGET_DIR}
|
15
|
-
if [ ! -e ${CACHE_DIR}/${OPENJDK_ARCHIVE} ]; then
|
16
|
-
echo "Downloading from ${DOWNLOAD_URL} to ${CACHE_DIR}"
|
17
|
-
curl --location --output ${CACHE_DIR}/${OPENJDK_ARCHIVE} "${DOWNLOAD_URL}"
|
18
|
-
else
|
19
|
-
echo "Skipped download, file ${CACHE_DIR}/${OPENJDK_ARCHIVE} already exists"
|
20
|
-
fi
|
21
|
-
tar --extract --file ${CACHE_DIR}/${OPENJDK_ARCHIVE} -C ${TARGET_DIR} --strip-components=${COMPONENTS_TO_STRIP}
|
22
|
-
export JAVA_HOME="${TARGET_DIR}"
|
23
|
-
export PATH="${TARGET_DIR}/bin:${PATH}"
|
24
|
-
java -version
|
25
|
-
echo "Java is available at ${TARGET_DIR}"
|
26
|
-
}
|