reap 6.0.0 → 6.0.1
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/ProjectInfo +102 -0
 - data/data/reap/install.rb +62 -0
 - data/forge/ProjectInfo +38 -0
 - data/forge/ProjectInfo.rb +76 -0
 - data/forge/TODO +10 -0
 - data/forge/installer.rb +250 -0
 - data/forge/reference/Rakefile +124 -0
 - data/forge/reference/Rakefile.htm +69 -0
 - data/forge/reference/aRakefile +60 -0
 - data/forge/reference/compositepublisher.rb +24 -0
 - data/forge/reference/ftptools.rb +139 -0
 - data/forge/reference/installers/package.rb +629 -0
 - data/forge/reference/installers/setup.rb +1558 -0
 - data/forge/reference/license-each.rb +85 -0
 - data/forge/reference/publisher.rb +75 -0
 - data/forge/reference/rubyforge.rb +247 -0
 - data/forge/reference/rubyforgepublisher.rb +18 -0
 - data/forge/reference/sshpublisher.rb +47 -0
 - data/forge/reference/suby-cvs.rb +46 -0
 - data/forge/scaffold.rb +126 -0
 - data/forge/unit_runner/README +6 -0
 - data/forge/unit_runner/commentrunner.rb +62 -0
 - data/forge/unit_runner/cunit.rb +17 -0
 - data/forge/unit_runner/forkedrunner.rb +91 -0
 - data/forge/unit_runner/sample.rb +16 -0
 - data/lib/reap/class/extest.rb +2 -7
 - data/lib/reap/class/manifest.rb +7 -11
 - data/lib/reap/class/package.rb +120 -25
 - data/lib/reap/class/rdoc.rb +1 -9
 - data/lib/reap/class/test.rb +2 -7
 - data/lib/reap/tasks.rb +51 -58
 - data/note/LATEST +44 -0
 - data/note/doap.xml +28 -0
 - data/note/history/Rakefile-0.1 +308 -0
 - data/web/ProjectInfo.html +80 -0
 - data/web/images/grape.jpg +0 -0
 - data/web/index.html +312 -0
 - metadata +66 -27
 - data/lib/reap/class/installer.rb +0 -178
 
    
        data/ProjectInfo
    ADDED
    
    | 
         @@ -0,0 +1,102 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- %YAML:1.0
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            version  : 6.0.1
         
     | 
| 
      
 4 
     | 
    
         
            +
            status   : 'beta'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            title    : Reap
         
     | 
| 
      
 7 
     | 
    
         
            +
            name     : reap
         
     | 
| 
      
 8 
     | 
    
         
            +
            author   : Thomas Sawyer
         
     | 
| 
      
 9 
     | 
    
         
            +
            created  : '2004-04-01'
         
     | 
| 
      
 10 
     | 
    
         
            +
            email    : &email transfire@gmail.com
         
     | 
| 
      
 11 
     | 
    
         
            +
            homepage : "http://reap.rubyforge.org"
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            summary  : The Flexible Ruby Project Management Assistant
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            description: >
         
     | 
| 
      
 16 
     | 
    
         
            +
              Reap comprises a set of tasks commonly needed by Ruby package
         
     | 
| 
      
 17 
     | 
    
         
            +
              developers/deployers, such as testing, packaging, releasing, etc.
         
     | 
| 
      
 18 
     | 
    
         
            +
              You can also use Reap to create your own custom tasks.
         
     | 
| 
      
 19 
     | 
    
         
            +
              Reap utilizes a YAML configuration file to harvest common project
         
     | 
| 
      
 20 
     | 
    
         
            +
              information, significantly simplifying these chores.
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            rubyforge:
         
     | 
| 
      
 23 
     | 
    
         
            +
              project  : reap
         
     | 
| 
      
 24 
     | 
    
         
            +
              username : transami
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            # not used yet
         
     | 
| 
      
 27 
     | 
    
         
            +
            revision:
         
     | 
| 
      
 28 
     | 
    
         
            +
              type: darcs
         
     | 
| 
      
 29 
     | 
    
         
            +
              exclude:
         
     | 
| 
      
 30 
     | 
    
         
            +
                - 'forge'
         
     | 
| 
      
 31 
     | 
    
         
            +
                - 'note'
         
     | 
| 
      
 32 
     | 
    
         
            +
                - 'web/doc/api'
         
     | 
| 
      
 33 
     | 
    
         
            +
                - 'web/images'
         
     | 
| 
      
 34 
     | 
    
         
            +
                - 'setup.rb'
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            rdoc: !!rdoc
         
     | 
| 
      
 37 
     | 
    
         
            +
              dir: 'web/doc/api'
         
     | 
| 
      
 38 
     | 
    
         
            +
              main: README
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
            package: !!package
         
     | 
| 
      
 41 
     | 
    
         
            +
              distribute   : [ tar.bz2, gem, deb ] #pac
         
     | 
| 
      
 42 
     | 
    
         
            +
              dependencies : [ facets ]
         
     | 
| 
      
 43 
     | 
    
         
            +
              executables  : [ reap, rubytest ]
         
     | 
| 
      
 44 
     | 
    
         
            +
              dir          : release
         
     | 
| 
      
 45 
     | 
    
         
            +
              #source      : 'http://rubyforge.org/frs/download.php/10311/reap-6.0.1.tar.bz2'
         
     | 
| 
      
 46 
     | 
    
         
            +
              exclude:
         
     | 
| 
      
 47 
     | 
    
         
            +
                - release
         
     | 
| 
      
 48 
     | 
    
         
            +
                - web/doc/api
         
     | 
| 
      
 49 
     | 
    
         
            +
             
     | 
| 
      
 50 
     | 
    
         
            +
            release: !!release
         
     | 
| 
      
 51 
     | 
    
         
            +
              host         : rubyforge.org
         
     | 
| 
      
 52 
     | 
    
         
            +
              username     : transami
         
     | 
| 
      
 53 
     | 
    
         
            +
              project      : reap
         
     | 
| 
      
 54 
     | 
    
         
            +
              groupid      : 811
         
     | 
| 
      
 55 
     | 
    
         
            +
              package      : Reap
         
     | 
| 
      
 56 
     | 
    
         
            +
              dir          : release
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            publish: !!publish
         
     | 
| 
      
 59 
     | 
    
         
            +
              target   : rubyforge
         
     | 
| 
      
 60 
     | 
    
         
            +
              type     : web
         
     | 
| 
      
 61 
     | 
    
         
            +
              host     : rubyforge.org
         
     | 
| 
      
 62 
     | 
    
         
            +
              username : transami
         
     | 
| 
      
 63 
     | 
    
         
            +
              dir      : web
         
     | 
| 
      
 64 
     | 
    
         
            +
             
     | 
| 
      
 65 
     | 
    
         
            +
            ann: !!announce
         
     | 
| 
      
 66 
     | 
    
         
            +
              to       : transfire@gmail.com  # ruby-talk@ruby-lang.org
         
     | 
