hitimes 0.3.0-x86-mswin32-60
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 +21 -0
- data/LICENSE +19 -0
- data/README +79 -0
- data/Rakefile +63 -0
- data/examples/benchmarks.rb +86 -0
- data/examples/stats.rb +29 -0
- data/ext/extconf.rb +15 -0
- data/ext/hitimes_ext.c +20 -0
- data/ext/hitimes_instant_clock_gettime.c +20 -0
- data/ext/hitimes_instant_osx.c +16 -0
- data/ext/hitimes_instant_windows.c +27 -0
- data/ext/hitimes_interval.c +340 -0
- data/ext/hitimes_interval.h +73 -0
- data/ext/hitimes_stats.c +241 -0
- data/ext/hitimes_stats.h +30 -0
- data/ext/rbconfig-mingw.rb +178 -0
- data/ext/rbconfig.rb +178 -0
- data/gemspec.rb +55 -0
- data/lib/hitimes.rb +21 -0
- data/lib/hitimes/paths.rb +54 -0
- data/lib/hitimes/timer.rb +223 -0
- data/lib/hitimes/version.rb +42 -0
- data/lib/hitimes_ext.so +0 -0
- data/spec/interval_spec.rb +115 -0
- data/spec/paths_spec.rb +14 -0
- data/spec/spec_helper.rb +6 -0
- data/spec/stats_spec.rb +48 -0
- data/spec/timer_spec.rb +105 -0
- data/spec/version_spec.rb +27 -0
- data/tasks/announce.rake +39 -0
- data/tasks/config.rb +107 -0
- data/tasks/distribution.rake +53 -0
- data/tasks/documentation.rake +33 -0
- data/tasks/extension.rake +64 -0
- data/tasks/rspec.rake +31 -0
- data/tasks/rubyforge.rake +52 -0
- data/tasks/utils.rb +80 -0
- metadata +134 -0
| @@ -0,0 +1,42 @@ | |
| 1 | 
            +
            #--
         | 
| 2 | 
            +
            # Copyright (c) 2008 Jeremy Hinegardner
         | 
| 3 | 
            +
            # All rights reserved.  See LICENSE and/or COPYING for details
         | 
| 4 | 
            +
            #++
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            module Hitimes
         | 
| 7 | 
            +
              #
         | 
| 8 | 
            +
              # module containing all the version information about Hitimes
         | 
| 9 | 
            +
              #
         | 
| 10 | 
            +
              module Version
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                MAJOR   = 0
         | 
| 13 | 
            +
                MINOR   = 3
         | 
| 14 | 
            +
                BUILD   = 0
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                # 
         | 
| 17 | 
            +
                # :call-seq:
         | 
| 18 | 
            +
                #   Version.to_a -> [ MAJOR, MINOR, BUILD ]
         | 
| 19 | 
            +
                #
         | 
| 20 | 
            +
                # Return the version as an array of Integers
         | 
| 21 | 
            +
                #
         | 
| 22 | 
            +
                def to_a 
         | 
| 23 | 
            +
                  [MAJOR, MINOR, BUILD]
         | 
| 24 | 
            +
                end
         | 
| 25 | 
            +
             | 
| 26 | 
            +
                #
         | 
| 27 | 
            +
                # :call-seq:
         | 
| 28 | 
            +
                #   Version.to_s -> MAJOR.MINOR.BUILD
         | 
| 29 | 
            +
                #
         | 
| 30 | 
            +
                # Return the version as a String with dotted notation
         | 
| 31 | 
            +
                #
         | 
| 32 | 
            +
                def to_s
         | 
| 33 | 
            +
                  to_a.join(".")
         | 
| 34 | 
            +
                end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                module_function :to_a
         | 
| 37 | 
            +
                module_function :to_s
         | 
| 38 | 
            +
             | 
| 39 | 
            +
                STRING = Version.to_s
         | 
| 40 | 
            +
              end
         | 
