cartodb-4.42/script/sequel-model-lines.rb

52 lines
1.4 KiB
Ruby
Raw Normal View History

2024-04-06 13:25:13 +08:00
# Script to gather lines of code in Sequel Models
#
# Usage:
# ruby script/sequel-model-lines.rb
#
# The output is left in OUTPUT_FILE as a CSV
# Check constants for customizations.
require 'date'
require 'csv'
require 'fileutils'
START_DATE = Date.new(2015, 3, 1).freeze
END_DATE = Date.today.freeze
OUTPUT_FILE = '/tmp/sequel-loc.csv'
CHECKOUT_TEMP_DIR = '/tmp/sequel-loc'
begin
# Use a fresh clone
system "git clone https://github.com/CartoDB/cartodb.git #{CHECKOUT_TEMP_DIR}"
# Here's how to use the local repo instead of cloning through network
#src_dir = `git rev-parse --show-toplevel`.strip
#system "git clone #{src_dir} #{CHECKOUT_TEMP_DIR}"
Dir.chdir(CHECKOUT_TEMP_DIR) do
CSV.open(OUTPUT_FILE, 'w') do |csv|
# csv header
csv << ['date', 'commit', 'loc']
# Iterate by months
date = START_DATE
while date <= END_DATE do
# checkout specific revision
revision = `git rev-list -1 --before="#{date.to_s}" origin/master`.strip
system 'git clean -df' || exit
system "git checkout #{revision}" || exit
# Calculate lines of code of Sequel models
loc = `git grep -l 'class.*Sequel::Model' -- app/models | xargs cat | wc -l`.strip.to_i
csv << [date.to_s, revision, loc] unless loc == 0
date = date.next_month
end
end
end
ensure
FileUtils.remove_dir(CHECKOUT_TEMP_DIR, _force=true)
end