70 lines
1.8 KiB
Ruby
Executable File
70 lines
1.8 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
|
|
require 'fileutils'
|
|
require 'open3'
|
|
require 'pathname'
|
|
|
|
def git(*args)
|
|
system 'git', *args
|
|
exit $?.exitstatus unless $?.success?
|
|
end
|
|
|
|
repo_dir = Pathname(ARGV[0])
|
|
repo = ARGV[1]
|
|
|
|
puts 'Detecting changes…'
|
|
[
|
|
'.editorconfig',
|
|
'.gitattributes',
|
|
'.github/*.md',
|
|
'.github/*.yml',
|
|
'.github/actions/{automerge}/**/*',
|
|
'.github/ISSUE_TEMPLATE/*.md',
|
|
'.github/workflows/{automerge,cache,ci,dispatch-command,rebase,rerun-workflow,review,self-approve}.yml',
|
|
'.gitignore',
|
|
'.travis.yml',
|
|
'Casks/.rubocop.yml',
|
|
].each do |glob|
|
|
src_paths = Pathname.glob(glob)
|
|
dst_paths = Pathname.glob(repo_dir.join(glob))
|
|
|
|
dst_paths.each do |path|
|
|
FileUtils.rm_f path
|
|
end
|
|
|
|
src_paths.each do |path|
|
|
repo_dir.join(path.dirname).mkpath
|
|
FileUtils.cp path, repo_dir.join(path)
|
|
end
|
|
end
|
|
|
|
FileUtils.rm repo_dir.join('.github/ISSUE_TEMPLATE/02_feature_request.md')
|
|
|
|
workflow = File.read(repo_dir.join('.github/PULL_REQUEST_TEMPLATE.md'))
|
|
File.write repo_dir.join('.github/PULL_REQUEST_TEMPLATE.md'), workflow.gsub(/Homebrew\/homebrew-cask\/(pulls|issues|search)/, "#{repo}/\\1")
|
|
|
|
out, err, status = Open3.capture3('git', '-C', repo_dir.to_s, 'status', '--porcelain', '--ignore-submodules=dirty')
|
|
raise err unless status.success?
|
|
|
|
repo_changed = !out.chomp.empty?
|
|
|
|
unless repo_changed
|
|
puts 'No changed detected.'
|
|
exit
|
|
end
|
|
|
|
git '-C', repo_dir.to_s, 'add', '--all'
|
|
|
|
out, err, status = Open3.capture3('git', '-C', repo_dir.to_s, 'diff', '--name-only', '--staged')
|
|
raise err unless status.success?
|
|
|
|
modified_paths = out.lines.map(&:chomp)
|
|
|
|
modified_paths.each do |modified_path|
|
|
puts "Detected changes to #{modified_path}."
|
|
git '-C', repo_dir.to_s, 'commit', modified_path, '--message', "#{File.basename(modified_path)}: update to match main repo", '--quiet'
|
|
end
|
|
puts
|
|
|
|
puts '::set-output name=pull_request::true'
|