| 41 | 
            +
              VERSION = Version.to_s
         | 
| 42 | 
            +
            end
         | 
    
        data/lib/hitimes_ext.so
    ADDED
    
    | Binary file | 
| @@ -0,0 +1,115 @@ | |
| 1 | 
            +
            require File.expand_path( File.join( File.dirname( __FILE__ ), "spec_helper.rb" ) )
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'hitimes_ext'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Hitimes::Interval do
         | 
| 6 | 
            +
              it "has a 0 duration when newly created" do
         | 
| 7 | 
            +
                i = Hitimes::Interval.new   
         | 
| 8 | 
            +
                i.duration == 0.0
         | 
| 9 | 
            +
              end
         | 
| 10 | 
            +
             | 
| 11 | 
            +
              it "knows if it has been started" do
         | 
| 12 | 
            +
                i = Hitimes::Interval.new
         | 
| 13 | 
            +
                i.should_not be_started
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                i.start
         | 
| 16 | 
            +
                i.should be_started
         | 
| 17 | 
            +
              end
         | 
| 18 | 
            +
             | 
| 19 | 
            +
              it "knows if it has been stopped" do
         | 
| 20 | 
            +
                i = Hitimes::Interval.new
         | 
| 21 | 
            +
                i.start
         | 
| 22 | 
            +
                i.should_not be_stopped
         | 
| 23 | 
            +
                i.stop
         | 
| 24 | 
            +
                i.should be_stopped
         | 
| 25 | 
            +
              end
         | 
| 26 | 
            +
             | 
| 27 | 
            +
              it "knows if it is currently running" do
         | 
| 28 | 
            +
                i = Hitimes::Interval.new
         | 
| 29 | 
            +
                i.should_not be_running
         | 
| 30 | 
            +
                i.start
         | 
| 31 | 
            +
                i.should be_running
         | 
| 32 | 
            +
                i.stop
         | 
| 33 | 
            +
                i.should_not be_running
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              it "can time a block of code" do
         | 
| 37 | 
            +
                d = Hitimes::Interval.measure do
         | 
| 38 | 
            +
                  sleep 0.2
         | 
| 39 | 
            +
                end
         | 
| 40 | 
            +
                d.should be_close(0.2, 0.01)
         | 
| 41 | 
            +
              end
         | 
| 42 | 
            +
             | 
| 43 | 
            +
              it "raises an error if measure is called with no block" do
         | 
| 44 | 
            +
                lambda{ Hitimes::Interval.measure }.should raise_error( Hitimes::Error )
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              it "creates an interval via #now" do
         | 
| 48 | 
            +
                i = Hitimes::Interval.now
         | 
| 49 | 
            +
                i.should be_started
         | 
| 50 | 
            +
                i.should_not be_stopped
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              it "calling duration multiple times returns successivly grater durations" do
         | 
| 54 | 
            +
                i = Hitimes::Interval.new
         | 
| 55 | 
            +
                i.start
         | 
| 56 | 
            +
                y = i.duration
         | 
| 57 | 
            +
                z = i.duration
         | 
| 58 | 
            +
                z.should > y
         | 
| 59 | 
            +
              end
         | 
| 60 | 
            +
             | 
| 61 | 
            +
              it "calling start multiple times on has no effect after the first call" do
         | 
| 62 | 
            +
                i = Hitimes::Interval.new
         | 
| 63 | 
            +
                i.start.should == true
         | 
| 64 | 
            +
                x = i.start_instant
         | 
| 65 | 
            +
                i.start_instant.should > 0
         | 
| 66 | 
            +
                i.start.should == false
         | 
| 67 | 
            +
                x.should == i.start_instant
         | 
| 68 | 
            +
              end
         | 
| 69 | 
            +
             | 
| 70 | 
            +
              it "returns the duration on the first call to stop" do
         | 
| 71 | 
            +
                i = Hitimes::Interval.now
         | 
| 72 | 
            +
                d = i.stop
         | 