| 
      
 67 
     | 
    
         
            +
              from     : *email
         
     | 
| 
      
 68 
     | 
    
         
            +
              domain   : unit.rubyforge.org
         
     | 
| 
      
 69 
     | 
    
         
            +
              server   : smtp.gmail.com
         
     | 
| 
      
 70 
     | 
    
         
            +
              port     : 587
         
     | 
| 
      
 71 
     | 
    
         
            +
              account  : *email # transfire@gmail.com
         
     | 
| 
      
 72 
     | 
    
         
            +
              type     : login  # cram_md5, plain
         
     | 
| 
      
 73 
     | 
    
         
            +
              security : tls    # ~, tls, ssl (not working yet)
         
     | 
| 
      
 74 
     | 
    
         
            +
              file     : note/LATEST    # which file contains announcement
         
     | 
| 
      
 75 
     | 
    
         
            +
              slogan   : REAP THE REWARDS!
         
     | 
| 
      
 76 
     | 
    
         
            +
              links    : []
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
            doap: !!doap
         
     | 
| 
      
 79 
     | 
    
         
            +
              dir: note
         
     | 
| 
      
 80 
     | 
    
         
            +
             
     | 
| 
      
 81 
     | 
    
         
            +
            count: !!count
         
     | 
| 
      
 82 
     | 
    
         
            +
              include: 'lib/**/*'
         
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
            setup: !!setup
         
     | 
| 
      
 85 
     | 
    
         
            +
             
     | 
| 
      
 86 
     | 
    
         
            +
            # perm: !!perm
         
     | 
| 
      
 87 
     | 
    
         
            +
            #   filemod: 644
         
     | 
| 
      
 88 
     | 
    
         
            +
            #   dirmod: 755
         
     | 
| 
      
 89 
     | 
    
         
            +
            #   user: trans
         
     | 
| 
      
 90 
     | 
    
         
            +
            #   group: users
         
     | 
| 
      
 91 
     | 
    
         
            +
             
     | 
| 
      
 92 
     | 
    
         
            +
            # TESTING PURPOSES
         
     | 
| 
      
 93 
     | 
    
         
            +
             
     | 
| 
      
 94 
     | 
    
         
            +
            # demo: !!demo
         
     | 
| 
      
 95 
     | 
    
         
            +
            #   desc: Alternate description for a task
         
     | 
| 
      
 96 
     | 
    
         
            +
            #   message: Hello Baby!
         
     | 
| 
      
 97 
     | 
    
         
            +
             
     | 
| 
      
 98 
     | 
    
         
            +
            # mytask: !!custom
         
     | 
| 
      
 99 
     | 
    
         
            +
            #   desc: This is a test of a cutom task.
         
     | 
| 
      
 100 
     | 
    
         
            +
            #   task:
         
     | 
| 
      
 101 
     | 
    
         
            +
            #     puts "Hello Moto!"
         
     | 
| 
      
 102 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,62 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
             
     | 
| 
      
 2 
     | 
    
         
            +
            class String
         
     | 
| 
      
 3 
     | 
    
         
            +
              def /(str)
         
     | 
| 
      
 4 
     | 
    
         
            +
                File.join( self, str.to_s )
         
     | 
| 
      
 5 
     | 
    
         
            +
              end
         
     | 
| 
      
 6 
     | 
    
         
            +
            end
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
                # XXX use pathname
         
     | 
| 
      
 9 
     | 
    
         
            +
                def self.config(name)
         
     | 
| 
      
 10 
     | 
    
         
            +
                  prefix = Regexp.quote(Config::CONFIG["prefix"])
         
     | 
| 
      
 11 
     | 
    
         
            +
                  exec_prefix = Regexp.quote(Config::CONFIG["exec_prefix"])
         
     | 
