Change soft-fail to use the config, rather than env
[rbx.git] / rakelib / git_task.rb
blob814c0238f5ace941e4ed27966c0bdcf57528b7f4
1 require 'date'
2 require 'time'
4 $dates=(Date.parse($first_date)..(Date.today-1)).map { |d| d.to_s }
5 $git_dir = File.join $stats_dir, "proj"
6 $revisions = nil
8 def git_revisions
9   unless $revisions then
10     $revisions, all, min = {}, {}, Time.parse($first_date)
11     
12     `git log --pretty=format:"%ci: %H"`.each do |line|
13       time, hash = line.split(/: /)
14       raise "line = #{line}" unless time and hash
15       time = Time.parse(time).utc
16       next if time < min
17       all[time] = hash
18     end
20     all.sort.each do |time, hash|
21       key = time.strftime("%Y-%m-%d")
22       next if $revisions.has_key? key
23       $revisions[key] = hash
24       last = hash
25     end
27     backfill = nil
28     $dates.each do |date|
29       $revisions[date] ||= backfill
30       backfill = $revisions[date]
31     end
32   end
34   $revisions
35 end
37 def git_task type, &block
38   task :collect => $dates.map { |date| File.join $stats_dir, "#{date}.#{type}" }
40   rule ".#{type}" do |t|
41     file = t.name
42     date = file[/\d\d\d\d-\d\d-\d\d/]
43     hash = git_revisions[date]
44     File.open file, 'w' do |f|
45       Dir.chdir $git_dir do
46         warn date
47         sh "git checkout -q #{hash}"
48         block[f, date]
49       end
50     end
51   end
52 end