| 73 | 
            +
                d.should be_instance_of( Float )
         | 
| 74 | 
            +
              end
         | 
| 75 | 
            +
             | 
| 76 | 
            +
              it "calling stop multiple times on has no effect after the first call" do
         | 
| 77 | 
            +
                i = Hitimes::Interval.new
         | 
| 78 | 
            +
                i.start.should == true
         | 
| 79 | 
            +
                i.stop
         | 
| 80 | 
            +
             | 
| 81 | 
            +
                x = i.stop_instant
         | 
| 82 | 
            +
                i.stop_instant.should > 0
         | 
| 83 | 
            +
                i.stop.should == false
         | 
| 84 | 
            +
                x.should == i.stop_instant
         | 
| 85 | 
            +
             | 
| 86 | 
            +
              end
         | 
| 87 | 
            +
             | 
| 88 | 
            +
              it "only calculates duration once after stop is called" do
         | 
| 89 | 
            +
                i = Hitimes::Interval.new
         | 
| 90 | 
            +
                i.start
         | 
| 91 | 
            +
                i.stop
         | 
| 92 | 
            +
                x = i.duration
         | 
| 93 | 
            +
                y = i.duration
         | 
| 94 | 
            +
                x.object_id.should == y.object_id
         | 
| 95 | 
            +
              end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
              describe "#split" do
         | 
| 98 | 
            +
             | 
| 99 | 
            +
                it "creates a new Interval object" do
         | 
| 100 | 
            +
                  i = Hitimes::Interval.new
         | 
| 101 | 
            +
                  i.start
         | 
| 102 | 
            +
                  i2 = i.split
         | 
| 103 | 
            +
                  i.object_id.should_not == i2.object_id
         | 
| 104 | 
            +
                end
         | 
| 105 | 
            +
             | 
| 106 | 
            +
                it "with the stop instant equivialent to the previous Interval's start instant" do
         | 
| 107 | 
            +
                  i = Hitimes::Interval.new
         | 
| 108 | 
            +
                  i.start
         | 
| 109 | 
            +
                  i2 = i.split
         | 
| 110 | 
            +
                  i.stop_instant.should == i2.start_instant
         | 
| 111 | 
            +
                end
         | 
| 112 | 
            +
              end
         | 
| 113 | 
            +
             | 
| 114 | 
            +
            end
         | 
| 115 | 
            +
             | 
    
        data/spec/paths_spec.rb
    ADDED
    
    | @@ -0,0 +1,14 @@ | |
| 1 | 
            +
            require File.expand_path( File.join( File.dirname( __FILE__ ), "spec_helper.rb" ) )
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'hitimes/paths'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Hitimes::Paths do
         | 
| 6 | 
            +
              it "can access the root dir of the project" do
         | 
| 7 | 
            +
                Hitimes::Paths.root_dir.should == File.expand_path( File.join( File.dirname( __FILE__ ), ".." ) ) + ::File::SEPARATOR
         | 
| 8 | 
            +
              end
         | 
| 9 | 
            +
             | 
| 10 | 
            +
              it "can access the lib path of the project" do
         | 
| 11 | 
            +
                Hitimes::Paths.lib_path.should == File.expand_path( File.join( File.dirname( __FILE__ ), "..", "lib" ) ) + ::File::SEPARATOR
         | 
| 12 | 
            +
              end
         | 
| 13 | 
            +
                                                            
         | 
| 14 | 
            +
            end
         | 
    
        data/spec/spec_helper.rb
    ADDED
    
    
    
        data/spec/stats_spec.rb
    ADDED
    
    | @@ -0,0 +1,48 @@ | |
| 1 | 
            +
            require File.expand_path( File.join( File.dirname( __FILE__ ), "spec_helper.rb" ) )
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'hitimes_ext'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Hitimes::Stats do
         | 
| 6 | 
            +
              before( :each ) do
         | 
| 7 | 
            +
                @stats = Hitimes::Stats.new
         | 
