codefumes_harvester 0.1.4 → 0.1.6

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/History.txt CHANGED
@@ -1,29 +1,36 @@
1
- == 0.1.5 / 09-13-09
1
+ == 0.1.6 / 09-MAR-2010
2
+
3
+ * Added QuickBuild class to simplify adding/updating Build information to a project
4
+ * Added cf:start_build rake task
5
+ * Fixed repo path issue in notifier
6
+ * First version of Integrity notification
7
+
8
+ == 0.1.5 / 13-SEP-09
2
9
 
3
10
  * Renamed harvest_repo_metrics -> bin/cf_harvest_repo_metrics
4
11
 
5
- == 0.1.4 / 09-13-09
12
+ == 0.1.4 / 13-SEP-09
6
13
 
7
14
  * Moved feedback printing from publish_data! out to CLI#execute
8
15
  * Renamed #local_revision_identifier to #local_commit_identifier
9
16
 
10
- == 0.1.3 / 09-12-09
17
+ == 0.1.3 / 12-SEP-09
11
18
 
12
19
  * Cached commit stats when building Payload hash to prevent Grit::Git::GitTimeout exceptions
13
20
  * Documentation updates
14
21
 
15
- == 0.1.2 / 09-10-09
22
+ == 0.1.2 / 10-SEP-09
16
23
 
17
24
  * Updated gem summary
18
25
  * Updated gem dependency definitions
19
26
 
20
- == 0.1.1 / 09-10-09
27
+ == 0.1.1 / 10-SEP-09
21
28
 
22
29
  * Updates to gem meta-data
23
30
  * Added/updated summary
24
31
  * Updated list of authors/developers
25
32
 
26
- == 0.1.0 / 09-08-09
33
+ == 0.1.0 / 08-SEP-09
27
34
 
28
35
  * 1 major enhancement:
29
36
  * Initial release
data/Manifest.txt CHANGED
@@ -7,11 +7,14 @@ lib/cf_harvest_repo_metrics/cli.rb
7
7
  lib/codefumes_harvester.rb
8
8
  lib/codefumes_harvester/errors.rb
9
9
  lib/codefumes_harvester/harvester.rb
10
+ lib/codefumes_harvester/integrity_notifier/codefumes.haml
11
+ lib/codefumes_harvester/integrity_notifier/codefumes.rb
12
+ lib/codefumes_harvester/quick_build.rb
10
13
  lib/codefumes_harvester/quick_metric.rb
11
14
  lib/codefumes_harvester/source_control.rb
12
15
  spec/cf_harvest_repo_metrics/cli_spec.rb
13
- spec/codometer_harvester/harvester_spec.rb
14
- spec/codometer_harvester/source_control_spec.rb
16
+ spec/codefumes_harvester/harvester_spec.rb
17
+ spec/codefumes_harvester/source_control_spec.rb
15
18
  spec/fixtures/sample_project_dirs/no_scm/description
16
19
  spec/spec.opts
17
20
  spec/spec_helper.rb
data/Rakefile CHANGED
@@ -18,7 +18,7 @@ end
18
18
  $hoe = Hoe.spec('codefumes_harvester') do
19
19
  self.rubyforge_name = 'codefumes'
20
20
  self.summary = "Tools for sending repository history and metrics to CodeFumes.com"
