Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
96 changes: 49 additions & 47 deletions tools/maintenance/copyright_update.rb
Original file line number Diff line number Diff line change
Expand Up @@ -4,52 +4,54 @@
# Set up logging
@log = Logger.new(STDOUT)
@log.level = Logger::INFO
log_file = File.open('copyright_update.log', 'w')
@log_file_logger = Logger.new(log_file)
@log_file_logger.level = Logger::INFO

def update_copyright(file_path, copyright_pattern, new_copyright)
@log.info("Processing file: #{file_path}")
@log_file_logger.info("Processing file: #{file_path}")

content = File.read(file_path)
if content.empty?
@log.info("File is empty, no copyright update needed: #{file_path}")
@log_file_logger.info("File is empty, no copyright update needed: #{file_path}")
elsif content.match?(copyright_pattern)
updated_content = content.gsub(copyright_pattern, "\\1#{new_copyright}")
if updated_content != content
File.write(file_path, updated_content)
@log.info("Updated copyright in #{file_path}")
@log_file_logger.info("Updated copyright in #{file_path}")
@log_file_logger = nil

File.open('copyright_update.log', 'w') do |log_file|
@log_file_logger = Logger.new(log_file)
@log_file_logger.level = Logger::INFO

def update_copyright(file_path, copyright_pattern, new_copyright)
@log.info("Processing file: #{file_path}")
@log_file_logger.info("Processing file: #{file_path}")

content = File.read(file_path)
if content.empty?
@log.info("File is empty, no copyright update needed: #{file_path}")
@log_file_logger.info("File is empty, no copyright update needed: #{file_path}")
elsif content.match?(copyright_pattern)
updated_content = content.gsub(copyright_pattern, "\\1#{new_copyright}")
if updated_content != content
File.write(file_path, updated_content)
@log.info("Updated copyright in #{file_path}")
@log_file_logger.info("Updated copyright in #{file_path}")
end
else
@log.warn("Copyright pattern not found in #{file_path}")
@log_file_logger.warn("Copyright pattern not found in #{file_path}")
end
else
@log.warn("Copyright pattern not found in #{file_path}")
@log_file_logger.warn("Copyright pattern not found in #{file_path}")
rescue => e
@log.error("Error processing file #{file_path}: #{e.message}")
@log_file_logger.error("Error processing file #{file_path}: #{e.message}")
end
rescue => e
@log.error("Error processing file #{file_path}: #{e.message}")
@log_file_logger.error("Error processing file #{file_path}: #{e.message}")
end

# Regex to match "Copyright (c) 2006-YYYY" or "(C) 2006-YYYY"
# Captures the prefix so we can replace only the year part if needed,
# or better yet, replace the whole match but preserve the "Copyright (c)" part.
copyright_pattern = /((?:Copyright \(c\) |\(C\) )2006-)20\d{2}/
new_year = '2026'

Dir.glob("../../**/*.{rb,js,yaml,html,md,txt,css,c,nasm,java,php,as}").each do |file|
next if File.basename(file) == 'copyright_update.rb'
update_copyright(file, copyright_pattern, new_year)
end

# Handle files without extensions, excluding copyright_update.rb
Dir.glob("../../**/*").reject { |f|
File.directory?(f) || File.extname(f) != '' || File.basename(f) == 'copyright_update.rb'
}.each do |file|
update_copyright(file, copyright_pattern, new_year)
end

@log.info("Copyright update process completed.")
@log_file_logger.info("Copyright update process completed.")
log_file.close

# Regex to match "Copyright (c) 2006-YYYY" or "(C) 2006-YYYY"
# Captures the prefix so we can replace only the year part if needed,
# or better yet, replace the whole match but preserve the "Copyright (c)" part.
copyright_pattern = /((?:Copyright \(c\) |\(C\) )2006-)20\d{2}/
new_year = '2026'

Dir.glob("../../**/*.{rb,js,yaml,html,md,txt,css,c,nasm,java,php,as}").each do |file|
next if File.basename(file) == 'copyright_update.rb'
update_copyright(file, copyright_pattern, new_year)
end

# Handle files without extensions, excluding copyright_update.rb
Dir.glob("../../**/*").reject { |f|
File.directory?(f) || File.extname(f) != '' || File.basename(f) == 'copyright_update.rb'
}.each do |file|
update_copyright(file, copyright_pattern, new_year)
end

@log.info("Copyright update process completed.")
@log_file_logger.info("Copyright update process completed.")
end