gitlab-license_finder 6.14.2.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (180) hide show
  1. checksums.yaml +7 -0
  2. data/.force-build +0 -0
  3. data/.gitignore +13 -0
  4. data/.rspec +1 -0
  5. data/.rubocop.yml +70 -0
  6. data/CHANGELOG.md +981 -0
  7. data/CONTRIBUTING.md +121 -0
  8. data/Dockerfile +249 -0
  9. data/Gemfile +2 -0
  10. data/LICENSE +22 -0
  11. data/README.md +555 -0
  12. data/Rakefile +77 -0
  13. data/TODO.md +12 -0
  14. data/VERSION +1 -0
  15. data/appveyor.yml +21 -0
  16. data/bin/license_finder +6 -0
  17. data/bin/license_finder_pip.py +43 -0
  18. data/ci/pipelines/pull-request.yml.erb +141 -0
  19. data/ci/pipelines/release.yml.erb +200 -0
  20. data/ci/scripts/containerize-tests.sh +14 -0
  21. data/ci/scripts/pushscript.sh +32 -0
  22. data/ci/scripts/run-rubocop.sh +15 -0
  23. data/ci/scripts/run-tests.sh +24 -0
  24. data/ci/scripts/test.ps1 +81 -0
  25. data/ci/scripts/updateChangelog.sh +84 -0
  26. data/ci/tasks/build-and-push-gem.yml +10 -0
  27. data/ci/tasks/build-windows.yml +6 -0
  28. data/ci/tasks/build.yml +16 -0
  29. data/ci/tasks/rubocop.yml +15 -0
  30. data/ci/tasks/run-tests.yml +10 -0
  31. data/ci/tasks/update-changelog.yml +18 -0
  32. data/dlf +12 -0
  33. data/examples/Gemfile +4 -0
  34. data/examples/custom_erb_template.rb +24 -0
  35. data/examples/extract_license_data.rb +63 -0
  36. data/examples/sample_template.erb +7 -0
  37. data/lib/license_finder/cli/approvals.rb +28 -0
  38. data/lib/license_finder/cli/base.rb +107 -0
  39. data/lib/license_finder/cli/dependencies.rb +44 -0
  40. data/lib/license_finder/cli/ignored_dependencies.rb +32 -0
  41. data/lib/license_finder/cli/ignored_groups.rb +32 -0
  42. data/lib/license_finder/cli/inherited_decisions.rb +50 -0
  43. data/lib/license_finder/cli/licenses.rb +26 -0
  44. data/lib/license_finder/cli/main.rb +221 -0
  45. data/lib/license_finder/cli/makes_decisions.rb +38 -0
  46. data/lib/license_finder/cli/patched_thor.rb +33 -0
  47. data/lib/license_finder/cli/permitted_licenses.rb +32 -0
  48. data/lib/license_finder/cli/project_name.rb +32 -0
  49. data/lib/license_finder/cli/restricted_licenses.rb +32 -0
  50. data/lib/license_finder/cli.rb +20 -0
  51. data/lib/license_finder/configuration.rb +186 -0
  52. data/lib/license_finder/core.rb +118 -0
  53. data/lib/license_finder/decision_applier.rb +70 -0
  54. data/lib/license_finder/decisions.rb +312 -0
  55. data/lib/license_finder/decisions_factory.rb +13 -0
  56. data/lib/license_finder/diff.rb +51 -0
  57. data/lib/license_finder/license/any_matcher.rb +15 -0
  58. data/lib/license_finder/license/definitions.rb +366 -0
  59. data/lib/license_finder/license/header_matcher.rb +17 -0
  60. data/lib/license_finder/license/matcher.rb +24 -0
  61. data/lib/license_finder/license/none_matcher.rb +11 -0
  62. data/lib/license_finder/license/template.rb +19 -0
  63. data/lib/license_finder/license/templates/0BSD.txt +10 -0
  64. data/lib/license_finder/license/templates/Apache1_1.txt +16 -0
  65. data/lib/license_finder/license/templates/Apache2.txt +172 -0
  66. data/lib/license_finder/license/templates/BSD.txt +24 -0
  67. data/lib/license_finder/license/templates/CC01.txt +30 -0
  68. data/lib/license_finder/license/templates/CDDL1.txt +131 -0
  69. data/lib/license_finder/license/templates/EPL1.txt +86 -0
  70. data/lib/license_finder/license/templates/GPLv2.txt +339 -0
  71. data/lib/license_finder/license/templates/GPLv3.txt +674 -0
  72. data/lib/license_finder/license/templates/ISC.txt +2 -0
  73. data/lib/license_finder/license/templates/LGPL.txt +165 -0
  74. data/lib/license_finder/license/templates/LGPL2_1.txt +169 -0
  75. data/lib/license_finder/license/templates/MIT.txt +9 -0
  76. data/lib/license_finder/license/templates/MPL1_1.txt +469 -0
  77. data/lib/license_finder/license/templates/MPL2.txt +373 -0
  78. data/lib/license_finder/license/templates/NewBSD.txt +21 -0
  79. data/lib/license_finder/license/templates/OFL.txt +91 -0
  80. data/lib/license_finder/license/templates/Python.txt +47 -0
  81. data/lib/license_finder/license/templates/Ruby.txt +52 -0
  82. data/lib/license_finder/license/templates/SimplifiedBSD.txt +19 -0
  83. data/lib/license_finder/license/templates/WTFPL.txt +14 -0
  84. data/lib/license_finder/license/templates/Zlib.txt +17 -0
  85. data/lib/license_finder/license/text.rb +45 -0
  86. data/lib/license_finder/license.rb +117 -0
  87. data/lib/license_finder/license_aggregator.rb +59 -0
  88. data/lib/license_finder/logger.rb +69 -0
  89. data/lib/license_finder/package.rb +202 -0
  90. data/lib/license_finder/package_delta.rb +61 -0
  91. data/lib/license_finder/package_manager.rb +181 -0
  92. data/lib/license_finder/package_managers/bower.rb +37 -0
  93. data/lib/license_finder/package_managers/bundler.rb +110 -0
  94. data/lib/license_finder/package_managers/cargo.rb +38 -0
  95. data/lib/license_finder/package_managers/carthage.rb +68 -0
  96. data/lib/license_finder/package_managers/cocoa_pods.rb +61 -0
  97. data/lib/license_finder/package_managers/composer.rb +63 -0
  98. data/lib/license_finder/package_managers/conan.rb +28 -0
  99. data/lib/license_finder/package_managers/conda.rb +131 -0
  100. data/lib/license_finder/package_managers/dep.rb +43 -0
  101. data/lib/license_finder/package_managers/dotnet.rb +83 -0
  102. data/lib/license_finder/package_managers/erlangmk.rb +50 -0
  103. data/lib/license_finder/package_managers/glide.rb +36 -0
  104. data/lib/license_finder/package_managers/go_15vendorexperiment.rb +87 -0
  105. data/lib/license_finder/package_managers/go_dep.rb +80 -0
  106. data/lib/license_finder/package_managers/go_modules.rb +93 -0
  107. data/lib/license_finder/package_managers/go_workspace.rb +116 -0
  108. data/lib/license_finder/package_managers/govendor.rb +73 -0
  109. data/lib/license_finder/package_managers/gradle.rb +99 -0
  110. data/lib/license_finder/package_managers/gvt.rb +69 -0
  111. data/lib/license_finder/package_managers/maven.rb +65 -0
  112. data/lib/license_finder/package_managers/mix.rb +131 -0
  113. data/lib/license_finder/package_managers/npm.rb +57 -0
  114. data/lib/license_finder/package_managers/nuget.rb +154 -0
  115. data/lib/license_finder/package_managers/pip.rb +70 -0
  116. data/lib/license_finder/package_managers/pipenv.rb +63 -0
  117. data/lib/license_finder/package_managers/rebar.rb +65 -0
  118. data/lib/license_finder/package_managers/sbt.rb +50 -0
  119. data/lib/license_finder/package_managers/spm.rb +93 -0
  120. data/lib/license_finder/package_managers/trash.rb +43 -0
  121. data/lib/license_finder/package_managers/yarn.rb +107 -0
  122. data/lib/license_finder/package_utils/activation.rb +40 -0
  123. data/lib/license_finder/package_utils/conan_info_parser.rb +77 -0
  124. data/lib/license_finder/package_utils/gradle_dependency_finder.rb +15 -0
  125. data/lib/license_finder/package_utils/license_files.rb +41 -0
  126. data/lib/license_finder/package_utils/licensing.rb +39 -0
  127. data/lib/license_finder/package_utils/maven_dependency_finder.rb +15 -0
  128. data/lib/license_finder/package_utils/notice_files.rb +40 -0
  129. data/lib/license_finder/package_utils/possible_license_file.rb +27 -0
  130. data/lib/license_finder/package_utils/pypi.rb +41 -0
  131. data/lib/license_finder/package_utils/sbt_dependency_finder.rb +15 -0
  132. data/lib/license_finder/packages/bower_package.rb +42 -0
  133. data/lib/license_finder/packages/bundler_package.rb +33 -0
  134. data/lib/license_finder/packages/cargo_package.rb +28 -0
  135. data/lib/license_finder/packages/carthage_package.rb +18 -0
  136. data/lib/license_finder/packages/cocoa_pods_package.rb +22 -0
  137. data/lib/license_finder/packages/composer_package.rb +13 -0
  138. data/lib/license_finder/packages/conan_package.rb +23 -0
  139. data/lib/license_finder/packages/conda_package.rb +74 -0
  140. data/lib/license_finder/packages/erlangmk_package.rb +114 -0
  141. data/lib/license_finder/packages/go_package.rb +32 -0
  142. data/lib/license_finder/packages/gradle_package.rb +30 -0
  143. data/lib/license_finder/packages/manual_package.rb +27 -0
  144. data/lib/license_finder/packages/maven_package.rb +27 -0
  145. data/lib/license_finder/packages/merged_package.rb +44 -0
  146. data/lib/license_finder/packages/mix_package.rb +13 -0
  147. data/lib/license_finder/packages/npm_package.rb +171 -0
  148. data/lib/license_finder/packages/nuget_package.rb +13 -0
  149. data/lib/license_finder/packages/pip_package.rb +50 -0
  150. data/lib/license_finder/packages/rebar_package.rb +13 -0
  151. data/lib/license_finder/packages/sbt_package.rb +22 -0
  152. data/lib/license_finder/packages/spm_package.rb +18 -0
  153. data/lib/license_finder/packages/yarn_package.rb +13 -0
  154. data/lib/license_finder/platform.rb +15 -0
  155. data/lib/license_finder/project_finder.rb +62 -0
  156. data/lib/license_finder/report.rb +33 -0
  157. data/lib/license_finder/reports/csv_report.rb +99 -0
  158. data/lib/license_finder/reports/diff_report.rb +29 -0
  159. data/lib/license_finder/reports/erb_report.rb +58 -0
  160. data/lib/license_finder/reports/html_report.rb +13 -0
  161. data/lib/license_finder/reports/json_report.rb +30 -0
  162. data/lib/license_finder/reports/junit_report.rb +19 -0
  163. data/lib/license_finder/reports/markdown_report.rb +9 -0
  164. data/lib/license_finder/reports/merged_report.rb +16 -0
  165. data/lib/license_finder/reports/templates/bootstrap.css +9 -0
  166. data/lib/license_finder/reports/templates/html_report.erb +113 -0
  167. data/lib/license_finder/reports/templates/junit_report.erb +41 -0
  168. data/lib/license_finder/reports/templates/markdown_report.erb +49 -0
  169. data/lib/license_finder/reports/templates/xml_report.erb +19 -0
  170. data/lib/license_finder/reports/text_report.rb +12 -0
  171. data/lib/license_finder/reports/xml_report.rb +19 -0
  172. data/lib/license_finder/scanner.rb +83 -0
  173. data/lib/license_finder/shared_helpers/cmd.rb +13 -0
  174. data/lib/license_finder/shared_helpers/common_path.rb +29 -0
  175. data/lib/license_finder/version.rb +6 -0
  176. data/lib/license_finder.rb +14 -0
  177. data/license_finder.gemspec +72 -0
  178. data/release/instructions.md +8 -0
  179. data/swift-all-keys.asc +240 -0
  180. metadata +544 -0