| 8 | 
            +
                @full_stats = Hitimes::Stats.new
         | 
| 9 | 
            +
                
         | 
| 10 | 
            +
                [ 1, 2, 3].each { |i| @full_stats.update( i ) }
         | 
| 11 | 
            +
              end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
              it "is initialized with 0 values" do
         | 
| 14 | 
            +
                @stats.count.should == 0
         | 
| 15 | 
            +
                @stats.min.should == 0.0
         | 
| 16 | 
            +
                @stats.max.should == 0.0
         | 
| 17 | 
            +
                @stats.sum.should == 0.0
         | 
| 18 | 
            +
              end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
              it "calculates the mean correctly" do
         | 
| 21 | 
            +
                @full_stats.mean.should == 2.0
         | 
| 22 | 
            +
              end
         | 
| 23 | 
            +
             | 
| 24 | 
            +
              it "calculates the rate correctly" do
         | 
| 25 | 
            +
                @full_stats.rate.should == 0.5
         | 
| 26 | 
            +
              end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
              it "tracks the maximum value" do
         | 
| 29 | 
            +
                @full_stats.max.should == 3.0
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              it "tracks the minimum value" do
         | 
| 33 | 
            +
                @full_stats.min.should == 1.0
         | 
| 34 | 
            +
              end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
              it "tracks the count" do
         | 
| 37 | 
            +
                @full_stats.count.should == 3
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
              
         | 
| 40 | 
            +
              it "tracks the sum" do
         | 
| 41 | 
            +
                @full_stats.sum.should == 6.0
         | 
| 42 | 
            +
              end
         | 
| 43 | 
            +
             | 
| 44 | 
            +
              it "calculates the standard deviation" do
         | 
| 45 | 
            +
                @full_stats.stddev.should == 1.0
         | 
| 46 | 
            +
              end 
         | 
| 47 | 
            +
             | 
| 48 | 
            +
            end
         | 
    
        data/spec/timer_spec.rb
    ADDED
    
    | @@ -0,0 +1,105 @@ | |
| 1 | 
            +
            require File.expand_path( File.join( File.dirname( __FILE__ ), "spec_helper.rb" ) )
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'hitimes/timer'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            describe Hitimes::Timer do
         | 
| 6 | 
            +
             | 
| 7 | 
            +
              it "knows if it is running or not" do
         | 
| 8 | 
            +
                t = Hitimes::Timer.new
         | 
| 9 | 
            +
                t.should_not be_running
         | 
| 10 | 
            +
                t.start
         | 
| 11 | 
            +
                t.should be_running
         | 
| 12 | 
            +
                t.stop
         | 
| 13 | 
            +
                t.should_not be_running
         | 
| 14 | 
            +
              end
         | 
| 15 | 
            +
             | 
| 16 | 
            +
              it "#split returns the last duration and the timer is still running" do
         | 
| 17 | 
            +
                t = Hitimes::Timer.now
         | 
| 18 | 
            +
                d = t.split
         | 
| 19 | 
            +
                t.should be_running
         | 
| 20 | 
            +
                d.should > 0
         | 
| 21 | 
            +
                t.count.should == 1
         | 
| 22 | 
            +
                t.duration.should == d
         | 
| 23 | 
            +
              end
         | 
| 24 | 
            +
             | 
| 25 | 
            +
              it "#stop returns false if called more than once in a row" do
         | 
| 26 | 
            +
                t = Hitimes::Timer.new
         | 
| 27 | 
            +
                t.start
         | 
| 28 | 
            +
                t.stop.should > 0
         | 
| 29 | 
            +
                t.stop.should == false
         | 
| 30 | 
            +
              end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
              it "does not count a currently running interval as an interval in calculations" do
         | 
| 33 | 
            +
                t = Hitimes::Timer.new
         | 
| 34 | 
            +
                t.start
         | 
| 35 | 
            +
                t.count.should == 0
         | 
