<?xml version="1.0" encoding="UTF-8"?>
<commit>
  <added type="array">
    <added>
      <filename>lib/stickler/configuration.rb</filename>
    </added>
  </added>
  <modified type="array">
    <modified>
      <diff>@@ -3,4 +3,5 @@ pkg
 log
 doc
 coverage
-
+*.swp
+*.swo</diff>
      <filename>.gitignore</filename>
    </modified>
    <modified>
      <diff>@@ -1,5 +1,7 @@
 #
-# Stickler Respository configuration
+# Stickler Respository configuration, this is a superset of a Gem configuration
+# file so it has the same keys as Gem::ConfigFile plus some more used by
+# Stickler
 #
 
 # The source that other rubygems installations will use to access the gems
@@ -7,5 +9,12 @@
 downstream_source: &quot;http://gems.collectiveintellect.com/&quot;
 
 # The upstream locations that stickler should look for gems.
-upstream_sources: 
-  - &quot;http://gems.rubyforge.org/&quot;
+sources: 
+  - http://gems.rubyforge.org
+
+# default configuration values that exist in Gem::ConfigFile
+bulk_threshold: 1000
+benchmark: false
+verbose: true
+update_sources: true
+backtrace: false</diff>
      <filename>data/stickler.yml</filename>
    </modified>
    <modified>
      <diff>@@ -24,7 +24,6 @@ Stickler::GEM_SPEC = Gem::Specification.new do |spec|
   spec.add_development_dependency( 'rake', &quot;~&gt; 0.8&quot;  )
   spec.add_development_dependency( 'rspec', &quot;~&gt; 1.1&quot; )
   spec.add_development_dependency( 'configuration', &quot;~&gt; 0.0&quot; )
-
   
   pkg = Configuration.for('packaging')
   spec.files        = pkg.files.all</diff>
      <filename>gemspec.rb</filename>
    </modified>
    <modified>
      <diff>@@ -6,6 +6,7 @@
 
 require 'stickler'
 require 'fileutils'
+require 'stickler/configuration'
 
 module Stickler
   # 
@@ -32,6 +33,9 @@ module Stickler
     # The repository directory.  the directory containing the stickler.yml file
     attr_reader :directory
 
+    # The configuration
+    attr_reader :configuration
+
     def self.other_dir_names 
       %w[ gem_dir log_dir specification_dir dist_dir ]
     end
@@ -40,6 +44,10 @@ module Stickler
       @directory = File.expand_path( opts['directory'] )
       enhance_logging( opts ) if File.directory?( log_dir )
       @overwrite = opts['force']
+
+      # this must be loaded early so it overrites the global Gem.configuration
+      load_configuration if File.exist?( config_file )
+
     end
 
     #
@@ -73,18 +81,17 @@ module Stickler
     end
 
     #
-    # return a handle to the repository configuration found in stickler.yml
+    # return a handle to the repository configuration found in stickler.yml.
+    # Set this to be the global Gem.configuration
     #
-    def configuration
-      unless @configuration 
-        begin
-          @configuration = YAML.load_file( config_file )
-        rescue =&gt; e
-          logger.error &quot;Failure to load configuration #{e}&quot;
-          exit 1
-        end
+    def load_configuration
+      begin
+        @configuration = Configuration.new( config_file )
+        ::Gem.configuration = @configuration 
+      rescue =&gt; e
+        logger.error &quot;Failure to load configuration #{e}&quot;
+        exit 1
       end
-      return @configuration
     end
 
     #
@@ -210,6 +217,9 @@ module Stickler
         logger.info &quot;configuration file #{config_file} already exists&quot;
       end
 
+      # load the configuration for the repo
+      load_configuration
+
     rescue =&gt; e
       logger.error &quot;Unable to setup the respository&quot;
       logger.error e
@@ -222,12 +232,43 @@ module Stickler
     #
     def info
       return unless valid?
