<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/builder_plugins/builder_plugin.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -3,22 +3,15 @@
 # Configuration.number_of_builds_to_keep = 20
 # 
 # in site_config.rb
-#
-require 'fileutils'
-
-class BuildReaper
+class BuildReaper &lt; BuilderPlugin
   cattr_accessor :number_of_builds_to_keep
 
-  def initialize(project)
-    @project = project
-  end
-
   def build_finished(build)
     delete_all_builds_but BuildReaper.number_of_builds_to_keep
   end
   
   def delete_all_builds_but(number)
-    @project.builds[0..-(number + 1)].each do |build|
+    project.builds[0..-(number + 1)].each do |build|
       build.destroy
     end
   end</diff>
      <filename>lib/builder_plugins/build_reaper.rb</filename>
    </modified>
    <modified>
      <diff>@@ -5,11 +5,7 @@
 #
 require 'builder_error'
 
-class BuilderStatus
-  def initialize(project)
-    @project = project
-  end
-
+class BuilderStatus &lt; BuilderPlugin
   def status
     if builder_down?
       'builder_down'
@@ -64,7 +60,7 @@ class BuilderStatus
   
   private
   def existing_status_file
-    Dir[&quot;#{@project.path}/builder_status.*&quot;].first
+    Dir[&quot;#{project.path}/builder_status.*&quot;].first
   end
   
   def read_status
@@ -76,14 +72,14 @@ class BuilderStatus
   end
 
   def set_status(status, message = nil)
-    FileUtils.rm_f(Dir[&quot;#{@project.path}/builder_status.*&quot;])
-    status_file = &quot;#{@project.path}/builder_status.#{status}&quot;
+    FileUtils.rm_f(Dir[&quot;#{project.path}/builder_status.*&quot;])
+    status_file = &quot;#{project.path}/builder_status.#{status}&quot;
     FileUtils.touch(status_file)
     File.open(status_file, &quot;w&quot;){|f| f.write message } if message
   end
 
   def builder_down?
-    !ProjectBlocker.blocked?(@project)
+    !ProjectBlocker.blocked?(project)
   end
 
 end</diff>
      <filename>lib/builder_plugins/builder_status.rb</filename>
    </modified>
    <modified>
      <diff>@@ -23,8 +23,7 @@
 # Usually, you will want the latter. Set the dashboard URL in the &lt;em&gt;[cruise&amp;nbsp;data]&lt;/em&gt;/config/site_config.rb as follows:
 #
 # &lt;pre&gt;&lt;code&gt;Configuration.dashboard_url = 'http://your.host.name.com:3333'&lt;/pre&gt;&lt;/code&gt;
-
-class EmailNotifier
+class EmailNotifier &lt; BuilderPlugin
   attr_accessor :emails
   attr_writer :from
   </diff>
      <filename>lib/builder_plugins/email_notifier.rb</filename>
    </modified>
    <modified>
      <diff>@@ -8,19 +8,17 @@
 # 
 # &lt;pre&gt;&lt;code&gt;project.log_publisher.globs = ['log/*.log', 'tmp/*']&lt;/code&gt;&lt;/log&gt;
 #
-require 'fileutils'
-
-class LogPublisher
+class LogPublisher &lt; BuilderPlugin
   attr_accessor :globs
   
   def initialize(project)
-    @project = project
     @globs = [&quot;log/*.log&quot;]
+    super
   end
 
   def build_finished(build)
     @globs.each do |glob|
-      Dir[&quot;#{@project.local_checkout}/#{glob}&quot;].each do |file|
+      Dir[&quot;#{project.local_checkout}/#{glob}&quot;].each do |file|
         FileUtils.mv file, build.artifacts_directory
       end
     end</diff>
      <filename>lib/builder_plugins/log_publisher.rb</filename>
    </modified>
    <modified>
      <diff>@@ -4,10 +4,7 @@
 #
 # (this plugin is built in and needs no customization)
 #
-class MinimalConsoleLogger
-  def initialize(project)
-  end
-
+class MinimalConsoleLogger &lt; BuilderPlugin
   def build_started(build)
     puts &quot;Build #{build.label} started&quot;
   end</diff>
      <filename>lib/builder_plugins/minimal_console_logger.rb</filename>
    </modified>
    <modified>
      <diff>@@ -3,11 +3,7 @@
 #
 # (this plugin is built in and needs no customization)
 #
-class ProjectLogger
-
-  def initialize(project)
-  end
-
+class ProjectLogger &lt; BuilderPlugin
   def build_started(build)
     CruiseControl::Log.event(&quot;Build #{build.label} started&quot;)
   end
@@ -42,7 +38,6 @@ class ProjectLogger
     backtrace = error.backtrace.map { |line| &quot;  #{line}&quot; }.join(&quot;\n&quot;) rescue &quot;&quot;
     CruiseControl::Log.debug(&quot;#{error.class}: #{error.message}\n#{backtrace}&quot;)
   end
-
 end
 
 Project.plugin :project_logger
\ No newline at end of file</diff>
      <filename>lib/builder_plugins/project_logger.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>54b3b71fe7bd23602f88f4e7776b3030dbaee46f</id>
    </parent>
  </parents>
  <author>
    <name>Brian Guthrie</name>
    <email>btguthrie@gmail.com</email>
  </author>
  <url>http://github.com/thoughtworks/cruisecontrol.rb/commit/6731b7adfca98e57b5c7db363420b148040f796b</url>
  <id>6731b7adfca98e57b5c7db363420b148040f796b</id>
  <committed-date>2009-07-01T12:15:29-07:00</committed-date>
  <authored-date>2009-07-01T12:15:29-07:00</authored-date>
  <message>Added extremely minimal infrastructure around plugins through the use of a superclass. This is a precursor to refactoring the plugin loader.</message>
  <tree>f0cfd3d936ef95d64b72585abfe642faca7bd599</tree>
  <committer>
    <name>Brian Guthrie</name>
    <email>btguthrie@gmail.com</email>
  </committer>
</commit>
