capistrano-maven 0.0.5 → 0.0.6
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/README.md +1 -0
- data/lib/capistrano-maven/deploy.rb +37 -9
- data/lib/capistrano-maven/version.rb +1 -1
- metadata +3 -2
    
        data/README.md
    CHANGED
    
    | @@ -48,6 +48,7 @@ Following options are available to manage your Maven build. | |
| 48 48 | 
             
             * `:mvn_template_path` - specify ERB template path for settings.xml.
         | 
| 49 49 | 
             
             * `:mvn_java_home` - optional `JAVA_HOME` settings for Maven commands.
         | 
| 50 50 | 
             
             * `:mvn_java_home_local` - optional `JAVA_HOME` settings for Maven commands in localhost.
         | 
| 51 | 
            +
             * `:mvn_release_build` - Skip building on SNAPSHOT version. `false` by default.
         | 
| 51 52 |  | 
| 52 53 | 
             
            ## Contributing
         | 
| 53 54 |  | 
| @@ -1,6 +1,5 @@ | |
| 1 1 |  | 
| 2 2 | 
             
            require 'capistrano'
         | 
| 3 | 
            -
            require 'tempfile'
         | 
| 4 3 | 
             
            require 'uri'
         | 
| 5 4 |  | 
| 6 5 | 
             
            module Capistrano
         | 