-      Stickler.tee &quot;Configuration settings:&quot;
-      cfg_params = %w[ upstream gem_server_home ]
-      max_width = cfg_params.collect { |cp| cp.length }.max
-      cfg_params.sort.each do |param|
-        Stickler.tee &quot;    #{param.rjust(max_width)} : #{configuration.send(param)}&quot;
+      Stickler.tee &quot;Configuration settings&quot;
+      Stickler.tee &quot;----------------------&quot;
+      Stickler.tee &quot;&quot;
+      keys = configuration.keys
+      max_width = keys.collect { |k| k.length }.max
+
+      Stickler.tee &quot;  #{&quot;downstream_source&quot;.rjust( max_width )} : #{configuration['downstream_source']}&quot;
+      Stickler.tee &quot;  #{&quot;sources&quot;.rjust( max_width )} : #{configuration.sources.first}&quot;
+
+      configuration.sources[1..-1].each do |source|
+        Stickler.tee &quot;  #{&quot;&quot;.rjust( max_width )}   #{source}&quot;
       end
+
+      Stickler.tee &quot;&quot;
+
+      keys = keys.sort - %w[ downstream_source sources ]
+      keys.each do |key|
+        Stickler.tee &quot;  #{key.rjust( max_width )} : #{configuration[ key ]}&quot;
+      end
+    end
+
+    def sources
+      unless @sources 
+        s = {}
+        configuration.sources.each do |upstream_uri|
+          src = Source.new( upstream_uri )
+          @sources &lt;&lt; Sources.new( upstream_uri )
+        end
+      end
+      return @sources
+    end
+
+    #
+    # Add a source to the repository
+    #
+    def add_source( source_uri )
+      sources &lt;&lt; Source.new( source_uri )
     end
   end
 end</diff>
      <filename>lib/stickler/repository.rb</filename>
    </modified>
    <modified>
      <diff>@@ -25,8 +25,8 @@ describe Stickler::Repository do
     it &quot;setup creates a default stickler.yml file&quot; do
       s_yml = File.join( @top_dir, 'stickler.yml' )
       s = YAML.load_file( s_yml )
-      s['upstream_sources'].size.should == 1
-      s['upstream_sources'].first.should == &quot;http://gems.rubyforge.org/&quot;
+      s['sources'].size.should == 1
+      s['sources'].first.should == &quot;http://gems.rubyforge.org&quot;
     end
   end
 
@@ -49,7 +49,12 @@ describe Stickler::Repository do
   end
 
   it &quot;creates a configuration&quot; do
-    @repo.configuration['upstream_sources'].size.should == 1
-    @repo.configuration['upstream_sources'].first.should == &quot;http://gems.rubyforge.org/&quot;
+    @repo.configuration['sources'].size.should == 1
+    @repo.configuration['sources'].first.should == &quot;http://gems.rubyforge.org&quot;
   end
+
+  it &quot;sets itself as the global Gem.configuration&quot; do
+    @repo.configuration.should == Gem.configuration
+  end
+
 end</diff>
      <filename>spec/repository_spec.rb</filename>
    </modified>
  </modified>
  <removed type="array"/>
  <parents type="array">
    <parent>
      <id>b351621dec187be61d60e77ddf35d7ad72126cf4</id>
    </parent>
  </parents>
  <author>
    <name>Jeremy Hinegardner</name>
    <email>jeremy@hinegardner.org</email>
  </author>
  <url>http://github.com/copiousfreetime/stickler/commit/1456ba818d41b3fffd9dde089962bcc0a16cb180</url>
  <id>1456ba818d41b3fffd9dde089962bcc0a16cb180</id>
  <committed-date>2008-09-20T23:27:12-07:00</committed-date>
  <authored-date>2008-09-20T23:27:12-07:00</authored-date>
  <message>Added Configuration as an impelmentation of Gem::ConfigFile</message>
  <tree>bcc4b50585f2f8ff2291d6c62b6f528690d7dff4</tree>
  <committer>
    <name>Jeremy Hinegardner</name>
    <email>jeremy@hinegardner.org</email>
  </committer>
</commit>