| 
      
 12 
     | 
    
         
            +
                  Config::CONFIG[name].gsub(/\A\/?(#{prefix}|#{exec_prefix})\/?/, '')
         
     | 
| 
      
 13 
     | 
    
         
            +
                end
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
                KINDS = [
         
     | 
| 
      
 16 
     | 
    
         
            +
                  :bin, :lib, :ext, :data, :conf, :doc
         
     | 
| 
      
 17 
     | 
    
         
            +
                ]
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                SITE_DIRS = {
         
     | 
| 
      
 20 
     | 
    
         
            +
                  :bin  => config("bindir"),
         
     | 
| 
      
 21 
     | 
    
         
            +
                  :lib  => config("sitelibdir"),
         
     | 
| 
      
 22 
     | 
    
         
            +
                  :ext  => config("sitearchdir"),
         
     | 
| 
      
 23 
     | 
    
         
            +
                  :data => config("datadir"),
         
     | 
| 
      
 24 
     | 
    
         
            +
                  :conf => config("sysconfdir"),
         
     | 
| 
      
 25 
     | 
    
         
            +
                  :doc  => File.join(config("datadir"), "doc")
         
     | 
| 
      
 26 
     | 
    
         
            +
                }
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
                VEND_DIRS = {
         
     | 
| 
      
 29 
     | 
    
         
            +
                  :bin  => config("bindir"),
         
     | 
| 
      
 30 
     | 
    
         
            +
                  :lib  => config("rubylibdir"),
         
     | 
| 
      
 31 
     | 
    
         
            +
                  :ext  => config("archdir"),
         
     | 
| 
      
 32 
     | 
    
         
            +
                  :data => config("datadir"),
         
     | 
| 
      
 33 
     | 
    
         
            +
                  :conf => config("sysconfdir"),
         
     | 
| 
      
 34 
     | 
    
         
            +
                  :doc  => File.join(config("datadir"), "doc")
         
     | 
| 
      
 35 
     | 
    
         
            +
                }
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
                MODES = {
         
     | 
| 
      
 38 
     | 
    
         
            +
                  :bin  => 0755,
         
     | 
| 
      
 39 
     | 
    
         
            +
                  :lib  => 0644,
         
     | 
| 
      
 40 
     | 
    
         
            +
                  :ext  => 0755,  # was: 0555,
         
     | 
| 
      
 41 
     | 
    
         
            +
                  :data => 0644,
         
     | 
| 
      
 42 
     | 
    
         
            +
                  :conf => 0644,
         
     | 
| 
      
 43 
     | 
    
         
            +
                  :doc  => 0644
         
     | 
| 
      
 44 
     | 
    
         
            +
                }
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                # Return installation prefix.
         
     | 
| 
      
 47 
     | 
    
         
            +
                def prefix #( kind )
         
     | 
| 
      
 48 
     | 
    
         
            +
                  Config::CONFIG["prefix"]
         
     | 
| 
      
 49 
     | 
    
         
            +
                end
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
                # Return the installation directory.
         
     | 
| 
      
 52 
     | 
    
         
            +
                def dir( kind, type=:site )
         
     | 
| 
      
 53 
     | 
    
         
            +
                  case type
         
     | 
| 
      
 54 
     | 
    
         
            +
                  when :site
         
     | 
| 
      
 55 
     | 
    
         
            +
                    prefix / SITE_DIRS[ kind ]
         
     | 
| 
      
 56 
     | 
    
         
            +
                  when :vendor
         
     | 
| 
      
 57 
     | 
    
         
            +
                    prefix / VEND_DIRS[ kind ]
         
     | 
| 
      
 58 
     | 
    
         
            +
                  else
         
     | 
| 
      
 59 
     | 
    
         
            +
                    raise ArgumentError, "unknown install type -- #{type}"
         
     | 
| 
      
 60 
     | 
    
         
            +
                  end
         
     | 
| 
      
 61 
     | 
    
         
            +
                end
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
    
        data/forge/ProjectInfo
    ADDED
    
    | 
         @@ -0,0 +1,38 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            --- %YAML:1.0
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            version  : 6.0.1
         
     | 
| 
      
 4 
     | 
    
         
            +
            status   : 'beta'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            title    : Reap
         
     | 
| 
      
 7 
     | 
    
         
            +
            name     : reap
         
     | 
| 
      
 8 
     | 
    
         
            +
            author   : Thomas Sawyer
         
     | 
| 
      
 9 
     | 
    
         
            +
            created  : '2004-04-01'
         
     | 
| 
      
 10 
     | 
    
         
            +
            email    : &email transfire@gmail.com
         
     | 
| 
      
 11 
     | 
    
         
            +
            homepage : "http://reap.rubyforge.org"
         
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            summary  : The Flexible Ruby Project Management Assistant
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            description: >
         
     | 
| 
      
 16 
     | 
    
         
            +
              Reap comprises a set of tasks commonly needed by Ruby package
         
     | 
| 
      
 17 
     | 
    
         
            +
              developers/deployers, such as testing, packaging, releasing, etc.
         
     | 
| 
      
 18 
     | 
    
         
            +
              You can also use Reap to create your own custom tasks.
         
     | 
| 
      
 19 
     | 
    
         
            +
              Reap utilizes a YAML configuration file to harvest common project
         
     | 
| 
      
 20 
     | 
    
         
            +
              information, significantly simplifying these chores.
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            rubyforge:
         
     | 
| 
      
 23 
     | 
    
         
            +
              project  : reap
         
     | 
| 
      
 24 
     | 
    
         
            +
              username : transami
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            revision:
         
     | 
| 
      
 27 
     | 
    
         
            +
              type: darcs
         
     | 
| 
      
 28 
     | 
    
         
            +
              include:
         
     | 
| 
      
 29 
     | 
    
         
            +
                - '[A-Z]*'
         
     | 
| 
      
 30 
     | 
    
         
            +
                - 'trunk/*'
         
     | 
| 
      
 31 
     | 
    
         
            +
                - 'web/*.html'
         
     | 
| 
      
 32 
     | 
    
         
            +
              exclude:
         
     | 
| 
      
 33 
     | 
    
         
            +
                - 'trunk/setup.rb'
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            trunk: !!subinfo
         
     | 
| 
      
 36 
     | 
    
         
            +
              merge: true
         
     | 
| 
      
 37 
     | 
    
         
            +
              location: trunk
         
     | 
| 
      
 38 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,76 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # This is an intersing example of a pure Ruby alternative to the
         
     | 
| 
      
 4 
     | 
    
         
            +
            # YAML based project file. I someway I find it more attractive 
         
     | 
| 
      
 5 
     | 
    
         
            +
            # than the YAML. But of course, YAML is not limited to one langauge
         
     | 
| 
      
 6 
     | 
    
         
            +
            # so it is much better for that.
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            title   'Reap'
         
     | 
| 
      
 9 
     | 
    
         
            +
            name    'reap'
         
     | 
| 
      
 10 
     | 
    
         
            +
            version '4.3.4'
         
     | 
| 
      
 11 
     | 
    
         
            +
            date    '2006-04-07'
         
     | 
| 
      
 12 
     | 
    
         
            +
            created '2004-04-01'
         
     | 
| 
      
 13 
     | 
    
         
            +
            status  'beta/stable'
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            author   'Thomas Sawyer'
         
     | 
| 
      
 16 
     | 
    
         
            +
            email    'transfire@gmail.com'
         
     | 
| 
      
 17 
     | 
    
         
            +
            homepage 'http://reap.rubyforge.org'
         
     | 
| 
      
 18 
     | 
    
         
            +
            summary  'Tools for Ruby project testing, management and assistance.'
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            description %{
         
     | 
| 
      
 21 
     | 
    
         
            +
              Reap comprises a set of commonly needed tools for Ruby package
         
     | 
| 
      
 22 
     | 
    
         
            +
              developers/deployers. Because of the commonality,
         
     | 
| 
      
 23 
     | 
    
         
            +
              Reap utilizes a YAML configuration file to harvest project
         
     | 
| 
      
 24 
     | 
    
         
            +
              information, significantly simplifying usage.
         
     | 
| 
      
 25 
     | 
    
         
            +
            }
         
     | 
| 
      
 26 
     | 
    
         
            +
             
     | 
| 
      
 27 
     | 
    
         
            +
            distribute    [ 'gem', 'deb' ]  # zip, tar.gz, tbz, tgz, deb
         
     | 
| 
      
 28 
     | 
    
         
            +
            dependencies  [ 'facets' ]
         
     | 
| 
      
 29 
     | 
    
         
            +
            executables   [ 'reap' ]
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            package {
         
     | 
| 
      
 32 
     | 
    
         
            +
              dir         '../DISTRIBUTION'
         
     | 
| 
      
 33 
     | 
    
         
            +
              distribute  [ 'deb' ]
         
     | 
| 
      
 34 
     | 
    
         
            +
              exclude     [ 'dist', 'dev', 'scrap', 'web' ]
         
     | 
| 
      
 35 
     | 
    
         
            +
            }
         
     | 
| 
      
 36 
     | 
    
         
            +
             
     | 
| 
      
 37 
     | 
    
         
            +
            rubyforge {
         
     | 
| 
      
 38 
     | 
    
         
            +
              project    'reap'
         
     | 
| 
      
 39 
     | 
    
         
            +
              username   'transami'
         
     | 
| 
      
 40 
     | 
    
         
            +
            }
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
            release {
         
     | 
| 
      
 43 
     | 
    
         
            +
              host       'rubyforge.org'
         
     | 
| 
      
 44 
     | 
    
         
            +
              username   'transami'
         
     | 
| 
      
 45 
     | 
    
         
            +
              project    'reap'
         
     | 
| 
      
 46 
     | 
    
         
            +
              groupid    '811'
         
     | 
| 
      
 47 
     | 
    
         
            +
              package    'Reap'
         
     | 
| 
      
 48 
     | 
    
         
            +
              dir        '../DISTRIBUTION'
         
     | 
| 
      
 49 
     | 
    
         
            +
            }
         
     | 
| 
      
 50 
     | 
    
         
            +
             
     | 
| 
      
 51 
     | 
    
         
            +
            publish {
         
     | 
| 
      
 52 
     | 
    
         
            +
              type       'web'
         
     | 
| 
      
 53 
     | 
    
         
            +
              host       'rubyforge.org'
         
     | 
| 
      
 54 
     | 
    
         
            +
              username   'transami'
         
     | 
| 
      
 55 
     | 
    
         
            +
              dir        'web'
         
     | 
| 
      
 56 
     | 
    
         
            +
            }
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
            rdoc {
         
     | 
| 
      
 59 
     | 
    
         
            +
              dir        'web/doc/api'
         
     | 
| 
      
 60 
     | 
    
         
            +
              include    [ 'A-Z*', 'lib/**/*' ]
         
     | 
| 
      
 61 
     | 
    
         
            +
              exclude    [ 'lib/reap/data' ]
         
     | 
| 
      
 62 
     | 
    
         
            +
            }
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
            anncounce {
         
     | 
| 
      
 65 
     | 
    
         
            +
              to         'transfire@gmail.com'  # ruby-talk@ruby-lang.org
         
     | 
| 
      
 66 
     | 
    
         
            +
              from       'transfire@gmail.com'
         
     | 
| 
      
 67 
     | 
    
         
            +
              domain     'unit.rubyforge.org'
         
     | 
| 
      
 68 
     | 
    
         
            +
              server     'smtp.gmail.com'
         
     | 
| 
      
 69 
     | 
    
         
            +
              port       '587'
         
     | 
| 
      
 70 
     | 
    
         
            +
              account    'transfire@gmail.com'
         
     | 
| 
      
 71 
     | 
    
         
            +
              type       'login'  # cram_md5, plain
         
     | 
| 
      
 72 
     | 
    
         
            +
              security   'tls'    # ~, tls, ssl (not working yet)
         
     | 
| 
      
 73 
     | 
    
         
            +
              #file      'ANN'    # which file contains announcement
         
     | 
| 
      
 74 
     | 
    
         
            +
              slogan     'REAP THE REWARDS!'
         
     | 
| 
      
 75 
     | 
    
         
            +
              links      []
         
     | 
| 
      
 76 
     | 
    
         
            +
            }
         
     | 
    
        data/forge/TODO
    ADDED
    
    
    
        data/forge/installer.rb
    ADDED
    
    | 
         @@ -0,0 +1,250 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            require 'rbconfig'
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'fileutils'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            module Reap
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
              # = Installer
         
     | 
| 
      
 7 
     | 
    
         
            +
              #
         
     | 
| 
      
 8 
     | 
    
         
            +
              # The Installer class generates a specialized install.rb
         
     | 
| 
      
 9 
     | 
    
         
            +
              # script specifically for your project. It currently 
         
     | 
| 
      
 10 
     | 
    
         
            +
              # does not support c/c++ ext/ compilation.
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
              class Installer
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
                # Installer can not use the TaskUtils b/c it must also
         
     | 
| 
      
 15 
     | 
    
         
            +
                # be able to run as a stand alone accplication.
         
     | 
| 
      
 16 
     | 
    
         
            +
                #include TaskUtils
         
     | 
| 
      
 17 
     | 
    
         
            +
             
     | 
| 
      
 18 
     | 
    
         
            +
            #     def self.config(name)
         
     | 
| 
      
 19 
     | 
    
         
            +
            #       # XXX use pathname
         
     | 
| 
      
 20 
     | 
    
         
            +
            #       prefix = Regexp.quote(Config::CONFIG["prefix"])
         
     | 
| 
      
 21 
     | 
    
         
            +
            #       exec_prefix = Regexp.quote(Config::CONFIG["exec_prefix"])
         
     | 
| 
      
 22 
     | 
    
         
            +
            #       Config::CONFIG[name].gsub(/\A\/?(#{prefix}|#{exec_prefix})\/?/, '')
         
     | 
| 
      
 23 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
      
 25 
     | 
    
         
            +
                KINDS = [
         
     | 
| 
      
 26 
     | 
    
         
            +
                  :bin, :lib, :ext, :data, :conf, :doc
         
     | 
| 
      
 27 
     | 
    
         
            +
                ]
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
            #     SITE_DIRS = {
         
     | 
| 
      
 30 
     | 
    
         
            +
            #       :bin  => config("bindir"),
         
     | 
| 
      
 31 
     | 
    
         
            +
            #       :lib  => config("sitelibdir"),
         
     | 
| 
      
 32 
     | 
    
         
            +
            #       :ext  => config("sitearchdir"),
         
     | 
| 
      
 33 
     | 
    
         
            +
            #       :data => config("datadir"),
         
     | 
| 
      
 34 
     | 
    
         
            +
            #       :conf => config("sysconfdir"),
         
     | 
| 
      
 35 
     | 
    
         
            +
            #       :doc  => File.join(config("datadir"), "doc")
         
     | 
| 
      
 36 
     | 
    
         
            +
            #     }
         
     | 
| 
      
 37 
     | 
    
         
            +
            # 
         
     | 
| 
      
 38 
     | 
    
         
            +
            #     VEND_DIRS = {
         
     | 
| 
      
 39 
     | 
    
         
            +
            #       :bin  => config("bindir"),
         
     | 
| 
      
 40 
     | 
    
         
            +
            #       :lib  => config("rubylibdir"),
         
     | 
| 
      
 41 
     | 
    
         
            +
            #       :ext  => config("archdir"),
         
     | 
| 
      
 42 
     | 
    
         
            +
            #       :data => config("datadir"),
         
     | 
| 
      
 43 
     | 
    
         
            +
            #       :conf => config("sysconfdir"),
         
     | 
| 
      
 44 
     | 
    
         
            +
            #       :doc  => File.join(config("datadir"), "doc")
         
     | 
| 
      
 45 
     | 
    
         
            +
            #     }
         
     | 
| 
      
 46 
     | 
    
         
            +
            #
         
     | 
| 
      
 47 
     | 
    
         
            +
            #     MODES = {
         
     | 
| 
      
 48 
     | 
    
         
            +
            #       :bin  => 0755,
         
     | 
| 
      
 49 
     | 
    
         
            +
            #       :lib  => 0644,
         
     | 
| 
      
 50 
     | 
    
         
            +
            #       :ext  => 0755,  # was: 0555,
         
     | 
| 
      
 51 
     | 
    
         
            +
            #       :data => 0644,
         
     | 
| 
      
 52 
     | 
    
         
            +
            #       :conf => 0644,
         
     | 
| 
      
 53 
     | 
    
         
            +
            #       :doc  => 0644
         
     | 
| 
      
 54 
     | 
    
         
            +
            #     }
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                attr_accessor :trunk, :template, :name, :version #, :options
         
     | 
| 
      
 57 
     | 
    
         
            +
             
     | 
| 
      
 58 
     | 
    
         
            +
                def initialize( options )
         
     | 
| 
      
 59 
     | 
    
         
            +
                  # prime attributes
         
     | 
| 
      
 60 
     | 
    
         
            +
                  options.each do |k,v|
         
     | 
| 
      
 61 
     | 
    
         
            +
                    send( "#{k}=", v ) if respond_to?("#{k}=")
         
     | 
| 
      
 62 
     | 
    
         
            +
                  end
         
     | 
| 
      
 63 
     | 
    
         
            +
             
     | 
| 
      
 64 
     | 
    
         
            +
                  @trunk = '.' unless @trunk
         
     | 
| 
      
 65 
     | 
    
         
            +
                  @transfer = Hash.new { |h,k| h[k] = [] }
         
     | 
| 
      
 66 
     | 
    
         
            +
                  @spec = parse( @template )
         
     | 
| 
      
 67 
     | 
    
         
            +
                end
         
     | 
| 
      
 68 
     | 
    
         
            +
             
     | 
| 
      
 69 
     | 
    
         
            +
                #--
         
     | 
| 
      
 70 
     | 
    
         
            +
                # TODO use shellwords
         
     | 
| 
      
 71 
     | 
    
         
            +
                #++
         
     | 
| 
      
 72 
     | 
    
         
            +
                def parse( spec )
         
     | 
| 
      
 73 
     | 
    
         
            +
                  lines = spec.strip.split("\n")
         
     | 
| 
      
 74 
     | 
    
         
            +
                  lines.each { |line|
         
     | 
| 
      
 75 
     | 
    
         
            +
                    words = line.strip.split(/\s+/)
         
     | 
| 
      
 76 
     | 
    
         
            +
                    #send( *words )
         
     | 
| 
      
 77 
     | 
    
         
            +
                    kind, from, glob, to = *words
         
     | 
| 
      
 78 
     | 
    
         
            +
                    @transfer[kind.to_sym] << { :from=>vsub(from), :glob=>vsub(glob), :to=>vsub(to) }
         
     | 
| 
      
 79 
     | 
    
         
            +
                  }
         
     | 
| 
      
 80 
     | 
    
         
            +
                end
         
     | 
| 
      
 81 
     | 
    
         
            +
             
     | 
| 
      
 82 
     | 
    
         
            +
                # substitute variables
         
     | 
| 
      
 83 
     | 
    
         
            +
                def vsub( str )
         
     | 
| 
      
 84 
     | 
    
         
            +
                  return nil if str.nil?
         
     | 
| 
      
 85 
     | 
    
         
            +
                  str = str.gsub( '$version', @version.to_s ) #@options[:version].to_s )
         
     | 
| 
      
 86 
     | 
    
         
            +
                  str = str.gsub( '$name', @name.to_s ) #options[:name].to_s )
         
     | 
| 
      
 87 
     | 
    
         
            +
                  str
         
     | 
| 
      
 88 
     | 
    
         
            +
                end
         
     | 
| 
      
 89 
     | 
    
         
            +
             
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            #     # Return the installation directory.
         
     | 
| 
      
 92 
     | 
    
         
            +
            #     def dir( kind, mode=:site )
         
     | 
| 
      
 93 
     | 
    
         
            +
            #       case mode
         
     | 
| 
      
 94 
     | 
    
         
            +
            #       when :site
         
     | 
| 
      
 95 
     | 
    
         
            +
            #         SITE_DIRS[ kind ]
         
     | 
| 
      
 96 
     | 
    
         
            +
            #       when :vendor
         
     | 
| 
      
 97 
     | 
    
         
            +
            #         VEND_DIRS[ kind ]
         
     | 
| 
      
 98 
     | 
    
         
            +
            #       else
         
     | 
| 
      
 99 
     | 
    
         
            +
            #         raise ArgumentError, "unknown mode -- #{mode}"
         
     | 
| 
      
 100 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 101 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 102 
     | 
    
         
            +
            #
         
     | 
| 
      
 103 
     | 
    
         
            +
            #     # Return installation prefix.
         
     | 
| 
      
 104 
     | 
    
         
            +
            #     def prefix #( kind )
         
     | 
| 
      
 105 
     | 
    
         
            +
            #       Config::CONFIG["prefix"]
         
     | 
| 
      
 106 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 107 
     | 
    
         
            +
             
     | 
| 
      
 108 
     | 
    
         
            +
             
     | 
| 
      
 109 
     | 
    
         
            +
            #     #--
         
     | 
| 
      
 110 
     | 
    
         
            +
            #     # DSL methods for setting installation spec.
         
     | 
| 
      
 111 
     | 
    
         
            +
            #     #++
         
     | 
| 
      
 112 
     | 
    
         
            +
            # 
         
     | 
| 
      
 113 
     | 
    
         
            +
            #     # Setup a lib installation transfer.
         
     | 
| 
      
 114 
     | 
    
         
            +
            #     def lib( from, glob, to )
         
     | 
| 
      
 115 
     | 
    
         
            +
            #       to = '' if to == '.'
         
     | 
| 
      
 116 
     | 
    
         
            +
            #       @transfer[:lib] << { :from=>vsub(from), :glob=>vsub(glob), :to=>vsub(to) }
         
     | 
| 
      
 117 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 118 
     | 
    
         
            +
            # 
         
     | 
| 
      
 119 
     | 
    
         
            +
            #     # Setup a bin installation transfer.
         
     | 
| 
      
 120 
     | 
    
         
            +
            #     def bin( from, glob, to=nil )
         
     | 
| 
      
 121 
     | 
    
         
            +
            #       #to = '' if to == '.'
         
     | 
| 
      
 122 
     | 
    
         
            +
            #       @transfer[:bin] << { :from=>vsub(from), :glob=>vsub(glob), :to=>vsub(to) }
         
     | 
| 
      
 123 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 124 
     | 
    
         
            +
            # 
         
     | 
| 
      
 125 
     | 
    
         
            +
            #     # Setup a data installation transfer.
         
     | 
| 
      
 126 
     | 
    
         
            +
            #     def data( from, glob, to=nil )
         
     | 
| 
      
 127 
     | 
    
         
            +
            #       #to = '' if to == '.'
         
     | 
| 
      
 128 
     | 
    
         
            +
            #       @transfer[:data] << { :from=>vsub(from), :glob=>vsub(glob), :to=>vsub(to) }
         
     | 
| 
      
 129 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                # Compile script and write to install file (install.rb).
         
     | 
| 
      
 132 
     | 
    
         
            +
             
     | 
| 
      
 133 
     | 
    
         
            +
                def compile_and_write
         
     | 
| 
      
 134 
     | 
    
         
            +
                  #write( compile )
         
     | 
| 
      
 135 
     | 
    
         
            +
                  compile
         
     | 
| 
      
 136 
     | 
    
         
            +
                end
         
     | 
| 
      
 137 
     | 
    
         
            +
             
     | 
| 
      
 138 
     | 
    
         
            +
                alias_method :call, :compile_and_write
         
     | 
| 
      
 139 
     | 
    
         
            +
             
     | 
| 
      
 140 
     | 
    
         
            +
            #     def compile
         
     | 
| 
      
 141 
     | 
    
         
            +
            #       script = ""
         
     | 
| 
      
 142 
     | 
    
         
            +
            #       script << "# INSTALL SCRIPT\n"
         
     | 
| 
      
 143 
     | 
    
         
            +
            #       script << "# Generated by Reap\n"
         
     | 
| 
      
 144 
     | 
    
         
            +
            #       script << "# #{Time.now}\n"
         
     | 
| 
      
 145 
     | 
    
         
            +
            #       script << "\n"
         
     | 
| 
      
 146 
     | 
    
         
            +
            #       script << instructions
         
     | 
| 
      
 147 
     | 
    
         
            +
            #       script << "\n"
         
     | 
| 
      
 148 
     | 
    
         
            +
            #       script << "# END"
         
     | 
| 
      
 149 
     | 
    
         
            +
            #       script
         
     | 
| 
      
 150 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 151 
     | 
    
         
            +
             
     | 
| 
      
 152 
     | 
    
         
            +
             
     | 
| 
      
 153 
     | 
    
         
            +
              private
         
     | 
| 
      
 154 
     | 
    
         
            +
             
     | 
| 
      
 155 
     | 
    
         
            +
                # Compile installation instructions.
         
     | 
| 
      
 156 
     | 
    
         
            +
             
     | 
| 
      
 157 
     | 
    
         
            +
                def instructions
         
     | 
| 
      
 158 
     | 
    
         
            +
                    KINDS.each do |kind|
         
     | 
| 
      
 159 
     | 
    
         
            +
                      @transfer[kind].each { |trans|
         
     | 
| 
      
 160 
     | 
    
         
            +
                        package( kind, trans[:from], trans[:glob], trans[:to] )
         
     | 
| 
      
 161 
     | 
    
         
            +
                      }
         
     | 
| 
      
 162 
     | 
    
         
            +
                    end
         
     | 
| 
      
 163 
     | 
    
         
            +
                end
         
     | 
| 
      
 164 
     | 
    
         
            +
             
     | 
| 
      
 165 
     | 
    
         
            +
             
     | 
| 
      
 166 
     | 
    
         
            +
             
     | 
| 
      
 167 
     | 
    
         
            +
                def package( kind, from, glob, to )
         
     | 
| 
      
 168 
     | 
    
         
            +
                  mkdirp = []
         
     | 
| 
      
 169 
     | 
    
         
            +
                  #script = ''
         
     | 
| 
      
 170 
     | 
    
         
            +
                  Dir.chdir( @trunk ) do
         
     | 
| 
      
 171 
     | 
    
         
            +
                    #KINDS.each { |kind|
         
     | 
| 
      
 172 
     | 
    
         
            +
                      #@transfer[kind].each { |trans|
         
     | 
| 
      
 173 
     | 
    
         
            +
                        next unless File.directory?( from )
         
     | 
| 
      
 174 
     | 
    
         
            +
                        files = []
         
     | 
| 
      
 175 
     | 
    
         
            +
                        Dir.chdir( from ) {
         
     | 
| 
      
 176 
     | 
    
         
            +
                          files = Dir.glob( glob ).reject { |f| File.directory?( f ) }
         
     | 
| 
      
 177 
     | 
    
         
            +
                        }
         
     | 
| 
      
 178 
     | 
    
         
            +
                        files.each { |file|
         
     | 
| 
      
 179 
     | 
    
         
            +
                          f = File.join( from, file )
         
     | 
| 
      
 180 
     | 
    
         
            +
                          t = to ? File.join( @mirror_path, to, file ) : File.join( @mirror_path, file )
         
     | 
| 
      
 181 
     | 
    
         
            +
             
     | 
| 
      
 182 
     | 
    
         
            +
                          m = "mode(:#{kind})" # MODES[kind]
         
     | 
| 
      
 183 
     | 
    
         
            +
             
     | 
| 
      
 184 
     | 
    
         
            +
                          d = File.dirname(t)
         
     | 
| 
      
 185 
     | 
    
         
            +
                          unless mkdirp.include?(d)
         
     | 
| 
      
 186 
     | 
    
         
            +
                            #script << %{makedir :#{kind}, "%s"\n} % d
         
     | 
| 
      
 187 
     | 
    
         
            +
                            puts "makedir_p #{d}"
         
     | 
| 
      
 188 
     | 
    
         
            +
                            mkdirp << d
         
     | 
| 
      
 189 
     | 
    
         
            +
                          end
         
     | 
| 
      
 190 
     | 
    
         
            +
             
     | 
| 
      
 191 
     | 
    
         
            +
                          #script << %{install :#{kind}, "%s" => "%s"\n} % [ f, t ]
         
     | 
| 
      
 192 
     | 
    
         
            +
             
     | 
| 
      
 193 
     | 
    
         
            +
                          puts "safe_ln #{from}, #{to}"
         
     | 
| 
      
 194 
     | 
    
         
            +
             
     | 
| 
      
 195 
     | 
    
         
            +
                          #script << %{install "%s" =>\n dir(:#{kind})/"%s", :mode=>%s\n} % [ f, t, m ]
         
     | 
| 
      
 196 
     | 
    
         
            +
                          #script << "install_#{kind} '%s', '%s', :mode=>%o\n" % [ f, t, m ]
         
     | 
| 
      
 197 
     | 
    
         
            +
                        #}
         
     | 
| 
      
 198 
     | 
    
         
            +
                      #}
         
     | 
| 
      
 199 
     | 
    
         
            +
                    }
         
     | 
| 
      
 200 
     | 
    
         
            +
                  end
         
     | 
| 
      
 201 
     | 
    
         
            +
                  #script
         
     | 
| 
      
 202 
     | 
    
         
            +
                end
         
     | 
| 
      
 203 
     | 
    
         
            +
             
     | 
| 
      
 204 
     | 
    
         
            +
              end
         
     | 
| 
      
 205 
     | 
    
         
            +
             
     | 
| 
      
 206 
     | 
    
         
            +
            end #module Reap
         
     | 
| 
      
 207 
     | 
    
         
            +
             
     | 
| 
      
 208 
     | 
    
         
            +
             
     | 
| 
      
 209 
     | 
    
         
            +
            #     def write( script )
         
     | 
| 
      
 210 
     | 
    
         
            +
            #       install_file = File.join( @trunk, 'install.rb' )
         
     | 
| 
      
 211 
     | 
    
         
            +
            #       if File.file?( install_file )
         
     | 
| 
      
 212 
     | 
    
         
            +
            #         script_template = File.read( install_file )
         
     | 
| 
      
 213 
     | 
    
         
            +
            #         script = script_template.gsub(/\# INSTALL SCRIPT.*\# END/, script)
         
     | 
| 
      
 214 
     | 
    
         
            +
            # exit 0
         
     | 
| 
      
 215 
     | 
    
         
            +
            #         File.open( install_file, 'w+' ) do |f|
         
     | 
| 
      
 216 
     | 
    
         
            +
            #           f << script
         
     | 
| 
      
 217 
     | 
    
         
            +
            #         end
         
     | 
| 
      
 218 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 219 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 220 
     | 
    
         
            +
             
     | 
| 
      
 221 
     | 
    
         
            +
            #     # Move to install.rb script
         
     | 
| 
      
 222 
     | 
    
         
            +
            #     def package( kind, from, glob, to )
         
     | 
| 
      
 223 
     | 
    
         
            +
            #       mkdirp = []
         
     | 
| 
      
 224 
     | 
    
         
            +
            #       script = ''
         
     | 
| 
      
 225 
     | 
    
         
            +
            #       Dir.chdir( @trunk ) do
         
     | 
| 
      
 226 
     | 
    
         
            +
            #         @transfer[kind].each { |trans|
         
     | 
| 
      
 227 
     | 
    
         
            +
            #           next unless File.directory?( transfrom )
         
     | 
| 
      
 228 
     | 
    
         
            +
            #           files = []
         
     | 
| 
      
 229 
     | 
    
         
            +
            #           Dir.chdir( from ) {
         
     | 
| 
      
 230 
     | 
    
         
            +
            #             files = Dir.glob( trans[:glob] ).reject { |f| File.directory?( f ) }
         
     | 
| 
      
 231 
     | 
    
         
            +
            #           }
         
     | 
| 
      
 232 
     | 
    
         
            +
            #           files.each { |file|
         
     | 
| 
      
 233 
     | 
    
         
            +
            #             f = File.join( trans[:from], file )
         
     | 
| 
      
 234 
     | 
    
         
            +
            #             #t = File.join( prefix(kind), dir(kind), trans[:to], file )
         
     | 
| 
      
 235 
     | 
    
         
            +
            #             t = trans[:to] ? File.join( trans[:to], file ) : file
         
     | 
| 
      
 236 
     | 
    
         
            +
            #             m = "mode(:#{kind})" # MODES[kind]
         
     | 
| 
      
 237 
     | 
    
         
            +
            #             d = File.dirname(t)
         
     | 
| 
      
 238 
     | 
    
         
            +
            #             unless mkdirp.include?(d)
         
     | 
| 
      
 239 
     | 
    
         
            +
            #               script << %{makedir :#{kind}, "%s"\n} % d
         
     | 
| 
      
 240 
     | 
    
         
            +
            #               mkdirp << d
         
     | 
| 
      
 241 
     | 
    
         
            +
            #             end
         
     | 
| 
      
 242 
     | 
    
         
            +
            #             script << %{install :#{kind}, "%s" => "%s"\n} % [ f, t ]
         
     | 
| 
      
 243 
     | 
    
         
            +
            #             #script << %{install "%s" =>\n dir(:#{kind})/"%s", :mode=>%s\n} % [ f, t, m ]
         
     | 
| 
      
 244 
     | 
    
         
            +
            #             #script << "install_#{kind} '%s', '%s', :mode=>%o\n" % [ f, t, m ]
         
     | 
| 
      
 245 
     | 
    
         
            +
            #           }
         
     | 
| 
      
 246 
     | 
    
         
            +
            #         }
         
     | 
| 
      
 247 
     | 
    
         
            +
            #       end
         
     | 
| 
      
 248 
     | 
    
         
            +
            #       script
         
     | 
| 
      
 249 
     | 
    
         
            +
            #     end
         
     | 
| 
      
 250 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,124 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby rake
         
     | 
| 
      
 2 
     | 
    
         
            +
            # Rakefile for Calibre
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
            require 'rake/rdoctask'
         
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            desc "Run all the tests"
         
     | 
| 
      
 7 
     | 
    
         
            +
            task :default => [:test]
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
             
     | 
| 
      
 10 
     | 
    
         
            +
            # tests
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            desc "Run all tests"
         
     | 
| 
      
 13 
     | 
    
         
            +
            task :test => [:"test-facets", :"test-carats"]
         
     | 
| 
      
 14 
     | 
    
         
            +
             
     | 
| 
      
 15 
     | 
    
         
            +
            desc "Run tests for Ruby Facets"
         
     | 
| 
      
 16 
     | 
    
         
            +
            Rake::TestTask.new(:"test-facets") do |t|
         
     | 
| 
      
 17 
     | 
    
         
            +
              t.libs << "packages/facets/lib"
         
     | 
| 
      
 18 
     | 
    
         
            +
              t.test_files = FileList['packages/facets/test/**/tc*.rb']
         
     | 
| 
      
 19 
     | 
    
         
            +
              t.verbose = true
         
     | 
| 
      
 20 
     | 
    
         
            +
            end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            desc "Run tests for Ruby Carats"
         
     | 
| 
      
 23 
     | 
    
         
            +
            Rake::TestTask.new(:"test-carats") do |t|
         
     | 
| 
      
 24 
     | 
    
         
            +
              t.libs << "packages/carats/lib"
         
     | 
| 
      
 25 
     | 
    
         
            +
              t.test_files = FileList['packages/carats/test/**/tc*.rb']
         
     | 
| 
      
 26 
     | 
    
         
            +
              t.verbose = true
         
     | 
| 
      
 27 
     | 
    
         
            +
            end
         
     | 
| 
      
 28 
     | 
    
         
            +
             
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
            # rdocs
         
     | 
| 
      
 31 
     | 
    
         
            +
             
     | 
| 
      
 32 
     | 
    
         
            +
            desc "Generate All RDoc documentation"
         
     | 
| 
      
 33 
     | 
    
         
            +
            task :rdoc => [:"rdoc-facets", :"rdoc-carats"]
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
            desc "Generate RDoc documentation for Facets"
         
     | 
| 
      
 36 
     | 
    
         
            +
            Rake::RDocTask.new(:"rdoc-facets") do |rd|
         
     | 
| 
      
 37 
     | 
    
         
            +
              cdir = Dir.pwd
         
     | 
| 
      
 38 
     | 
    
         
            +
              Dir.chdir 'packages/facets'
         
     | 
| 
      
 39 
     | 
    
         
            +
                rd.main = 'README'
         
     | 
| 
      
 40 
     | 
    
         
            +
                rd.template = 'html'
         
     | 
| 
      
 41 
     | 
    
         
            +
                rd.rdoc_dir = 'pub/facet/doc'
         
     | 
| 
      
 42 
     | 
    
         
            +
                rd.rdoc_files.include('README', 'LIC*', 'lib/facet/')
         
     | 
| 
      
 43 
     | 
    
         
            +
                rd.rdoc_files.exclude 'InstalledFiles'
         
     | 
| 
      
 44 
     | 
    
         
            +
                rd.options << '--promiscuous --merge --all'
         
     | 
| 
      
 45 
     | 
    
         
            +
              Dir.chdir(cdir)
         
     | 
| 
      
 46 
     | 
    
         
            +
            end
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
            desc "Generate RDoc documentation for Carats"
         
     | 
| 
      
 49 
     | 
    
         
            +
            Rake::RDocTask.new(:"carat-doc") do |rd|
         
     | 
| 
      
 50 
     | 
    
         
            +
              cdir = Dir.pwd
         
     | 
| 
      
 51 
     | 
    
         
            +
              Dir.chdir 'packages/carats'
         
     | 
| 
      
 52 
     | 
    
         
            +
                rd.main = 'README'
         
     | 
| 
      
 53 
     | 
    
         
            +
                rd.template = 'html'
         
     | 
| 
      
 54 
     | 
    
         
            +
                rd.rdoc_dir = 'doc'
         
     | 
| 
      
 55 
     | 
    
         
            +
                rd.rdoc_files.include('README', 'LIC*', 'lib/carat/')
         
     | 
| 
      
 56 
     | 
    
         
            +
                rd.rdoc_files.exclude 'InstalledFiles'
         
     | 
| 
      
 57 
     | 
    
         
            +
                rd.options << '--promiscuous --merge --all'
         
     | 
| 
      
 58 
     | 
    
         
            +
              Dir.chdir(cdir)
         
     | 
| 
      
 59 
     | 
    
         
            +
            end
         
     | 
| 
      
 60 
     | 
    
         
            +
             
     | 
| 
      
 61 
     | 
    
         
            +
            # web publish
         
     | 
| 
      
 62 
     | 
    
         
            +
             
     | 
| 
      
 63 
     | 
    
         
            +
            desc "Publish Rubyforge Website"
         
     | 
| 
      
 64 
     | 
    
         
            +
            task :webpub do
         
     | 
| 
      
 65 
     | 
    
         
            +
              rubyforge_project = 'calibre'
         
     | 
| 
      
 66 
     | 
    
         
            +
              username = 'transami'
         
     | 
| 
      
 67 
     | 
    
         
            +
              web_dir = 'pub/www'
         
     | 
| 
      
 68 
     | 
    
         
            +
              # do it
         
     | 
| 
      
 69 
     | 
    
         
            +
              current_dir = Dir.pwd
         
     | 
| 
      
 70 
     | 
    
         
            +
              Dir.chdir( web_dir )
         
     | 
| 
      
 71 
     | 
    
         
            +
              web_files = FileList.new
         
     | 
| 
      
 72 
     | 
    
         
            +
              web_files.include('**/*')
         
     | 
| 
      
 73 
     | 
    
         
            +
              web_files = '"' << web_files.join('" "') << '"'
         
     | 
| 
      
 74 
     | 
    
         
            +
              cmd = "scp #{web_files} #{username}@rubyforge.org:/var/www/gforge-projects/#{rubyforge_project}/"
         
     | 
| 
      
 75 
     | 
    
         
            +
              system cmd
         
     | 
| 
      
 76 
     | 
    
         
            +
              Dir.chdir( current_dir )
         
     | 
| 
      
 77 
     | 
    
         
            +
            end
         
     | 
| 
      
 78 
     | 
    
         
            +
             
     | 
| 
      
 79 
     | 
    
         
            +
             
     | 
| 
      
 80 
     | 
    
         
            +
            #desc "Do predistribution stuff"
         
     | 
| 
      
 81 
     | 
    
         
            +
            #task :predist => [:changelog, :doc]
         
     | 
| 
      
 82 
     | 
    
         
            +
             
     | 
| 
      
 83 
     | 
    
         
            +
             
     | 
| 
      
 84 
     | 
    
         
            +
             
     | 
| 
      
 85 
     | 
    
         
            +
            desc "Make an archive as .tar.gz"
         
     | 
| 
      
 86 
     | 
    
         
            +
            task :dist => :test do
         
     | 
| 
      
 87 
     | 
    
         
            +
              system "export DARCS_REPO=#{File.expand_path "."}; " +
         
     | 
| 
      
 88 
     | 
    
         
            +
                     "darcs dist -d rand#{get_darcs_tree_version}"
         
     | 
| 
      
 89 
     | 
    
         
            +
            end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
            desc "Generate a ChangeLog"
         
     | 
| 
      
 92 
     | 
    
         
            +
            task :changelog do
         
     | 
| 
      
 93 
     | 
    
         
            +
              system "darcs changes --repo=#{ENV["DARCS_REPO"] || "."} >ChangeLog"
         
     | 
| 
      
 94 
     | 
    
         
            +
            end
         
     | 
| 
      
 95 
     | 
    
         
            +
             
     | 
| 
      
 96 
     | 
    
         
            +
             
     | 
| 
      
 97 
     | 
    
         
            +
            # --- Helper Methods ---
         
     | 
| 
      
 98 
     | 
    
         
            +
             
     | 
| 
      
 99 
     | 
    
         
            +
            # Helper to retrieve the "revision number" of the darcs tree.
         
     | 
| 
      
 100 
     | 
    
         
            +
            def get_darcs_tree_version
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
              return ""  unless File.directory? "_darcs"
         
     | 
| 
      
 103 
     | 
    
         
            +
             
     | 
| 
      
 104 
     | 
    
         
            +
              changes = `darcs changes`
         
     | 
| 
      
 105 
     | 
    
         
            +
              count = 0
         
     | 
| 
      
 106 
     | 
    
         
            +
              tag = "0.0"
         
     | 
| 
      
 107 
     | 
    
         
            +
              
         
     | 
| 
      
 108 
     | 
    
         
            +
              changes.each("\n\n") { |change|
         
     | 
| 
      
 109 
     | 
    
         
            +
                head, title, desc = change.split("\n", 3)
         
     | 
| 
      
 110 
     | 
    
         
            +
                
         
     | 
| 
      
 111 
     | 
    
         
            +
                if title =~ /^  \*/
         
     | 
| 
      
 112 
     | 
    
         
            +
                  # Normal change.
         
     | 
| 
      
 113 
     | 
    
         
            +
                  count += 1
         
     | 
| 
      
 114 
     | 
    
         
            +
                elsif title =~ /tagged (.*)/
         
     | 
| 
      
 115 
     | 
    
         
            +
                  # Tag.  We look for these.
         
     | 
| 
      
 116 
     | 
    
         
            +
                  tag = $1
         
     | 
| 
      
 117 
     | 
    
         
            +
                  break
         
     | 
| 
      
 118 
     | 
    
         
            +
                else
         
     | 
| 
      
 119 
     | 
    
         
            +
                  warn "Unparsable change: #{change}"
         
     | 
| 
      
 120 
     | 
    
         
            +
                end
         
     | 
| 
      
 121 
     | 
    
         
            +
              }
         
     | 
| 
      
 122 
     | 
    
         
            +
             
     | 
| 
      
 123 
     | 
    
         
            +
              "-" + tag + "." + count.to_s
         
     | 
| 
      
 124 
     | 
    
         
            +
            end
         
     |