hoe-seattlerb 1.2.9 → 1.3.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data.tar.gz.sig CHANGED
Binary file
data/History.txt CHANGED
@@ -1,3 +1,11 @@
1
+ === 1.3.0 / 2013-04-09
2
+
3
+ * 3 minor enhancements:
4
+
5
+ * Added history rake task. Outputs (and caches) flog/flay data across releases.
6
+ * Added hoe/history.rb -- providing historical flog & flay numbers across releases.
7
+ * Hooked in history plugin to be on by default.
8
+
1
9
  === 1.2.9 / 2012-11-09
2
10
 
3
11
  * 1 bug fix:
data/Manifest.txt CHANGED
@@ -4,5 +4,6 @@ Manifest.txt
4
4
  README.txt
5
5
  Rakefile
6
6
  lib/hoe/email.rb
7
+ lib/hoe/history.rb
7
8
  lib/hoe/perforce.rb
8
9
  lib/hoe/seattlerb.rb
data/lib/hoe/email.rb CHANGED
@@ -1,3 +1,6 @@
1
+ ##
2
+ # Email plugin for Hoe.
3
+
1
4
  module Hoe::Email
2
5
 
3
6
  Hoe::DEFAULT_CONFIG["email"] = {
@@ -10,14 +13,23 @@ module Hoe::Email
10
13
  "tls" => nil,
11
14
  }
12
15
 
16
+ ##
17
+ # Who to send email to.
18
+
13
19
  attr_reader :email_to
14
20
 
21
+ ##
22
+ # Initialize the email plugin. Get the email/to from hoe's config.
23
+
15
24
  def initialize_email
16
25
  with_config do |config, _|
17
26
  @email_to = config["email"]["to"] rescue nil
18
27
  end
19
28
  end
20
29
 
30
+ ##
31
+ # Define email tasks.
32
+
21
33
  def define_email_tasks
22
34
  require 'net/smtp'
23
35
  begin
@@ -0,0 +1,63 @@
1
+ ##
2
+ # History plugin for Hoe. Allows you to calculate all of the flog &
3
+ # flay scores over the releases of your project in an SCM independent
4
+ # way.
5
+
6
+ module Hoe::History
7
+ def define_history_tasks # :nodoc:
8
+ # do nothing
9
+ end
10
+
11
+ ##
12
+ # Calculate the flog and flay score for a Hoe project.
13
+
14
+ def flog_flay
15
+ flog = `flog -s -c $(cat Manifest.txt | grep -v txt$) 2>/dev/null`
16
+ flay = `flay -s $(cat Manifest.txt | grep -v txt$) 2>/dev/null`
17
+
18
+ flog_total = flog[/([\d\.]+): flog total/, 1].to_f
19
+ flog_avg = flog[/([\d\.]+): flog\/method average/, 1].to_f
20
+ flay_total = flay[/Total score .lower is better. = (\d+)/, 1].to_i
21
+
22
+ return flog_total, flog_avg, flay_total
23
+ end
24
+
25
+ ##
26
+ # Load cached history.
27
+
28
+ def load_history
29
+ require "yaml"
30
+ YAML.load_file(".history.yaml") rescue {}
31
+ end
32
+
33
+ ##
34
+ # Save cached history.
35
+
36
+ def save_history data
37
+ require "yaml"
38
+ File.open ".history.yaml", "w" do |f|
39
+ YAML.dump data, f
40
+ end
41
+ end
42
+
43
+ ##
44
+ # Calculate the history across all versions. Uses `versions` from an
45
+ # SCM plugin to figure out how to deal with the SCM.
46
+
47
+ def history versions
48
+ history = load_history
49
+ history.delete "dev" # FIX: this is p4 specific - make a variable?
50
+
51
+ flog_total = flog_avg = flay_total = nil
52
+
53
+ puts "version\tflog\tavg\tflay"
54
+ versions.each do |version|
55
+ history[version] = yield(version) unless history[version]
56
+
57
+ flog_total, flog_avg, flay_total = history[version]
58
+ puts "%s\t%.1f\t%.1f\t%d" % [version, flog_total, flog_avg, flay_total]
59
+ end
60
+ ensure
61
+ save_history history
62
+ end
63
+ end
data/lib/hoe/perforce.rb CHANGED
@@ -26,12 +26,23 @@ require 'find'
26
26
  # structure can accommodate either but the code below is implicit.
27
27
 
28
28
  module Hoe::Perforce
29
+
30
+ ##
31
+ # Files fore perforce to ignore. Probably not needed now that they
32
+ # support a dot-ignore file. I have yet to use that so... yeah.
33
+
29
34
  attr_accessor :perforce_ignore
30
35
 
36
+ ##
37
+ # Initializes the perforce plugin.
38
+
31
39
  def initialize_perforce
32
40
  self.perforce_ignore = []
33
41
  end
34
42
 
43
+ ##
44
+ # Defines tasks for the perforce plugin.
45
+
35
46
  def define_perforce_tasks
36
47
  warn :define_perforce_tasks if $DEBUG
37
48
 
@@ -60,6 +71,11 @@ module Hoe::Perforce
60
71
  task :postrelease => :announce do
61
72
  system 'rake clean'
62
73
  end
74
+
75
+ desc "Generate historical flog/flay data for all releases"
76
+ task :history do
77
+ p4_history
78
+ end
63
79
  end
64
80
 
65
81
  ##
@@ -73,6 +89,9 @@ module Hoe::Perforce
73
89
  sh "#{cmd};"
74
90
  end
75
91
 
92
+ ##
93
+ # Audit the manifest file against files on the file system.
94
+
76
95
  def validate_manifest_file manifest_dir
