@@ -219,6 +219,55 @@ jobs:
219
219
- name : Check whether any tidying was needed
220
220
run : git diff --color --exit-code
221
221
222
+ check-license-headers :
223
+ name : check-license-headers (${{ matrix.module.path }})
224
+ needs : run-determination
225
+ if : needs.run-determination.outputs.result == 'true'
226
+ runs-on : ubuntu-latest
227
+
228
+ strategy :
229
+ fail-fast : false
230
+
231
+ matrix :
232
+ module :
233
+ - path : ./
234
+
235
+ steps :
236
+ - name : Checkout repository
237
+ uses : actions/checkout@v3
238
+
239
+ - name : Install Go
240
+ uses : actions/setup-go@v4
241
+ with :
242
+ go-version : ${{ env.GO_VERSION }}
243
+
244
+ - name : Check license headers
245
+ env :
246
+ GO_MODULE_PATH : ${{ matrix.module.path }}
247
+ run : |
248
+ # We read the template content and we modify the variadic date to be always 2000
249
+ LICENSE=$(cat ./license_header.tpl | sed "3s|.*|Copyright 2000 ARDUINO SA (http://www.arduino.cc/)|")
250
+ N_LINES=$(wc -l < ./license_header.tpl)
251
+ STATUS=0
252
+ for file in $(
253
+ find . \
254
+ -type d -name 'testdata' -prune -o \
255
+ -type d -name 'legacy' -prune -o \
256
+ -type f ! -name '*_grpc.pb.go' \
257
+ -type f ! -name 'json_easyjson.go' \
258
+ -type f ! -name 'index_easyjson.go' \
259
+ -regex ".*\.go$" -print
260
+ ); do
261
+ # We read only the license header, removing all the comments symbols and changing the date to be 2000. This will
262
+ # help us understand if the other part of the license are exactly the same as the template.
263
+ HEADER=$(head -n$N_LINES $file | sed -r 's| [0-9]{4} | 2000 |' | sed 's|// ||; s|^//||' )
264
+ if [ "$LICENSE" != "$HEADER" ]; then
265
+ STATUS=1
266
+ echo "$file"
267
+ fi
268
+ done
269
+ exit $STATUS
270
+
222
271
# Do a simple "smoke test" build for the modules with no other form of validation
223
272
build :
224
273
name : build (${{ matrix.module.path }})
0 commit comments