| @@ -201,7 +200,7 @@ module Capistrano | |
| 201 200 |  | 
| 202 201 | 
             
                      task(:update_settings, :roles => :app, :except => { :no_release => true }) {
         | 
| 203 202 | 
             
                        srcs = mvn_settings.map { |f| File.join(mvn_template_path, f) }
         | 
| 204 | 
            -
                        tmps = mvn_settings.map { |f|  | 
| 203 | 
            +
                        tmps = mvn_settings.map { |f| capture("mktemp").chomp }
         | 
| 205 204 | 
             
                        dsts = mvn_settings.map { |f| File.join(mvn_settings_path, f) }
         | 
| 206 205 | 
             
                        begin
         | 
| 207 206 | 
             
                          srcs.zip(tmps).each do |src, tmp|
         | 
| @@ -215,7 +214,7 @@ module Capistrano | |
| 215 214 |  | 
| 216 215 | 
             
                      task(:update_settings_locally, :except => { :no_release => true }) {
         | 
| 217 216 | 
             
                        srcs = mvn_settings_local.map { |f| File.join(mvn_template_path, f) }
         | 
| 218 | 
            -
                        tmps = mvn_settings.map { |f|  | 
| 217 | 
            +
                        tmps = mvn_settings.map { |f| `mktemp`.chomp }
         | 
| 219 218 | 
             
                        dsts = mvn_settings_local.map { |f| File.join(mvn_settings_path_local, f) }
         | 
| 220 219 | 
             
                        begin
         | 
| 221 220 | 
             
                          srcs.zip(tmps).each do |src, tmp|
         | 
| @@ -247,22 +246,51 @@ module Capistrano | |
| 247 246 | 
             
                        }
         | 
| 248 247 | 
             
                      }
         | 
| 249 248 |  | 
| 249 | 
            +
                      def _mvn(cmd, path, goals=[])
         | 
| 250 | 
            +
                        "cd #{path.dump} && #{cmd} #{goals.map { |s| s.dump }.join(' ')}"
         | 
| 251 | 
            +
                      end
         | 
| 252 | 
            +
             | 
| 253 | 
            +
                      def _mvn_parse_version(s)
         | 
| 254 | 
            +
                        # FIXME: is there any better way to get project version?
         | 
| 255 | 
            +
                        s.split(/(?:\r?\n)+/).reject { |line| /^\[[A-Z]+\]/ =~ line }.last
         | 
| 256 | 
            +
                      end
         | 
| 257 | 
            +
             | 
| 258 | 
            +
                      _cset(:mvn_release_build, false)
         | 
| 259 | 
            +
                      _cset(:mvn_snapshot_pattern, /-SNAPSHOT$/i)
         | 
| 260 | 
            +
                      _cset(:mvn_project_version) {
         | 
| 261 | 
            +
                        _mvn_parse_version(capture(_mvn(mvn_cmd, mvn_project_path, %w(-Dexpression=project.version help:evaluate))))
         | 
| 262 | 
            +
                      }
         | 
| 263 | 
            +
                      _cset(:mvn_project_version_local) {
         | 
| 264 | 
            +
                        _mvn_parse_version(run_locally(_mvn(mvn_cmd_local, mvn_project_path_local, %w(-Dexpression=project.version help:evaluate))))
         | 
| 265 | 
            +
                      }
         | 
| 266 | 
            +
             | 
| 267 | 
            +
                      def _validate_project_version(version_key)
         | 
| 268 | 
            +
                        if mvn_release_build
         | 
| 269 | 
            +
                          version = fetch(version_key)
         | 
| 270 | 
            +
                          if mvn_snapshot_pattern === version
         | 
| 271 | 
            +
                            abort("Skip to build project since \`#{version}' is a SNAPSHOT version.")
         | 
| 272 | 
            +
                          end
         | 
| 273 | 
            +
                        end
         | 
| 274 | 
            +
                      end
         | 
| 275 | 
            +
             | 
| 250 276 | 
             
                      desc("Perform maven build.")
         | 
| 251 277 | 
             
                      task(:execute, :roles => :app, :except => { :no_release => true }) {
         | 
| 252 278 | 
             
                        on_rollback {
         | 
| 253 | 
            -
                          run( | 
| 279 | 
            +
                          run(_mvn(mvn_cmd, mvn_project_path, %w(clean)))
         | 
| 254 280 | 
             
                        }
         | 
| 255 | 
            -
                         | 
| 281 | 
            +
                        _validate_project_version(:mvn_project_version)
         | 
| 282 | 
            +
                        run(_mvn(mvn_cmd, mvn_project_path, mvn_goals))
         | 
| 256 283 | 
             
                      }
         | 
| 257 284 |  | 
| 258 285 | 
             
                      desc("Perform maven build locally.")
         | 
| 259 286 | 
             
                      task(:execute_locally, :roles => :app, :except => { :no_release => true }) {
         | 
| 260 287 | 
             
                        on_rollback {
         | 
| 261 | 
            -
                          run_locally( | 
| 288 | 
            +
                          run_locally(_mvn(mvn_cmd_local, mvn_project_path_local, %w(clean)))
         | 
| 262 289 | 
             
                        }
         | 
| 263 | 
            -
                         | 
| 264 | 
            -
                         | 
| 265 | 
            -
                         | 
| 290 | 
            +
                        _validate_project_version(:mvn_project_version_local)
         | 
| 291 | 
            +
                        cmdline = _mvn(mvn_cmd_local, mvn_project_path_local, mvn_goals)
         | 
| 292 | 
            +
                        logger.info(cmdline)
         | 
| 293 | 
            +
                        abort("execution failure") unless system(cmdline)
         | 
| 266 294 | 
             
                      }
         | 
| 267 295 |  | 
| 268 296 | 
             
                      _cset(:mvn_tar, 'tar')
         | 
    
        metadata
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            --- !ruby/object:Gem::Specification
         | 
| 2 2 | 
             
            name: capistrano-maven
         | 
| 3 3 | 
             
            version: !ruby/object:Gem::Version
         | 
| 4 | 
            -
              version: 0.0. | 
| 4 | 
            +
              version: 0.0.6
         | 
| 5 5 | 
             
              prerelease: 
         | 
| 6 6 | 
             
            platform: ruby
         | 
| 7 7 | 
             
            authors:
         | 
| @@ -9,7 +9,7 @@ authors: | |
| 9 9 | 
             
            autorequire: 
         | 
| 10 10 | 
             
            bindir: bin
         | 
| 11 11 | 
             
            cert_chain: []
         | 
| 12 | 
            -
            date:  | 
| 12 | 
            +
            date: 2013-02-19 00:00:00.000000000 Z
         | 
| 13 13 | 
             
            dependencies:
         | 
| 14 14 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 15 15 | 
             
              name: capistrano
         | 
| @@ -69,3 +69,4 @@ signing_key: | |
| 69 69 | 
             
            specification_version: 3
         | 
| 70 70 | 
             
            summary: a capistrano recipe to deploy Apache Maven based projects.
         | 
| 71 71 | 
             
            test_files: []
         | 
| 72 | 
            +
            has_rdoc: 
         |