#!/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