codefumes_harvester 0.1.4 → 0.1.6

Sign up to get free protection for your applications and to get access to all the features.
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