| 36 | 
            +
                t.split
         | 
| 37 | 
            +
                t.count.should == 1
         | 
| 38 | 
            +
              end
         | 
| 39 | 
            +
             | 
| 40 | 
            +
              it "#split called on a stopped timer does nothing" do
         | 
| 41 | 
            +
                t = Hitimes::Timer.new
         | 
| 42 | 
            +
                t.start
         | 
| 43 | 
            +
                t.stop
         | 
| 44 | 
            +
                t.split.should == false
         | 
| 45 | 
            +
              end
         | 
| 46 | 
            +
             | 
| 47 | 
            +
              it "calculates the mean of the durations" do
         | 
| 48 | 
            +
                t = Hitimes::Timer.new
         | 
| 49 | 
            +
                2.times { t.start ; sleep 0.05 ; t.stop }
         | 
| 50 | 
            +
                t.mean.should > 0.04
         | 
| 51 | 
            +
              end
         | 
| 52 | 
            +
             | 
| 53 | 
            +
              it "calculates the rate of the counts " do
         | 
| 54 | 
            +
                t = Hitimes::Timer.new
         | 
| 55 | 
            +
                5.times { t.start ; sleep 0.05 ; t.stop }
         | 
| 56 | 
            +
                t.rate.should > 19.0
         | 
| 57 | 
            +
              end
         | 
| 58 | 
            +
             | 
| 59 | 
            +
             | 
| 60 | 
            +
              it "calculates the stddev of the durations" do
         | 
| 61 | 
            +
                t = Hitimes::Timer.new
         | 
| 62 | 
            +
                2.times { t.start ; sleep 0.05 ; t.stop }
         | 
| 63 | 
            +
                t.stddev.should > 0.0
         | 
| 64 | 
            +
              end
         | 
| 65 | 
            +
             | 
| 66 | 
            +
              it "returns 0.0 for stddev if there is no data" do
         | 
| 67 | 
            +
                t = Hitimes::Timer.new
         | 
| 68 | 
            +
                t.stddev.should == 0.0
         | 
| 69 | 
            +
              end
         | 
| 70 | 
            +
             | 
| 71 | 
            +
              it "retuns 0.0 for mean if there is no data" do
         | 
| 72 | 
            +
                Hitimes::Timer.new.mean.should == 0.0
         | 
| 73 | 
            +
              end
         | 
| 74 | 
            +
             | 
| 75 | 
            +
              it "keeps track of the min value" do
         | 
| 76 | 
            +
                t = Hitimes::Timer.new
         | 
| 77 | 
            +
                2.times { t.start ; sleep 0.05 ; t.stop }
         | 
| 78 | 
            +
                t.min.should > 0
         | 
| 79 | 
            +
              end
         | 
| 80 | 
            +
             | 
| 81 | 
            +
              it "keeps track of the max value" do
         | 
| 82 | 
            +
                t = Hitimes::Timer.new
         | 
| 83 | 
            +
                2.times { t.start ; sleep 0.05 ; t.stop }
         | 
| 84 | 
            +
                t.max.should > 0
         | 
| 85 | 
            +
              end
         | 
| 86 | 
            +
             | 
| 87 | 
            +
              it "can create an already running timer" do
         | 
| 88 | 
            +
                t = Hitimes::Timer.now
         | 
| 89 | 
            +
                t.should be_running
         | 
| 90 | 
            +
              end
         | 
| 91 | 
            +
             | 
| 92 | 
            +
              it "can measure a block of code's execution time" do
         | 
| 93 | 
            +
                dur = Hitimes::Timer.measure { sleep 0.05 }
         | 
| 94 | 
            +
                dur.should > 0.025
         | 
| 95 | 
            +
              end
         | 
| 96 | 
            +
             | 
| 97 | 
            +
              it "can measuer a block of code from an instance" do
         | 
| 98 | 
            +
                t = Hitimes::Timer.new
         | 