21
- self.extra_deps = [['codefumes','>= 0.1.3'],['mojombo-grit','>= 1.1.1']]
21
+ self.extra_deps = [['codefumes','>= 0.1.7'],['mojombo-grit','>= 1.1.1']]
22
22
  self.extra_dev_deps = [['jscruggs-metric_fu', ">= 1.1.5"],
23
23
  ['mojombo-chronic', ">= 0.3.0"],
24
24
  ['rubigen', ">= 1.5.2"]
@@ -0,0 +1,11 @@
1
+ %p.normal
2
+ %label{ :for => "cf_build_name" } Build name
3
+ %input.text#cf_build_name{ :name => "notifiers[CodeFumes][build_name]", :type => "text", :value => config["build_name"] }
4
+
5
+ %p.normal
6
+ %label{ :for => "cf_public_key" } Public key
7
+ %input.text#cf_public_key{ :name => "notifiers[CodeFumes][public_key]", :type => "text", :value => config["public_key"] }
8
+
9
+ %p.normal
10
+ %label{ :for => "cf_private_key" } Private key
11
+ %input.text#cf_private_key{ :name => "notifiers[CodeFumes][private_key]", :type => "text", :value => config["private_key"] }
@@ -0,0 +1,62 @@
1
+ begin
2
+ require 'codefumes_harvester'
3
+ rescue LoadError
4
+ abort "Install codefumes_harvester to use the CodeFumes notifier"
5
+ end
6
+
7
+ module CodeFumesHarvester
8
+ class IntegrityNotifier
9
+ class CodeFumes < ::Integrity::Notifier::Base
10
+ attr_reader :private_key, :public_key
11
+
12
+ def self.to_haml
13
+ @haml ||= File.read(File.dirname(__FILE__) + "/codefumes.haml")
14
+ end
15
+
16
+ def initialize(build, config={})
17
+ @public_key = config["public_key"]
18
+ @private_key = config["private_key"]
19
+ @build_name = config["build_name"]
20
+ @repo_path = Integrity::Repository.new(
21
+ build.id, build.project.uri, build.project.branch, build.commit.identifier
22
+ ).directory
23
+ super(build, config)
24
+ end
25
+
26
+ def deliver!
27
+ Integrity.log "Updating build '#{@build_name}' for '#{@public_key}' (state: #{build_state})"
28
+ qb_options = {:public_key => @public_key,
29
+ :private_key => @private_key,
30
+ :ended_at => @build.completed_at,
31
+ :repository_path => @repo_path}
32
+
33
+ CodeFumesHarvester::QuickBuild.finish(@build_name, build_state, qb_options)
34
+ end
35
+
36
+ def deliver_started_notification!
37
+ Integrity.log "Adding build '#{@build_name}' for '#{@public_key}' (state: #{build_state})"
38
+ qb_options = {:public_key => @public_key,
39
+ :private_key => @private_key,
40
+ :started_at => @build.started_at,
41
+ :repository_path => @repo_path}
42
+
43
+ CodeFumesHarvester::QuickBuild.start(@build_name, qb_options)
44
+ end
45
+
46
+ private
47
+ def build_state
48
+ case @build.status
49
+ when :success then :success
50
+ when :failed then :failed
51
+ when :building then :running
52
+ end
53
+ end
54
+ end
55
+ end
56
+ end
57
+
58
+ module Integrity
59
+ class Notifier
60
+ register CodeFumesHarvester::IntegrityNotifier::CodeFumes
61
+ end
62
+ end
@@ -0,0 +1,47 @@
1
+ module CodeFumesHarvester
2
+ class QuickBuild
3
+ # Creates a new build for the CodeFumes project linked
4
+ # at the specified repository path and associates
5
+ # it with the current local commit identifier
6
+ #
7
+ # Returns +true+ if the request succeeded.
8
+ #
9
+ # Returns +false+ if the request failed.
10
+ def self.start(build_name, options = {})
11
+ repo = SourceControl.new(options[:repository_path] || './')
12
+
13
+ commit_identifier = options[:commit_identifier] || repo.local_commit_identifier
14
+ public_key = options[:public_key] || repo.public_key
15
+ private_key = options[:private_key] || repo.private_key
16
+ started_at = options[:started_at] || Time.now
17
+
18
+ build = CodeFumes::Build.new(:public_key => public_key,
19
+ :private_key => private_key,
20
+ :commit_identifier => commit_identifier,
21
+ :name => build_name,
22
+ :state => "running",
23
+ :started_at => started_at,
24
+ :ended_at => "")
25
+ build.save
26
+ end
27
+
28
+ def self.finish(build_name, success_or_failure, options = {})
29
+ repo = SourceControl.new(options[:repository_path] || './')
30
+
31
+ commit_identifier = options[:commit_identifier] || repo.local_commit_identifier
32
+ public_key = options[:public_key] || repo.public_key
33
+ private_key = options[:private_key] || repo.private_key
34
+ ended_at = options[:ended_at] || Time.now
35
+
36
+ build = CodeFumes::Build.find(:public_key => public_key,
37
+ :private_key => private_key,
38
+ :commit_identifier => commit_identifier,
39
+ :identifier => build_name
40
+ )
41
+ return false if build.nil?
42
+ build.state = success_or_failure.to_s
43
+ build.ended_at = ended_at
44
+ build.save
45
+ end
46
+ end
47
+ end
@@ -5,11 +5,12 @@ require 'codefumes_harvester/harvester'
5
5
  require 'codefumes_harvester/source_control'
6
6
  require 'codefumes_harvester/errors'
7
7
  require 'codefumes_harvester/quick_metric'
8
+ require 'codefumes_harvester/quick_build'
8
9
 
9
10
  include CodeFumesHarvester
10
11
 
11
12
  module CodeFumesHarvester
12
- VERSION = '0.1.4'
13
+ VERSION = '0.1.6' unless defined?(CodeFumesHarvester::VERSION)
13
14
  LIB_ROOT = File.dirname(__FILE__)
14
15
  end
15
16
 
data/tasks/codefumes.rake CHANGED
@@ -7,6 +7,10 @@ namespace :cf do
7
7
  sh "#{harvest_repo_metrics_executable} #{options}"
8
8
  end
9
9
 
10
+ desc "Create a new build for the local current commit identifier"
11
+ task :start_build, [:name] do |tsk, args|
12
+ QuickBuild.start(args.name)
13
+ end
10
14
 
11
15
  namespace :metric_fu do
12
16
  desc "Collect commit's overall code coverage statistic from metric_fu output"
metadata CHANGED
@@ -1,7 +1,12 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: codefumes_harvester
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ prerelease: false
5
+ segments:
6
+ - 0
7
+ - 1
8
+ - 6
9
+ version: 0.1.6
5
10
  platform: ruby
6
11
  authors:
7
12
  - Tom Kersten
@@ -10,69 +15,93 @@ autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
17
 
13
- date: 2010-02-20 00:00:00 -06:00
18
+ date: 2010-03-27 00:00:00 -05:00
14
19
  default_executable:
15
20
  dependencies:
16
21
  - !ruby/object:Gem::Dependency
17
22
  name: codefumes
18
- type: :runtime
19
- version_requirement:
20
- version_requirements: !ruby/object:Gem::Requirement
23
+ prerelease: false
24
+ requirement: &id001 !ruby/object:Gem::Requirement
21
25
  requirements:
22
26
  - - ">="
23
27
  - !ruby/object:Gem::Version
24
- version: 0.1.3
25
- version:
28
+ segments:
29
+ - 0
30
+ - 1
31
+ - 7
32
+ version: 0.1.7
33
+ type: :runtime
34
+ version_requirements: *id001
26
35
  - !ruby/object:Gem::Dependency
27
36
  name: mojombo-grit
28
- type: :runtime
29
- version_requirement:
30
- version_requirements: !ruby/object:Gem::Requirement
37
+ prerelease: false
38
+ requirement: &id002 !ruby/object:Gem::Requirement
31
39
  requirements:
32
40
  - - ">="
33
41
  - !ruby/object:Gem::Version
42
+ segments:
43
+ - 1
44
+ - 1
45
+ - 1
34
46
  version: 1.1.1
35
- version:
47
+ type: :runtime
48
+ version_requirements: *id002
36
49
  - !ruby/object:Gem::Dependency
37
50
  name: jscruggs-metric_fu
38
- type: :development
39
- version_requirement:
40
- version_requirements: !ruby/object:Gem::Requirement
51
+ prerelease: false
52
+ requirement: &id003 !ruby/object:Gem::Requirement
41
53
  requirements:
42
54
  - - ">="
43
55
  - !ruby/object:Gem::Version
56
+ segments:
57
+ - 1
58
+ - 1
59
+ - 5
44
60
  version: 1.1.5
45
- version:
61
+ type: :development
62
+ version_requirements: *id003
46
63
  - !ruby/object:Gem::Dependency
47
64
  name: mojombo-chronic
48
- type: :development
49
- version_requirement:
50
- version_requirements: !ruby/object:Gem::Requirement
65
+ prerelease: false
66
+ requirement: &id004 !ruby/object:Gem::Requirement
51
67
  requirements:
52
68
  - - ">="
53
69
  - !ruby/object:Gem::Version
70
+ segments:
71
+ - 0
72
+ - 3
73
+ - 0
54
74
  version: 0.3.0
55
- version:
75
+ type: :development
76
+ version_requirements: *id004
56
77
  - !ruby/object:Gem::Dependency
57
78
  name: rubigen
58
- type: :development
59
- version_requirement:
60
- version_requirements: !ruby/object:Gem::Requirement
79
+ prerelease: false
80
+ requirement: &id005 !ruby/object:Gem::Requirement
61
81
  requirements:
62
82
  - - ">="
63
83
  - !ruby/object:Gem::Version
84
+ segments:
85
+ - 1
86
+ - 5
87
+ - 2
64
88
  version: 1.5.2
65
- version:
89
+ type: :development
90
+ version_requirements: *id005
66
91
  - !ruby/object:Gem::Dependency
67
92
  name: hoe
68
- type: :development
69
- version_requirement:
70
- version_requirements: !ruby/object:Gem::Requirement
93
+ prerelease: false
94
+ requirement: &id006 !ruby/object:Gem::Requirement
71
95
  requirements:
72
96
  - - ">="
73
97
  - !ruby/object:Gem::Version
98
+ segments:
99
+ - 2
100
+ - 5
101
+ - 0
74
102
  version: 2.5.0
75
- version:
103
+ type: :development
104
+ version_requirements: *id006
76
105
  description: |-
77
106
  CodeFumesHarvester provides a set of high-level tools for gathering
78
107
  history and common metrics from a local repository and sending them to
@@ -98,11 +127,14 @@ files:
98
127
  - lib/codefumes_harvester.rb
99
128
  - lib/codefumes_harvester/errors.rb
100
129
  - lib/codefumes_harvester/harvester.rb
130
+ - lib/codefumes_harvester/integrity_notifier/codefumes.haml
131
+ - lib/codefumes_harvester/integrity_notifier/codefumes.rb
132
+ - lib/codefumes_harvester/quick_build.rb
101
133
  - lib/codefumes_harvester/quick_metric.rb
102
134
  - lib/codefumes_harvester/source_control.rb
103
135
  - spec/cf_harvest_repo_metrics/cli_spec.rb
104
- - spec/codometer_harvester/harvester_spec.rb
105
- - spec/codometer_harvester/source_control_spec.rb
136
+ - spec/codefumes_harvester/harvester_spec.rb
137
+ - spec/codefumes_harvester/source_control_spec.rb
106
138
  - spec/fixtures/sample_project_dirs/no_scm/description
107
139
  - spec/spec.opts
108
140
  - spec/spec_helper.rb
@@ -122,18 +154,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
122
154
  requirements:
123
155
  - - ">="
124
156
  - !ruby/object:Gem::Version
157
+ segments:
158
+ - 0
125
159
  version: "0"
126
- version:
127
160
  required_rubygems_version: !ruby/object:Gem::Requirement
128
161
  requirements:
129
162
  - - ">="
130
163
  - !ruby/object:Gem::Version
164
+ segments:
165
+ - 0
131
166
  version: "0"
132
- version:
133
167
  requirements: []
134
168
 
135
169
  rubyforge_project: codefumes
136
- rubygems_version: 1.3.5
170
+ rubygems_version: 1.3.6
137
171
  signing_key:
138
172
  specification_version: 3
139
173
  summary: Tools for sending repository history and metrics to CodeFumes.com