77
96
  manifest_file = "#{manifest_dir}/Manifest.txt"
78
97
  raise "#{manifest_file} does not exist" unless test ?f, manifest_file
@@ -113,18 +132,47 @@ module Hoe::Perforce
113
132
  raise msg.join("\n") unless msg.empty?
114
133
  end
115
134
 
135
+ ##
136
+ # Revert the pending (release) directory.
137
+
116
138
  def p4_revert dir
117
139
  puts "reverting #{dir}"
118
140
  p4sh "p4 revert #{dir}/..."
119
141
  end
120
142
 
143
+ ##
144
+ # Branch a release from +from+ to +to+.
145
+
121
146
  def p4_integrate from, to
122
147
  opened = `p4 opened ... 2>&1`
123
148
  raise "You have files open" unless opened =~ /file\(s\) not opened/
124
149
  p4sh "p4 integrate #{from}/... #{to}/..."
125
150
  end
126
151
 
152
+ ##
153
+ # Submit the current directory with a description message.
154
+
127
155
  def p4_submit description
128
156
  p4sh "p4 submit -d #{description.inspect} ..."
129
157
  end
158
+
159
+ ##
160
+ # Return all version directories (and dev).
161
+
162
+ def p4_versions
163
+ dirs = Dir["../[0-9]*"].sort_by { |s| Gem::Version.new(File.basename(s)) }
164
+ dirs << "../dev"
165
+ dirs.map { |d| File.basename d }
166
+ end
167
+
168
+ ##
169
+ # Return the flog & flay history of all releases.
170
+
171
+ def p4_history
172
+ history p4_versions do |version|
173
+ Dir.chdir "../#{version}" do
174
+ flog_flay
175
+ end
176
+ end
177
+ end
130
178
  end
data/lib/hoe/seattlerb.rb CHANGED
@@ -1,7 +1,16 @@
1
- Hoe.plugin :minitest, :perforce, :email
1
+ Hoe.plugin :minitest, :history, :perforce, :email
2
+
3
+ class Hoe; end # :nodoc: stfu rdoc... *sigh*
4
+
5
+ ##
6
+ # Top level Seattlerb plugin for Hoe. Doesn't really do anything but
7
+ # pull in other default plugins.
2
8
 
3
9
  module Hoe::Seattlerb
4
- VERSION = "1.2.9"
10
+ VERSION = "1.3.0" # :nodoc:
11
+
12
+ ##
13
+ # Define seattlerb's rdoc location.
5
14
 
6
15
  def define_seattlerb_tasks
7
16
  if Hoe.plugins.include? :publish then
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: hoe-seattlerb
3
3
  version: !ruby/object:Gem::Version
4
- hash: 13
4
+ hash: 27
5
5
  prerelease:
6
6
  segments:
7
7
  - 1
8
- - 2
9
- - 9
10
- version: 1.2.9
8
+ - 3
9
+ - 0
10
+ version: 1.3.0
11
11
  platform: ruby
12
12
  authors:
13
13
  - Ryan Davis
@@ -36,7 +36,7 @@ cert_chain:
36
36
  FBHgymkyj/AOSqKRIpXPhjC6
37
37
  -----END CERTIFICATE-----
38
38
 
39
- date: 2012-11-09 00:00:00 Z
39
+ date: 2013-04-10 00:00:00 Z
40
40
  dependencies:
41
41
  - !ruby/object:Gem::Dependency
42
42
  name: minitest
@@ -46,11 +46,11 @@ dependencies:
46
46
  requirements:
47
47
  - - ~>
48
48
  - !ruby/object:Gem::Version
49
- hash: 31
49
+ hash: 21
50
50
  segments:
51
51
  - 4
52
- - 2
53
- version: "4.2"
52
+ - 7
53
+ version: "4.7"
54
54
  type: :development
55
55
  version_requirements: *id001
56
56
  - !ruby/object:Gem::Dependency
@@ -61,11 +61,11 @@ dependencies:
61
61
  requirements:
62
62
  - - ~>
63
63
  - !ruby/object:Gem::Version
64
- hash: 19
64
+ hash: 27
65
65
  segments:
66
- - 3
67
- - 10
68
- version: "3.10"
66
+ - 4
67
+ - 0
68
+ version: "4.0"
69
69
  type: :development
70
70
  version_requirements: *id002
71
71
  - !ruby/object:Gem::Dependency
@@ -76,11 +76,11 @@ dependencies:
76
76
  requirements:
77
77
  - - ~>
78
78
  - !ruby/object:Gem::Version
79
- hash: 3
79
+ hash: 13
80
80
  segments:
81
81
  - 3
82
- - 2
83
- version: "3.2"
82
+ - 5
83
+ version: "3.5"
84
84
  type: :development
85
85
  version_requirements: *id003
86
86
  description: |-
@@ -104,6 +104,7 @@ files:
104
104
  - README.txt
105
105
  - Rakefile
106
106
  - lib/hoe/email.rb
107
+ - lib/hoe/history.rb
107
108
  - lib/hoe/perforce.rb
108
109
  - lib/hoe/seattlerb.rb
109
110
  homepage: https://github.com/seattlerb/hoe-seattlerb
@@ -136,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
137
  requirements: []
137
138
 
138
139
  rubyforge_project: seattlerb
139
- rubygems_version: 1.8.24
140
+ rubygems_version: 1.8.25
140
141
  signing_key:
141
142
  specification_version: 3
142
143
  summary: Hoe plugins providing tasks used by seattle.rb including minitest, perforce, and email providing full front-to-back release/annouce automation.
metadata.gz.sig CHANGED
Binary file