| 99 | 
            +
                3.times { t.measure { sleep 0.05 } }
         | 
| 100 | 
            +
                t.duration.should > 0.14
         | 
| 101 | 
            +
                t.count.should == 3
         | 
| 102 | 
            +
              end
         | 
| 103 | 
            +
             | 
| 104 | 
            +
            end
         | 
| 105 | 
            +
             | 
| @@ -0,0 +1,27 @@ | |
| 1 | 
            +
            require File.expand_path( File.join( File.dirname( __FILE__ ), "spec_helper" ) )
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            describe "Hitimes::Version" do
         | 
| 4 | 
            +
                it "should have a major numbers that is >= 0" do
         | 
| 5 | 
            +
                    Hitimes::Version::MAJOR.should >= 0
         | 
| 6 | 
            +
                end 
         | 
| 7 | 
            +
             | 
| 8 | 
            +
                it "should have a minor number that is >= 0" do
         | 
| 9 | 
            +
                    Hitimes::Version::MINOR.should >= 0
         | 
| 10 | 
            +
                end 
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                it "should have a tiny number that is >= 0" do
         | 
| 13 | 
            +
                    Hitimes::Version::BUILD.should >= 0
         | 
| 14 | 
            +
                end 
         | 
| 15 | 
            +
             | 
| 16 | 
            +
                it "should have an array representation" do
         | 
| 17 | 
            +
                    Hitimes::Version.to_a.should have(3).items
         | 
| 18 | 
            +
                end 
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                it "should have a string representation" do
         | 
| 21 | 
            +
                    Hitimes::Version.to_s.should match(/\d+\.\d+\.\d+/)
         | 
| 22 | 
            +
                end 
         | 
| 23 | 
            +
             | 
| 24 | 
            +
                it "should be accessable as a constant" do
         | 
| 25 | 
            +
                    Hitimes::VERSION.should match(/\d+\.\d+\.\d+/)
         | 
| 26 | 
            +
                end 
         | 
| 27 | 
            +
            end
         | 
    
        data/tasks/announce.rake
    ADDED
    
    | @@ -0,0 +1,39 @@ | |
| 1 | 
            +
            require 'tasks/config'
         | 
| 2 | 
            +
            #-------------------------------------------------------------------------------
         | 
| 3 | 
            +
            # announcement methods
         | 
| 4 | 
            +
            #-------------------------------------------------------------------------------
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            proj_config = Configuration.for('project')
         | 
| 7 | 
            +
            namespace :announce do
         | 
| 8 | 
            +
              desc "create email for ruby-talk"
         | 
| 9 | 
            +
              task :email do
         | 
| 10 | 
            +
                info = Utils.announcement
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                File.open("email.txt", "w") do |mail|
         | 
| 13 | 
            +
                  mail.puts "From: #{proj_config.author} <#{proj_config.email}>"
         | 
| 14 | 
            +
                  mail.puts "To: ruby-talk@ruby-lang.org"
         | 
| 15 | 
            +
                  mail.puts "Date: #{Time.now.rfc2822}"
         | 
| 16 | 
            +
                  mail.puts "Subject: [ANN] #{info[:subject]}"
         | 
| 17 | 
            +
                  mail.puts
         | 
| 18 | 
            +
                  mail.puts info[:title]
         | 
| 19 | 
            +
                  mail.puts 
         | 
| 20 | 
            +
                  mail.puts "  gem install #{Hitimes::GEM_SPEC.name}"
         | 
| 21 | 
            +
                  mail.puts
         | 
| 22 | 
            +
                  mail.puts info[:urls]
         | 
| 23 | 
            +
                  mail.puts 
         | 
| 24 | 
            +
                  mail.puts info[:description]
         | 
| 25 | 
            +
                  mail.puts 
         | 
| 26 | 
            +
                  mail.puts "{{ Release notes for Version #{Hitimes::VERSION} }}"
         | 
| 27 | 
            +
                  mail.puts 
         | 
