Browse Source

ci: Add license header check for pull requests

Co-Authored-By: OpenSauce <48618519+opensauce04@users.noreply.github.com>
pull/15/merge
Briar 9 months ago
parent
commit
7f824522d5
  1. 47
      .ci/license-header.rb
  2. 22
      .github/workflows/license-header.yml

47
.ci/license-header.rb

@ -0,0 +1,47 @@
#!/usr/bin/ruby
# frozen_string_literal: true
license_header = <<~EOF
// SPDX-FileCopyrightText: Copyright yuzu/Citra Emulator Project / Eden Emulator Project
// SPDX-License-Identifier: GPL-3.0-or-later
EOF
print 'Getting branch changes...'
branch_name = `git rev-parse --abbrev-ref HEAD`.chomp
branch_commits = `git log #{branch_name} --not master --pretty=format:"%h"`.split("\n")
branch_commit_range = "#{branch_commits[-1]}^..#{branch_commits[0]}"
branch_changed_files = `git diff-tree --no-commit-id --name-only #{branch_commit_range} -r`.split("\n")
puts 'done'
print 'Checking files...'
issue_files = []
branch_changed_files.each do |file_name|
if file_name.end_with?('.cpp', '.h', '.kt', '.kts') and File.file?(file_name)
file_content = File.read(file_name)
if not file_content.start_with?(license_header)
issue_files.push(file_name)
end
end
end
puts 'done'
if issue_files.empty?
puts "\nAll changed files have correct headers"
exit 0
end
puts <<-EOF
The following #{issue_files.length} files have incorrect license headers:
#{issue_files.join("\n")}
The following license header should be added to the start of all offending files:
=== BEGIN ===
#{license_header}
=== END ===
If some of the code in this PR is not being contributed by the original author, the files which have been exclusively changed by that code can be ignored.
If this happens, this PR requirement can be bypassed once all other files are addressed.
EOF
exit 1

22
.github/workflows/license-header.yml

@ -0,0 +1,22 @@
name: eden-license
on:
pull_request:
branches: [ master ]
jobs:
license-header:
runs-on: ubuntu-latest
container:
image: opensauce04/lime3ds-build:latest
options: -u 1001
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Fetch master branch
run: git fetch origin master:master
- name: Make script executable
run: chmod +x ./.ci/license-header.rb
- name: Check license headers
run: ./.ci/license-header.rb
Loading…
Cancel
Save