@@ -0,0 +1,43 @@
1
+ #!/usr/bin/env python
2
+ import json
3
+ import sys
4
+
5
+ try:
6
+ from pip._internal.req import parse_requirements
7
+ except ImportError:
8
+ from pip.req import parse_requirements
9
+
10
+ try:
11
+ # since pip 19.3
12
+ from pip._internal.network.session import PipSession
13
+ except ImportError:
14
+ try:
15
+ # since pip 10
16
+ from pip._internal.download import PipSession
17
+ except ImportError:
18
+ from pip.download import PipSession
19
+
20
+ from pip._vendor import pkg_resources
21
+ from pip._vendor.six import print_
22
+
23
+
24
+ reqs = []
25
+ for req in parse_requirements(sys.argv[1], session=PipSession()):
26
+ try:
27
+ if req.req is not None and (req.markers is None or req.markers.evaluate()):
28
+ reqs.append(pkg_resources.Requirement.parse(str(req.req)))
29
+ except AttributeError:
30
+ # Since pip 20.1 (pip now takes care of markers at the resolve step)
31
+ if req.requirement is not None:
32
+ reqs.append(pkg_resources.Requirement.parse(str(req.requirement)))
33
+
34
+ transform = lambda dist: {
35
+ 'name': dist.project_name,
36
+ 'version': dist.version,
37
+ 'location': dist.location,
38
+ 'dependencies': list(map(lambda dependency: dependency.project_name, dist.requires())),
39
+ }
40
+
41
+
42
+ packages = [transform(dist) for dist in pkg_resources.working_set.resolve(reqs)]
43
+ print_(json.dumps(packages))
@@ -0,0 +1,141 @@
1
+ <% setup_slack = defined?(slack_url) && defined?(slack_channel) %>
2
+ <% ruby_versions = ruby_versions.split(',') %>
3
+
4
+ resource_types:
5
+ - name: pull-request
6
+ type: docker-image
7
+ source:
8
+ repository: teliaoss/github-pr-resource
9
+
10
+ <% if setup_slack %>
11
+ - name: slack-notification
12
+ type: registry-image
13
+ source:
14
+ repository: cfcommunity/slack-notification-resource
15
+ tag: latest
16
+ username: ((LicenseFinderDocker.username))
17
+ password: ((LicenseFinderDocker.password))
18
+ <% end %>
19
+
20
+ resources:
21
+ - name: github-pull-request
22
+ type: pull-request
23
+ check_every: 24h
24
+ webhook_token: ((GithubPullRequestWebhookToken))
25
+ source:
26
+ repository: pivotal/LicenseFinder
27
+ access_token: ((GithubApiPullRequestToken))
28
+
29
+ - name: dockerhub-pr
30
+ type: docker-image
31
+ source:
32
+ tag: edge-pr
33
+ repository: licensefinder/license_finder
34
+ email: ((LicenseFinderDockerEmail))
35
+ username: ((LicenseFinderDocker.username))
36
+ password: ((LicenseFinderDocker.password))
37
+
38
+ <% if setup_slack %>
39
+ - name: slack-alert
40
+ type: slack-notification
41
+ source:
42
+ url: <%= slack_url %>
43
+ <% end %>
44
+
45
+ jobs:
46
+ - name: build-docker-image
47
+ public: true
48
+ plan:
49
+ - get: github-pull-request
50
+ tags: ["private-worker"]
51
+ version: every
52
+ trigger: true
53
+ - put: dockerhub-pr
54
+ tags: ["private-worker"]
55
+ params:
56
+ build: github-pull-request
57
+ on_success:
58
+ put: github-pull-request
59
+ tags: ["private-worker"]
60
+ params:
61
+ path: github-pull-request
62
+ status: success
63
+ context: build-docker-image
64
+ on_failure:
65
+ put: github-pull-request
66
+ tags: ["private-worker"]
67
+ params:
68
+ path: github-pull-request
69
+ status: failure
70
+ context: build-docker-image
71
+ <% ruby_versions.each do |ruby_version| %>
72
+ - name: PR-ruby-<%= ruby_version %>-linux
73
+ public: true
74
+ plan:
75
+ - get: github-pull-request
76
+ tags: ["private-worker"]
77
+ passed: [build-docker-image]
78
+ version: every
79
+ - get: dockerhub-pr
80
+ tags: ["private-worker"]
81
+ passed: [build-docker-image]
82
+ trigger: true
83
+ - task: ruby-<%= ruby_version %>
84
+ tags: ["private-worker"]
85
+ privileged: true
86
+ image: dockerhub-pr
87
+ file: github-pull-request/ci/tasks/run-tests.yml
88
+ params:
89
+ RUBY_VERSION_UNDER_TEST: <%= ruby_version %>
90
+ input_mapping: { LicenseFinder: github-pull-request }
91
+ on_success:
92
+ put: github-pull-request
93
+ tags: ["private-worker"]
94
+ params:
95
+ path: github-pull-request
96
+ status: success
97
+ context: ruby-<%= ruby_version %>
98
+ on_failure:
99
+ put: github-pull-request
100
+ tags: ["private-worker"]
101
+ params:
102
+ path: github-pull-request
103
+ status: failure
104
+ context: ruby-<%= ruby_version %>
105
+ <% if setup_slack %>
106
+ on_failure:
107
+ put: slack-alert
108
+ tags: ["private-worker"]
109
+ params:
110
+ channel: '<%= slack_channel %>'
111
+ icon_emoji: ':crying_cat_face:'
112
+ text: '<%= "License Finder build failed. Build: https://norsk.cf-app.com/teams/main/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME" %>'
113
+ <% end %>
114
+ <% end %>
115
+
116
+ - name: PR-rubocop
117
+ public: true
118
+ plan:
119
+ - get: github-pull-request
120
+ tags: ["private-worker"]
121
+ trigger: true
122
+ version: every
123
+ - task: run-rubocop
124
+ tags: ["private-worker"]
125
+ privileged: true
126
+ file: github-pull-request/ci/tasks/rubocop.yml
127
+ input_mapping: { LicenseFinder: github-pull-request }
128
+ on_success:
129
+ put: github-pull-request
130
+ tags: ["private-worker"]
131
+ params:
132
+ path: github-pull-request
133
+ status: success
134
+ context: run-rubocop
135
+ on_failure:
136
+ put: github-pull-request
137
+ tags: ["private-worker"]
138
+ params:
139
+ path: github-pull-request
140
+ status: failure
141
+ context: run-rubocop
@@ -0,0 +1,200 @@
1
+ <% setup_slack = defined?(slack_url) && defined?(slack_channel) %>
2
+ <% ruby_versions = ruby_versions.split(',') %>
3
+
4
+ resource_types:
5
+ <% if setup_slack %>
6
+ - name: slack-notification
7
+ type: registry-image
8
+ source:
9
+ repository: cfcommunity/slack-notification-resource
10
+ tag: latest
11
+ username: ((LicenseFinderDocker.username))
12
+ password: ((LicenseFinderDocker.password))
13
+ <% end %>
14
+
15
+ resources:
16
+ - name: lf-git
17
+ type: git
18
+ source:
19
+ uri: git@github.com:pivotal/LicenseFinder.git
20
+ private_key: ((CfOslBot.private_key))
21
+ branch: master
22
+ ignore_paths: [VERSION, CHANGELOG.md]
23
+
24
+ - name: semver-version
25
+ type: semver
26
+ source:
27
+ driver: gcs
28
+ bucket: lf-semver-version
29
+ key: version
30
+ json_key: ((GCPQueuedReportsBucketCredentials))
31
+
32
+ - name: dockerhub-edge
33
+ type: docker-image
34
+ source:
35
+ tag: edge
36
+ repository: licensefinder/license_finder
37
+ email: ((LicenseFinderDockerEmail))
38
+ username: ((LicenseFinderDocker.username))
39
+ password: ((LicenseFinderDocker.password))
40
+
41
+ - name: dockerhub
42
+ type: docker-image
43
+ source:
44
+ repository: licensefinder/license_finder
45
+ email: ((LicenseFinderDockerEmail))
46
+ username: ((LicenseFinderDocker.username))
47
+ password: ((LicenseFinderDocker.password))
48
+
49
+ - name: lf-release
50
+ type: github-release
51
+ check_every: 24h
52
+ source:
53
+ owner: pivotal
54
+ repository: LicenseFinder
55
+ access_token: ((GithubApiRootToken))
56
+
57
+ <% if setup_slack %>
58
+ - name: slack-alert
59
+ type: slack-notification
60
+ source:
61
+ url: <%= slack_url %>
62
+ <% end %>
63
+
64
+ jobs:
65
+ - name: build-docker-image
66
+ public: true
67
+ plan:
68
+ - get: lf-git
69
+ tags: ["private-worker"]
70
+ trigger: true
71
+ - put: dockerhub-edge
72
+ tags: ["private-worker"]
73
+ params:
74
+ build: lf-git
75
+
76
+ <% ruby_versions.each do |ruby_version| %>
77
+ - name: ruby-<%= ruby_version %>
78
+ public: true
79
+ plan:
80
+ - get: dockerhub-edge
81
+ tags: ["private-worker"]
82
+ passed: [build-docker-image]
83
+ trigger: true
84
+ - get: LicenseFinder
85
+ tags: ["private-worker"]
86
+ resource: lf-git
87
+ passed: [build-docker-image]
88
+ version: every
89
+ - task: ruby-<%= ruby_version %>
90
+ tags: ["private-worker"]
91
+ privileged: true
92
+ image: dockerhub-edge
93
+ file: LicenseFinder/ci/tasks/run-tests.yml
94
+ params:
95
+ RUBY_VERSION_UNDER_TEST: <%= ruby_version %>
96
+
97
+ <% if setup_slack %>
98
+ on_failure:
99
+ put: slack-alert
100
+ tags: ["private-worker"]
101
+ params:
102
+ channel: '<%= slack_channel %>'
103
+ icon_emoji: ':crying_cat_face:'
104
+ text: '<%= "License Finder build failed. Build: https://norsk.cf-app.com/teams/main/pipelines/$BUILD_PIPELINE_NAME/jobs/$BUILD_JOB_NAME/builds/$BUILD_NAME" %>'
105
+ <% end %>
106
+ <% end %>
107
+
108
+ - name: rubocop
109
+ public: true
110
+ plan:
111
+ - get: dockerhub-edge
112
+ tags: ["private-worker"]
113
+ passed: [build-docker-image]
114
+ trigger: true
115
+ - get: LicenseFinder
116
+ tags: ["private-worker"]
117
+ resource: lf-git
118
+ version: every
119
+ passed: [build-docker-image]
120
+ - task: run-rubocop
121
+ tags: ["private-worker"]
122
+ privileged: true
123
+ file: LicenseFinder/ci/tasks/rubocop.yml
124
+ input_mapping: { LicenseFinder: LicenseFinder }
125
+
126
+ - name: bump-major
127
+ plan:
128
+ - get: semver-version
129
+ tags: ["private-worker"]
130
+ params: {bump: major}
131
+ - put: semver-version
132
+ tags: ["private-worker"]
133
+ params: {file: semver-version/version}
134
+
135
+
136
+ - name: bump-minor
137
+ plan:
138
+ - get: semver-version
139
+ tags: ["private-worker"]
140
+ params: {bump: minor}
141
+ - put: semver-version
142
+ tags: ["private-worker"]
143
+ params: {file: semver-version/version}
144
+
145
+ - name: bump-patch
146
+ plan:
147
+ - get: semver-version
148
+ tags: ["private-worker"]
149
+ params: {bump: patch}
150
+ - put: semver-version
151
+ tags: ["private-worker"]
152
+ params: {file: semver-version/version}
153
+
154
+ - name: release
155
+ disable_manual_trigger: true
156
+ plan:
157
+ - get: lf-git
158
+ tags: ["private-worker"]
159
+ passed: [<%= "#{ruby_versions.map{ |version| "ruby-#{version}" unless version == "jruby-9.2.14.0" }.compact.join(', ') }, rubocop" %>]
160
+ - get: semver-version
161
+ tags: ["private-worker"]
162
+ trigger: true
163
+ - get: dockerhub
164
+ tags: ["private-worker"]
165
+ params:
166
+ save: true
167
+ - get: lf-release
168
+ tags: ["private-worker"]
169
+ - task: update-changelog
170
+ tags: ["private-worker"]
171
+ image: dockerhub
172
+ params:
173
+ GIT_USERNAME: ((GithubApiUser))
174
+ GIT_EMAIL: ((GithubApiEmail))
175
+ file: lf-git/ci/tasks/update-changelog.yml
176
+ - put: dockerhub
177
+ tags: ["private-worker"]
178
+ params:
179
+ build: lf-git-changed
180
+ tag: version/version.txt
181
+ tag_as_latest: true
182
+ - put: lf-git
183
+ tags: ["private-worker"]
184
+ params:
185
+ repository: lf-git-changed
186
+ - task: build-and-push-gem
187
+ tags: ["private-worker"]
188
+ image: dockerhub
189
+ params:
190
+ GIT_USERNAME: ((GithubApiUser))
191
+ GIT_EMAIL: ((GithubApiEmail))
192
+ GIT_PRIVATE_KEY: ((CfOslBot.private_key))
193
+ GEM_API_KEY: ((LicenseFinderGemApiKey))
194
+ file: lf-git/ci/tasks/build-and-push-gem.yml
195
+ - put: lf-release
196
+ tags: ["private-worker"]
197
+ params:
198
+ name: version/tag.txt
199
+ tag: version/tag.txt
200
+ body: version/changelog.txt
@@ -0,0 +1,14 @@
1
+ #!/bin/bash
2
+
3
+ set -e
4
+
5
+ apk update && apk add git
6
+ source /opt/resource/common.sh
7
+ start_docker 3 3
8
+
9
+ pushd LicenseFinder
10
+ docker build . -t licensefinder/license_finder
11
+
12
+ docker run -v $PWD:/lf -it licensefinder/license_finder /bin/bash \
13
+ -exli /lf/ci/scripts/run-tests.sh "$RUBY_VERSION_UNDER_TEST"
14
+ popd
@@ -0,0 +1,32 @@
1
+ #!/bin/bash
2
+
3
+ echo -e "---\n:rubygems_api_key: $GEM_API_KEY" > ~/.gem/credentials
4
+ chmod 0600 ~/.gem/credentials
5
+
6
+ build_version="$(cat semver-version/version)"
7
+ cd lf-git
8
+ built_gem="pkg/license_finder-$build_version.gem"
9
+
10
+ git config --global user.email $GIT_EMAIL
11
+ git config --global user.name $GIT_USERNAME
12
+
13
+ git config --global push.default simple
14
+
15
+ git checkout master
16
+
17
+ mkdir ~/.ssh
18
+ ssh-keyscan github.com >> ~/.ssh/known_hosts
19
+ eval "$(ssh-agent -s)"
20
+ echo "$GIT_PRIVATE_KEY" > ~/.ssh/id_rsa
21
+ chmod 600 ~/.ssh/id_rsa
22
+ ssh-add -k ~/.ssh/id_rsa
23
+
24
+ if [ -z "$(gem fetch license_finder -v $build_version 2>&1 | grep ERROR)" ]; then
25
+ echo "LicenseFinder-$build_version already exists on Rubygems"
26
+ else
27
+ rake release
28
+ fi
29
+
30
+ export EXIT_STATUS=$?
31
+ kill $(ps aux | grep ssh-agent | head -n 1 | awk '{print $2}')
32
+ exit $EXIT_STATUS
@@ -0,0 +1,15 @@
1
+ #!/bin/bash -e
2
+
3
+ cd LicenseFinder
4
+
5
+ gem update --system
6
+ bundle install --without runtime default
7
+
8
+ rubocop_version=`cat Gemfile.lock | grep ' rubocop' | awk -F'[\(*\)]' '{print $2;exit}'`
9
+ rubocop_performance_version=`cat Gemfile.lock | grep ' rubocop-performance' | awk -F'[\(*\)]' '{print $2;exit}'`
10
+
11
+ gem install rubocop --version $rubocop_version
12
+ gem install rubocop-performance --version $rubocop_performance_version
13
+
14
+ echo "Running Rubocop ..."
15
+ /usr/local/bundle/bin/rubocop --require rubocop-performance
@@ -0,0 +1,24 @@
1
+ #!/bin/bash -elx
2
+
3
+ set -o pipefail
4
+
5
+ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
6
+ PROJECT_ROOT="$( dirname "$( dirname $DIR )" )"
7
+
8
+ pushd "$PROJECT_ROOT"
9
+
10
+ rvm install --default $RUBY_VERSION_UNDER_TEST
11
+ ruby --version
12
+
13
+ export GOPATH=$HOME/go
14
+ export RUBYOPT='-E utf-8'
15
+
16
+ gem update --system
17
+ gem install bundler
18
+ bundle install
19
+
20
+ bundle exec rake install
21
+ bundle exec rake spec
22
+
23
+ bundle exec rake features
24
+ popd
@@ -0,0 +1,81 @@
1
+ Set-PSDebug -strict # "set -u"
2
+ $ErrorActionPreference = "Stop" # "set -e" for cmdlet errors
3
+
4
+ # avoid overly narrow default linewrap
5
+ $term = (get-host).ui.rawui
6
+ $size = $term.buffersize
7
+ $size.width = 128
8
+ $term.buffersize = $size
9
+ $size = $term.windowsize
10
+ $size.width = 128
11
+ $term.windowsize = $size
12
+
13
+ function stream-cmd {
14
+ param ($command, $arguments)
15
+ $cmdline = "$($command) $($arguments)"
16
+ cmd /c $cmdline
17
+ if (-not ($?)) {
18
+ throw "$($cmdline) failed"
19
+ }
20
+ }
21
+
22
+ function prepend-path {
23
+ param ($dir)
24
+ $env:PATH = $dir + ";" + $env:PATH
25
+ }
26
+
27
+ function prepare-vm {
28
+ iex ((New-Object System.Net.WebClient).DownloadString('https://chocolatey.org/install.ps1'))
29
+ choco install -y git ruby nodejs golang python2 erlang gradle maven
30
+
31
+ $env:JAVA_HOME = 'C:\Program Files\Java\jdk1.8.0_144'
32
+ prepend-path 'C:\Program Files\Java\jdk1.8.0_144\bin'
33
+ prepend-path 'C:\tools\go\bin'
34
+ prepend-path 'C:\Program Files\Git\bin'
35
+ prepend-path 'C:\Program Files\erl9.0\bin'
36
+ stream-cmd "rmdir" "/s /q C:\rebar"
37
+ stream-cmd "git" "clone https://github.com/rebar/rebar C:\rebar"
38
+ stream-cmd "cd c:\rebar & .\bootstrap.bat" ""
39
+ stream-cmd "cp" "c:\rebar\rebar c:\tools"
40
+ stream-cmd "cp" "c:\rebar\rebar.cmd c:\tools"
41
+ prepend-path 'C:\tools'
42
+ mkdir -Force 'C:\Go'
43
+ mkdir -Force 'C:\Windows\system32\config\systemprofile\AppData\Local\Temp'
44
+ $env:GOPATH = 'C:\Go'
45
+ prepend-path 'C:\Go\bin'
46
+ stream-cmd "go" "get -d github.com/tools/godep"
47
+ prepend-path 'C:\Python27\Scripts'
48
+ prepend-path 'C:\Program Files\nodejs'
49
+ stream-cmd "npm" "install bower -g"
50
+ cp 'C:\Windows\System32\config\systemprofile\AppData\Roaming\npm\bower.cmd' 'C:\Program Files\nodejs'
51
+ cp -r 'C:\Windows\System32\config\systemprofile\AppData\Roaming\npm\node_modules\bower\*' 'C:\Program Files\nodejs\node_modules\bower' -Force
52
+ prepend-path 'C:\Ruby23\bin'
53
+ prepend-path 'C:\ProgramData\chocolatey\lib\gradle\tools\gradle-3.4.1\bin'
54
+ prepend-path 'C:\ProgramData\chocolatey\lib\maven\apache-maven-3.5.0\bin'
55
+ }
56
+
57
+ function set-env-vars {
58
+ prepend-path 'C:\Program Files\Java\jdk1.8.0_144\bin'
59
+ prepend-path 'C:\tools\go\bin'
60
+ prepend-path 'C:\Program Files\Git\bin'
61
+ prepend-path 'C:\Program Files\erl9.0\bin'
62
+ prepend-path 'C:\tools'
63
+ prepend-path 'C:\Go\bin'
64
+ prepend-path 'C:\Python27\Scripts'
65
+ prepend-path 'C:\Program Files\nodejs'
66
+ prepend-path 'C:\Ruby23\bin'
67
+ }
68
+
69
+ function run-tests {
70
+ set-env-vars
71
+ push-location LicenseFinder
72
+ stream-cmd "gem" "install bundler"
73
+ stream-cmd "bundle" "install"
74
+ stream-cmd "bundle" "exec rake install"
75
+ stream-cmd "bundle" "exec rake spec"
76
+ stream-cmd "bundle" "exec rake features"
77
+ pop-location
78
+ }
79
+
80
+ prepare-vm
81
+ run-tests
@@ -0,0 +1,84 @@
1
+ #!/bin/bash --login
2
+
3
+ set -e
4
+
5
+ git clone lf-git lf-git-changed
6
+
7
+ CHANGELOG_FILE="CHANGELOG.md"
8
+ VERSION_FILE="VERSION"
9
+
10
+ COMMIT_URL="https://github.com/pivotal/LicenseFinder/commit/"
11
+
12
+ TAGS=( "Added" "ADDED" "Fixed" "FIXED" "Changed" "CHANGED" "Deprecated" "DEPRECATED" "Removed" "REMOVED" "Security" "SECURITY" )
13
+ CONTRIBUTORS=( "Shane Lattanzio" "Li Tai" "Vikram Yadav" "Mark Fiorvanti" "Serafima Ostrovskaya" "Yoon Jean Kim" "Tony Wong" "Parv Mital" )
14
+
15
+ OLD="v$(cat ./lf-release/version)"
16
+ VERSION="$(cat semver-version/version)"
17
+ VERSION_TAG="v$VERSION"
18
+
19
+ # Add version title information
20
+ LOG=$(echo "# [$VERSION] / $(date +%Y-%m-%d)\n")
21
+
22
+ cd lf-git-changed
23
+
24
+ for ((i = 0; i < ${#TAGS[@]}; i++)); do
25
+ if [[ $i -gt 0 ]]; then
26
+ TAG_COMPARE=$(echo "${TAGS[$i]}" | grep -qi "${TAGS[$i - 1]}" && echo same || echo different)
27
+ HEADER_EXISTS=$(echo "$LOG" | grep -qi "${TAGS[$i - 1]}" && echo exists || echo dne)
28
+ fi
29
+
30
+ GIT_LOG=$'\n'$(git log "$OLD"...HEAD --pretty=format:"%H%n%s - [%h]($COMMIT_URL%H) - %an%n%n"| grep -E "\[${TAGS[$i]}\] .*" | sort | sed -e "s/\[${TAGS[$i]}\]/\*/g")
31
+
32
+ # Only add section information if it has content
33
+ if [[ $i -ne $[${#TAGS[@]}-1] && $GIT_LOG =~ "." && $i -gt 0 && "$TAG_COMPARE" == "same" && "$HEADER_EXISTS" == "exists" ]]; then
34
+ LOG="$LOG""$GIT_LOG\n"
35
+ elif [[ $GIT_LOG =~ "." ]]; then
36
+ if [[ $i -gt 0 && "$TAG_COMPARE" == "same" && "$HEADER_EXISTS" == "dne" ]]; then
37
+ LOG="$LOG"$'\n'$(echo "### ${TAGS[$i - 1]}")"$GIT_LOG\n"
38
+ else
39
+ LOG="$LOG"$'\n'$(echo "### ${TAGS[$i]}")"$GIT_LOG\n"
40
+ fi
41
+ fi
42
+ done
43
+
44
+ # Strip Pivotal contributors
45
+ for ((i = 0; i < ${#CONTRIBUTORS[@]}; i++)); do
46
+ LOG=$(echo "$LOG" | sed -e "s/-* ${CONTRIBUTORS[$i]}//g")
47
+ done
48
+
49
+ # Prepend new version information at the top of the file
50
+ echo -e "$LOG\n$(cat $CHANGELOG_FILE)" > $CHANGELOG_FILE
51
+
52
+ # Append version hyperlink to the end of the file
53
+ echo -e "[$VERSION]: https://github.com/pivotal/LicenseFinder/compare/$OLD...$VERSION_TAG" >> $CHANGELOG_FILE
54
+
55
+ # Update version file in git
56
+ echo $VERSION > $VERSION_FILE
57
+
58
+ git config --global user.email $GIT_EMAIL
59
+ git config --global user.name $GIT_USERNAME
60
+
61
+ git add $CHANGELOG_FILE
62
+ git add $VERSION_FILE
63
+
64
+ git commit -m "Update changelog for version: $VERSION"
65
+
66
+ echo "New version: $VERSION"
67
+ echo "Current version: $OLD"
68
+
69
+ if [ "$VERSION" == "$OLD" ]; then
70
+ echo "Error: Version in VERSION file is identical to latest release on github"
71
+ exit 1
72
+ fi
73
+
74
+ body=$(cat "$CHANGELOG_FILE" | sed -n "/# \[$VERSION\]/,/# \[[\d\.]*/p" | sed '$d' | tail -n +2)
75
+
76
+ echo "$VERSION_TAG" > ../version/tag.txt
77
+ echo "$VERSION" > ../version/version.txt
78
+ echo "$body" > ../version/changelog.txt
79
+
80
+ echo "Tag: $VERSION_TAG"
81
+ echo "Version: $VERSION"
82
+ echo "Body: $body"
83
+
84
+ exit 0
@@ -0,0 +1,10 @@
1
+ ---
2
+ platform: linux
3
+ inputs:
4
+ - name: lf-git
5
+ - name: semver-version
6
+ run:
7
+ path: bash
8
+ args:
9
+ - "-lc"
10
+ - lf-git/ci/scripts/pushscript.sh
@@ -0,0 +1,6 @@
1
+ platform: windows
2
+ inputs:
3
+ - name: LicenseFinder
4
+ run:
5
+ path: powershell
6
+ args: ["-File", "LicenseFinder/ci/scripts/test.ps1"]
@@ -0,0 +1,16 @@
1
+ platform: linux
2
+
3
+ image_resource:
4
+ type: docker-image
5
+ source:
6
+ repository: concourse/docker-image-resource
7
+ tag: latest
8
+
9
+ inputs:
10
+ - name: LicenseFinder
11
+
12
+ run:
13
+ path: ./LicenseFinder/ci/scripts/containerize-tests.sh
14
+
15
+ params:
16
+ RUBY_VERSION_UNDER_TEST:
@@ -0,0 +1,15 @@
1
+ platform: linux
2
+
3
+ image_resource:
4
+ type: registry-image
5
+ source:
6
+ repository: ruby
7
+ tag: 2.7.1
8
+ username: ((LicenseFinderDocker.username))
9
+ password: ((LicenseFinderDocker.password))
10
+
11
+ inputs:
12
+ - name: LicenseFinder
13
+
14
+ run:
15
+ path: ./LicenseFinder/ci/scripts/run-rubocop.sh