Module: Hoe::History

Defined in:
lib/hoe/history.rb

Overview

History plugin for Hoe. Allows you to calculate all of the flog & flay scores over the releases of your project in an SCM independent way.

Instance Method Summary collapse

Instance Method Details

#define_history_tasksObject

:nodoc:



7
8
9
# File 'lib/hoe/history.rb', line 7

def define_history_tasks # :nodoc:
  # do nothing
end

#flog_flayObject

Calculate the flog and flay score for a Hoe project.



14
15
16
17
18
19
20
21
22
23
# File 'lib/hoe/history.rb', line 14

def flog_flay
  flog = `flog -s -c $(cat Manifest.txt | grep -v txt$) 2>/dev/null`
  flay = `flay -s    $(cat Manifest.txt | grep -v txt$) 2>/dev/null`

  flog_total = flog[/([\d\.]+): flog total/, 1].to_f
  flog_avg   = flog[/([\d\.]+): flog\/method average/, 1].to_f
  flay_total = flay[/Total score .lower is better. = (\d+)/, 1].to_i

  return flog_total, flog_avg, flay_total
end

#history(versions) ⇒ Object

Calculate the history across all versions. Uses ‘versions` from an SCM plugin to figure out how to deal with the SCM.



47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
# File 'lib/hoe/history.rb', line 47

def history versions
  history = load_history
  history.delete "dev" # FIX: this is p4 specific - make a variable?

  flog_total = flog_avg = flay_total = nil

  puts "version\tflog\tavg\tflay"
  versions.each do |version|
    history[version] = yield(version) unless history[version]

    flog_total, flog_avg, flay_total = history[version]
    puts "%s\t%.1f\t%.1f\t%d" % [version, flog_total, flog_avg, flay_total]
  end
ensure
  save_history history
end

#load_historyObject

Load cached history.



28
29
30
31
# File 'lib/hoe/history.rb', line 28

def load_history
  require "yaml"
  YAML.load_file(".history.yaml") rescue {}
end

#save_history(data) ⇒ Object

Save cached history.



36
37
38
39
40
41
# File 'lib/hoe/history.rb', line 36

def save_history data
  require "yaml"
  File.open ".history.yaml", "w" do |f|
    YAML.dump data, f
  end
end