luis@970
|
1 # this script will get stats from the repo and print them to stdout
|
luis@970
|
2
|
luis@970
|
3 # USAGE:
|
luis@970
|
4
|
luis@970
|
5 # ./script/runner -e production extra/soundsoftware/get-statistics.rb
|
luis@970
|
6 #
|
luis@970
|
7
|
luis@970
|
8 d1 = Date.parse("20101201") # => 1 Dec 2010
|
luis@970
|
9 d2 = Date.today
|
luis@970
|
10
|
luis@970
|
11 def months_between(d1, d2)
|
luis@970
|
12 months = []
|
luis@970
|
13 start_date = Date.civil(d1.year, d1.month, 1)
|
luis@970
|
14 end_date = Date.civil(d2.year, d2.month, 1)
|
luis@970
|
15
|
luis@970
|
16 raise ArgumentError unless d1 <= d2
|
luis@970
|
17
|
luis@970
|
18 while (start_date < end_date)
|
luis@970
|
19 months << start_date
|
luis@970
|
20 start_date = start_date >>1
|
luis@970
|
21 end
|
luis@970
|
22
|
luis@970
|
23 months << end_date
|
luis@970
|
24 end
|
luis@970
|
25
|
luis@970
|
26 def weeks_between(d1, d2)
|
luis@970
|
27 weeks = []
|
luis@970
|
28 start_date = Date.civil(d1.year, d1.month, 1)
|
luis@970
|
29 end_date = Date.civil(d2.year, d2.month, 1)
|
luis@970
|
30
|
luis@970
|
31 raise ArgumentError unless d1 <= d2
|
luis@970
|
32
|
luis@970
|
33 while (start_date < end_date)
|
luis@970
|
34 weeks << start_date
|
luis@970
|
35 start_date = start_date + 1.week
|
luis@970
|
36 end
|
luis@970
|
37
|
luis@970
|
38 weeks << end_date
|
luis@970
|
39 end
|
luis@970
|
40
|
luis@970
|
41
|
luis@970
|
42 users = []
|
luis@970
|
43 # dates = months_between(d1, d2)
|
luis@970
|
44 dates = weeks_between(d1, d2)
|
luis@970
|
45 private_projects = []
|
luis@970
|
46 all_projects = []
|
luis@970
|
47 public_projects = []
|
luis@970
|
48 top_level_and_private_projects = []
|
luis@970
|
49
|
luis@970
|
50
|
luis@970
|
51 dates.each do |date|
|
luis@970
|
52 users << User.find(:all, :conditions => {:created_on => d1..date})
|
luis@970
|
53 all_projects << Project.find(:all, :conditions => {:created_on => d1..date})
|
luis@970
|
54 private_projects << Project.find(:all, :conditions => {:created_on => d1..date,
|
luis@970
|
55 :is_public => false})
|
luis@970
|
56 top_level_and_private_projects << Project.find(:all, :conditions => {:created_on => d1..date,
|
luis@970
|
57 :is_public => false,
|
luis@970
|
58 :parent_id => nil})
|
luis@970
|
59
|
luis@970
|
60 puts "#{date} #{users.size} #{all_projects.size} #{private_projects.size} \n"
|
luis@970
|
61
|
luis@970
|
62 end
|
luis@970
|
63
|
luis@970
|
64
|
luis@970
|
65
|
luis@970
|
66
|
luis@970
|
67
|
luis@970
|
68
|
luis@970
|
69
|
luis@970
|
70
|
luis@970
|
71 #nusers.each_with_index do |num, idx|
|
luis@970
|
72 # puts "#{dates[idx]} #{num}\n"
|
luis@970
|
73 #end
|
luis@970
|
74
|
luis@970
|
75
|
luis@970
|
76
|
luis@970
|
77
|
luis@970
|
78
|