mirror of
https://github.com/yattee/yattee.git
synced 2026-02-19 17:29:45 +00:00
53 lines
1.3 KiB
Ruby
Executable File
53 lines
1.3 KiB
Ruby
Executable File
#!/usr/bin/env ruby
|
|
# frozen_string_literal: true
|
|
|
|
#
|
|
# Clean Weblate Credits JSON
|
|
#
|
|
# Strips sensitive data (emails, date_joined) from weblate-credits.json
|
|
# and replaces emails with pre-computed Gravatar MD5 hashes.
|
|
#
|
|
# Usage:
|
|
# ./bin/clean-weblate-credits
|
|
#
|
|
|
|
require 'json'
|
|
require 'digest'
|
|
|
|
# Change to project directory
|
|
Dir.chdir(File.expand_path('..', __dir__))
|
|
|
|
CREDITS_FILE = 'Yattee/weblate-credits.json'
|
|
|
|
unless File.exist?(CREDITS_FILE)
|
|
warn "Error: #{CREDITS_FILE} not found"
|
|
exit 1
|
|
end
|
|
|
|
# Read and parse the JSON
|
|
data = JSON.parse(File.read(CREDITS_FILE))
|
|
|
|
# Process each language entry
|
|
cleaned_data = data.map do |language_entry|
|
|
language_entry.transform_values do |contributors|
|
|
contributors.map do |contributor|
|
|
email = contributor['email'].to_s.strip.downcase
|
|
gravatar_hash = Digest::MD5.hexdigest(email)
|
|
|
|
{
|
|
'gravatar_hash' => gravatar_hash,
|
|
'username' => contributor['username'],
|
|
'full_name' => contributor['full_name'],
|
|
'change_count' => contributor['change_count']
|
|
}
|
|
end
|
|
end
|
|
end
|
|
|
|
# Write back to file with pretty formatting
|
|
File.write(CREDITS_FILE, JSON.pretty_generate(cleaned_data))
|
|
|
|
puts "Cleaned #{CREDITS_FILE}"
|
|
puts " - Removed email addresses (replaced with gravatar_hash)"
|
|
puts " - Removed date_joined fields"
|