ore-tasks 0.4.1 → 0.4.2
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/ChangeLog.md +13 -0
- data/Rakefile +1 -1
- data/gemspec.yml +3 -3
- data/lib/ore/scm/tasks.rb +2 -0
- data/lib/ore/scm/tasks/git.rb +55 -0
- data/lib/ore/scm/tasks/tasks.rb +10 -0
- data/lib/ore/tasks.rb +29 -22
- data/spec/spec_helper.rb +2 -2
- metadata +9 -3
    
        data/ChangeLog.md
    CHANGED
    
    | @@ -1,3 +1,16 @@ | |
| 1 | 
            +
            ### 0.4.2 / 2011-02-15
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            * Moved SCM specific logic into {Ore::SCM::Tasks}.
         | 
| 4 | 
            +
            * Only `git push` if the Git repository has remote sources.
         | 
| 5 | 
            +
            * Added the `status` task which checks for uncommitted changes,
         | 
| 6 | 
            +
              and lists modified files.
         | 
| 7 | 
            +
            * Have the `build` task depend on the `status` task, to prevent gems
         | 
| 8 | 
            +
              from being built, installed or pushed which contain uncomitted changes.
         | 
| 9 | 
            +
             | 
| 10 | 
            +
            ### 0.4.1 / 2011-02-12
         | 
| 11 | 
            +
             | 
| 12 | 
            +
            * Emergency release due to typo.
         | 
| 13 | 
            +
             | 
| 1 14 | 
             
            ### 0.4.0 / 2011-02-12
         | 