| 28 | 
            +
                  mail.puts info[:release_notes]
         | 
| 29 | 
            +
                  mail.puts
         | 
| 30 | 
            +
                end 
         | 
| 31 | 
            +
                puts "Created the following as email.txt:"
         | 
| 32 | 
            +
                puts "-" * 72
         | 
| 33 | 
            +
                puts File.read("email.txt")
         | 
| 34 | 
            +
                puts "-" * 72
         | 
| 35 | 
            +
              end 
         | 
| 36 | 
            +
             | 
| 37 | 
            +
              CLOBBER << "email.txt"
         | 
| 38 | 
            +
            end
         | 
| 39 | 
            +
             | 
    
        data/tasks/config.rb
    ADDED
    
    | @@ -0,0 +1,107 @@ | |
| 1 | 
            +
            require 'configuration'
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'rake'
         | 
| 4 | 
            +
            require 'tasks/utils'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            #-----------------------------------------------------------------------
         | 
| 7 | 
            +
            # General project configuration
         | 
| 8 | 
            +
            #-----------------------------------------------------------------------
         | 
| 9 | 
            +
            Configuration.for('project') {
         | 
| 10 | 
            +
              name          "hitimes"
         | 
| 11 | 
            +
              version       Hitimes::Version.to_s
         | 
| 12 | 
            +
              author        "Jeremy Hinegardner"
         | 
| 13 | 
            +
              email         "jeremy at copiousfreetime dot org"
         | 
| 14 | 
            +
              homepage      "http://copiousfreetime.rubyforge.org/hitimes/"
         | 
| 15 | 
            +
              description   Utils.section_of("README", "description")
         | 
| 16 | 
            +
              summary       description.split(".").first
         | 
| 17 | 
            +
              history       "HISTORY"
         | 
| 18 | 
            +
              license       FileList["LICENSE"]
         | 
| 19 | 
            +
              readme        "README"
         | 
| 20 | 
            +
            }
         | 
| 21 | 
            +
             | 
| 22 | 
            +
            #-----------------------------------------------------------------------
         | 
| 23 | 
            +
            # Packaging 
         | 
| 24 | 
            +
            #-----------------------------------------------------------------------
         | 
| 25 | 
            +
            Configuration.for('packaging') {
         | 
| 26 | 
            +
              # files in the project 
         | 
| 27 | 
            +
              proj_conf = Configuration.for('project')
         | 
| 28 | 
            +
              files {
         | 
| 29 | 
            +
                bin       FileList["bin/*"]
         | 
| 30 | 
            +
                ext       FileList["ext/*.{c,h,rb}"]
         | 
| 31 | 
            +
                examples  FileList["examples/*.rb"]
         | 
| 32 | 
            +
                lib       FileList["lib/**/*.rb"]
         | 
| 33 | 
            +
                test      FileList["spec/**/*.rb", "test/**/*.rb"]
         | 
| 34 | 
            +
                data      FileList["data/**/*"]
         | 
| 35 | 
            +
                tasks     FileList["tasks/**/*.r{ake,b}"]
         | 
| 36 | 
            +
                rdoc      FileList[proj_conf.readme, proj_conf.history,
         | 
| 37 | 
            +
                                   proj_conf.license] + lib + FileList["ext/*.c"]
         | 
| 38 | 
            +
                all       bin + examples + ext + lib + test + data + rdoc + tasks  + FileList["Rakefile"]
         | 
| 39 | 
            +
              }
         | 
| 40 | 
            +
             | 
| 41 | 
            +
              # ways to package the results
         | 
| 42 | 
            +
              formats {
         | 
| 43 | 
            +
                tgz true
         | 
| 44 | 
            +
                zip true
         | 
| 45 | 
            +
                gem Configuration::Table.has_key?('gem')
         | 
| 46 | 
            +
              }
         | 
| 47 | 
            +
            }
         | 
| 48 | 
            +
             | 
| 49 | 
            +
            #-----------------------------------------------------------------------
         | 