| 2 15 |  | 
| 3 16 | 
             
            * Added {Ore::Tasks#gem}.
         | 
    
        data/Rakefile
    CHANGED
    
    
    
        data/gemspec.yml
    CHANGED
    
    | @@ -1,5 +1,5 @@ | |
| 1 1 | 
             
            name: ore-tasks
         | 
| 2 | 
            -
            version: 0.4. | 
| 2 | 
            +
            version: 0.4.2
         | 
| 3 3 | 
             
            summary: Rake tasks for managing and releasing RubyGems using Ore.
         | 
| 4 4 | 
             
            description:
         | 
| 5 5 | 
             
              Simple Rake tasks for managing and releasing a RubyGem project generated
         | 
| @@ -10,8 +10,8 @@ homepage: http://github.com/ruby-ore/ore-tasks | |
| 10 10 | 
             
            has_yard: true
         | 
| 11 11 |  | 
| 12 12 | 
             
            dependencies:
         | 
| 13 | 
            -
              ore-core: ~> 0.1.3
         | 
| 13 | 
            +
              ore-core: ~> 0.1, >= 0.1.3
         | 
| 14 14 |  | 
| 15 15 | 
             
            development_dependencies:
         | 
| 16 | 
            -
              rspec: ~> 2.4 | 
| 16 | 
            +
              rspec: ~> 2.4
         | 
| 17 17 | 
             
              yard: ~> 0.6.0
         | 
| @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            module Ore
         | 
| 2 | 
            +
              module SCM
         | 
| 3 | 
            +
                module Tasks
         | 
| 4 | 
            +
                  module Git
         | 
| 5 | 
            +
                    #
         | 
| 6 | 
            +
                    # Registers the `sync` and `tag` release tasks when extended.
         | 
| 7 | 
            +
                    #
         | 
| 8 | 
            +
                    def self.extended(tasks)
         | 
| 9 | 
            +
                      tasks.release_tasks.unshift('sync')
         | 
| 10 | 
            +
                      tasks.release_tasks.push('tag')
         | 
| 11 | 
            +
                    end
         | 
| 12 | 
            +
             | 
| 13 | 
            +
                    #
         | 
| 14 | 
            +
                    # Defines the [Git](http://www.git-scm.com) specific tasks.
         | 
| 15 | 
            +
                    #
         | 
| 16 | 
            +
                    def define_scm_tasks
         | 
| 17 | 
            +
                      @remote = `git remote`.empty?
         | 
| 18 | 
            +
             | 
| 19 | 
            +
                      task :sync do
         | 
| 20 | 
            +
                        run 'git', 'push' if @remote
         | 
| 21 | 
            +
                      end
         | 
| 22 | 
            +
             | 
| 23 | 
            +
                      desc 'Tags a release and pushes the tag'
         | 
| 24 | 
            +
                      task :tag do
         | 
| 25 | 
            +
                        run 'git', 'tag', "v#{@project.version}"
         | 
| 26 | 
            +
                        run 'git', 'push', '--tags' if @remote
         | 
| 27 | 
            +
                      end
         | 
| 28 | 
            +
                    end
         | 
| 29 | 
            +
             | 
| 30 | 
            +
                    #
         | 
| 31 | 
            +
                    # Lists the modified files within the project.
         | 
| 32 | 
            +
                    #
         | 
| 33 | 
            +
                    # @return [Hash{String => String}]
         | 
| 34 | 
            +
                    #   The paths and statuses of the modified files.
         | 
| 35 | 
            +
                    #
         | 
| 36 | 
            +
                    # @since 0.4.2
         | 
| 37 | 
            +
                    #
         | 
| 38 | 
            +
                    def dirty_files
         | 
| 39 | 
            +
                      files = {}
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                      `git status --porcelain`.each_line do |line|
         | 
| 42 | 
            +
                        status, name = line.chomp.split
         | 
| 43 | 
            +
             | 
| 44 | 
            +
                        # ignore untracked files
         | 
| 45 | 
            +
                        unless status == '??'
         | 
| 46 | 
            +
                          files[name] = status
         | 
| 47 | 
            +
                        end
         | 
| 48 | 
            +
                      end
         | 
| 49 | 
            +
             | 
| 50 | 
            +
                      return files
         | 
| 51 | 
            +
                    end
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
            end
         | 
    
        data/lib/ore/tasks.rb
    CHANGED
    
    | @@ -1,3 +1,4 @@ | |
| 1 | 
            +
            require 'ore/scm/tasks'
         | 
| 1 2 | 
             
            require 'ore/project'
         | 
| 2 3 |  | 
| 3 4 | 
             
            require 'rake/tasklib'
         | 
| @@ -29,8 +30,20 @@ module Ore | |
| 29 30 | 
             
                # Defines the core Ore tasks.
         | 
| 30 31 | 
             
                #
         | 
| 31 32 | 
             
                def define_core_tasks
         | 
| 33 | 
            +
                  task :status do
         | 
| 34 | 
            +
                    changes = dirty_files
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    unless changes.empty?
         | 
| 37 | 
            +
                      puts "The following files were modified:"
         | 
| 38 | 
            +
                      changes.each { |path,status| puts "#{status}\t#{path}" }
         | 
| 39 | 
            +
                      puts
         | 
| 40 | 
            +
             | 
| 41 | 
            +
                      abort "The project has uncommitted changes!"
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 32 45 | 
             
                  desc "Only builds a Gem"
         | 
| 33 | 
            -
                  task :build do
         | 
| 46 | 
            +
                  task :build => :status do
         | 
| 34 47 | 
             
                    @project.build!
         | 
| 35 48 | 
             
                  end
         | 
| 36 49 |  | 
| @@ -99,24 +112,6 @@ module Ore | |
| 99 112 | 
             
                  end
         | 
| 100 113 | 
             
                end
         | 
| 101 114 |  | 
| 102 | 
            -
                #
         | 
| 103 | 
            -
                # Defines the Ore tasks specific to [git](http://www.git-scm.com).
         | 
| 104 | 
            -
                #
         | 
| 105 | 
            -
                def define_git_tasks
         | 
| 106 | 
            -
                  task :sync do
         | 
| 107 | 
            -
                    run 'git', 'push'
         | 
| 108 | 
            -
                  end
         | 
| 109 | 
            -
             | 
| 110 | 
            -
                  desc 'Tags a release and pushes the tag'
         | 
| 111 | 
            -
                  task :tag do
         | 
| 112 | 
            -
                    run 'git', 'tag', "v#{@project.version}"
         | 
| 113 | 
            -
                    run 'git', 'push', '--tags'
         | 
| 114 | 
            -
                  end
         | 
| 115 | 
            -
             | 
| 116 | 
            -
                  @release_tasks.unshift('sync')
         | 
| 117 | 
            -
                  @release_tasks.push('tag')
         | 
| 118 | 
            -
                end
         | 
| 119 | 
            -
             | 
| 120 115 | 
             
                #
         | 
| 121 116 | 
             
                # Defines the RubyGems specific tasks.
         | 
| 122 117 | 
             
                #
         | 
| @@ -149,9 +144,9 @@ module Ore | |
| 149 144 | 
             
                def define
         | 
| 150 145 | 
             
                  define_core_tasks
         | 
| 151 146 |  | 
| 152 | 
            -
                   | 
| 153 | 
            -
             | 
| 154 | 
            -
                     | 
| 147 | 
            +
                  if (scm_tasks = SCM::Tasks::SUPPORTED[@project.scm])
         | 
| 148 | 
            +
                    extend scm_tasks
         | 
| 149 | 
            +
                    define_scm_tasks
         | 
| 155 150 | 
             
                  end
         | 
| 156 151 |  | 
| 157 152 | 
             
                  unless @project.bundler?
         | 
| @@ -198,5 +193,17 @@ module Ore | |
| 198 193 | 
             
                  run(RUBY,'-S','gem',*arguments)
         | 
| 199 194 | 
             
                end
         | 
| 200 195 |  | 
| 196 | 
            +
                #
         | 
| 197 | 
            +
                # Lists the modified files within the project.
         | 
| 198 | 
            +
                #
         | 
| 199 | 
            +
                # @return [Hash{String => String}]
         | 
| 200 | 
            +
                #   The paths and statuses of the modified files.
         | 
| 201 | 
            +
                #
         | 
| 202 | 
            +
                # @since 0.4.2
         | 
| 203 | 
            +
                #
         | 
| 204 | 
            +
                def dirty_files
         | 
| 205 | 
            +
                  {}
         | 
| 206 | 
            +
                end
         | 
| 207 | 
            +
             | 
| 201 208 | 
             
              end
         | 
| 202 209 | 
             
            end
         | 
    
        data/spec/spec_helper.rb
    CHANGED
    
    
    
        metadata
    CHANGED
    
    | @@ -2,7 +2,7 @@ | |
| 2 2 | 
             
            name: ore-tasks
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version 
         | 
| 4 4 | 
             
              prerelease: 
         | 
| 5 | 
            -
              version: 0.4. | 
| 5 | 
            +
              version: 0.4.2
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors: 
         | 
| 8 8 | 
             
            - Postmodern
         | 
| @@ -10,7 +10,7 @@ autorequire: | |
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 12 |  | 
| 13 | 
            -
            date: 2011-02- | 
| 13 | 
            +
            date: 2011-02-15 00:00:00 -08:00
         | 
| 14 14 | 
             
            default_executable: 
         | 
| 15 15 | 
             
            dependencies: 
         | 
| 16 16 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -20,6 +20,9 @@ dependencies: | |
| 20 20 | 
             
                none: false
         | 
| 21 21 | 
             
                requirements: 
         | 
| 22 22 | 
             
                - - ~>
         | 
| 23 | 
            +
                  - !ruby/object:Gem::Version 
         | 
| 24 | 
            +
                    version: "0.1"
         | 
| 25 | 
            +
                - - ">="
         | 
| 23 26 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 24 27 | 
             
                    version: 0.1.3
         | 
| 25 28 | 
             
              type: :runtime
         | 
| @@ -32,7 +35,7 @@ dependencies: | |
| 32 35 | 
             
                requirements: 
         | 
| 33 36 | 
             
                - - ~>
         | 
| 34 37 | 
             
                  - !ruby/object:Gem::Version 
         | 
| 35 | 
            -
                    version: 2.4 | 
| 38 | 
            +
                    version: "2.4"
         | 
| 36 39 | 
             
              type: :development
         | 
| 37 40 | 
             
              version_requirements: *id002
         | 
| 38 41 | 
             
            - !ruby/object:Gem::Dependency 
         | 
| @@ -66,6 +69,9 @@ files: | |
| 66 69 | 
             
            - README.md
         | 
| 67 70 | 
             
            - Rakefile
         | 
| 68 71 | 
             
            - gemspec.yml
         | 
| 72 | 
            +
            - lib/ore/scm/tasks.rb
         | 
| 73 | 
            +
            - lib/ore/scm/tasks/git.rb
         | 
| 74 | 
            +
            - lib/ore/scm/tasks/tasks.rb
         | 
| 69 75 | 
             
            - lib/ore/tasks.rb
         | 
| 70 76 | 
             
            - ore-tasks.gemspec
         | 
| 71 77 | 
             
            - spec/spec_helper.rb
         |