| 50 | 
            +
            # Gem packaging
         | 
| 51 | 
            +
            #-----------------------------------------------------------------------
         | 
| 52 | 
            +
            Configuration.for("gem") {
         | 
| 53 | 
            +
              spec "gemspec.rb"
         | 
| 54 | 
            +
              Configuration.for('packaging').files.all << spec
         | 
| 55 | 
            +
            }
         | 
| 56 | 
            +
             | 
| 57 | 
            +
            #-----------------------------------------------------------------------
         | 
| 58 | 
            +
            # Testing
         | 
| 59 | 
            +
            #   - change mode to 'testunit' to use unit testing
         | 
| 60 | 
            +
            #-----------------------------------------------------------------------
         | 
| 61 | 
            +
            Configuration.for('test') {
         | 
| 62 | 
            +
              mode      "spec"
         | 
| 63 | 
            +
              files     Configuration.for("packaging").files.test
         | 
| 64 | 
            +
              options   %w[ --format specdoc --color ]
         | 
| 65 | 
            +
              ruby_opts %w[ ]
         | 
| 66 | 
            +
            }
         | 
| 67 | 
            +
             | 
| 68 | 
            +
            #-----------------------------------------------------------------------
         | 
| 69 | 
            +
            # Rcov 
         | 
| 70 | 
            +
            #-----------------------------------------------------------------------
         | 
| 71 | 
            +
            Configuration.for('rcov') {
         | 
| 72 | 
            +
              output_dir  "coverage"
         | 
| 73 | 
            +
              libs        %w[ lib ]
         | 
| 74 | 
            +
              rcov_opts   %w[ --html ]
         | 
| 75 | 
            +
              ruby_opts   %w[ ]
         | 
| 76 | 
            +
              test_files  Configuration.for('packaging').files.test
         | 
| 77 | 
            +
            }
         | 
| 78 | 
            +
             | 
| 79 | 
            +
            #-----------------------------------------------------------------------
         | 
| 80 | 
            +
            # Rdoc 
         | 
| 81 | 
            +
            #-----------------------------------------------------------------------
         | 
| 82 | 
            +
            Configuration.for('rdoc') {
         | 
| 83 | 
            +
              files       Configuration.for('packaging').files.rdoc
         | 
| 84 | 
            +
              main_page   files.first
         | 
| 85 | 
            +
              title       Configuration.for('project').name
         | 
| 86 | 
            +
              options     %w[ --line-numbers --inline-source ]#-f darkfish ]
         | 
| 87 | 
            +
              output_dir  "doc"
         | 
| 88 | 
            +
            }
         | 
| 89 | 
            +
             | 
| 90 | 
            +
            #-----------------------------------------------------------------------
         | 
| 91 | 
            +
            # Extension
         | 
| 92 | 
            +
            #-----------------------------------------------------------------------
         | 
| 93 | 
            +
            Configuration.for('extension') {
         | 
| 94 | 
            +
              configs   Configuration.for('packaging').files.ext.find_all { |x| %w[ mkrf_conf.rb extconf.rb ].include?(File.basename(x)) }
         | 
| 95 | 
            +
            }
         | 
| 96 | 
            +
             | 
| 97 | 
            +
            #-----------------------------------------------------------------------
         | 
| 98 | 
            +
            # Rubyforge 
         | 
| 99 | 
            +
            #-----------------------------------------------------------------------
         | 
| 100 | 
            +
            Configuration.for('rubyforge') {
         | 
| 101 | 
            +
              project       "copiousfreetime"
         | 
| 102 | 
            +
              user          "jjh"
         | 
| 103 | 
            +
              host          "rubyforge.org"
         | 
| 104 | 
            +
              rdoc_location "#{user}@#{host}:/var/www/gforge-projects/#{project}/hitimes"
         | 
| 105 | 
            +
            }
         | 
| 106 | 
            +
             | 
| 107 | 
            +
             |