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
 
| 
         @@ -0,0 +1,69 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Rakefile for xoxo-rb.  -*-ruby-*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake/rdoctask'
         
     | 
| 
      
 3 
     | 
    
         
            +
            require 'rake/testtask'
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
             
     | 
| 
      
 6 
     | 
    
         
            +
            desc "Run all the tests"
         
     | 
| 
      
 7 
     | 
    
         
            +
            task :default => [:test]
         
     | 
| 
      
 8 
     | 
    
         
            +
             
     | 
| 
      
 9 
     | 
    
         
            +
            desc "Do predistribution stuff"
         
     | 
| 
      
 10 
     | 
    
         
            +
            task :predist => [:chmod, :changelog, :doc]
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
             
     | 
| 
      
 13 
     | 
    
         
            +
            desc "Run all the tests"
         
     | 
| 
      
 14 
     | 
    
         
            +
            Rake::TestTask.new do |t|
         
     | 
| 
      
 15 
     | 
    
         
            +
              t.libs << "test"
         
     | 
| 
      
 16 
     | 
    
         
            +
              t.test_files = FileList['test_*.rb']
         
     | 
| 
      
 17 
     | 
    
         
            +
              t.verbose = true
         
     | 
| 
      
 18 
     | 
    
         
            +
            end
         
     | 
| 
      
 19 
     | 
    
         
            +
             
     | 
| 
      
 20 
     | 
    
         
            +
            desc "Make an archive as .tar.gz"
         
     | 
| 
      
 21 
     | 
    
         
            +
            task :dist => :test do
         
     | 
| 
      
 22 
     | 
    
         
            +
              system "export DARCS_REPO=#{File.expand_path "."}; " +
         
     | 
| 
      
 23 
     | 
    
         
            +
                     "darcs dist -d xoxo-rb#{get_darcs_tree_version}"
         
     | 
| 
      
 24 
     | 
    
         
            +
            end
         
     | 
| 
      
 25 
     | 
    
         
            +
             
     | 
| 
      
 26 
     | 
    
         
            +
            desc "Make binaries executable"
         
     | 
| 
      
 27 
     | 
    
         
            +
            task :chmod do
         
     | 
| 
      
 28 
     | 
    
         
            +
              Dir["bin/*"].each { |binary| File.chmod(0775, binary) }
         
     | 
| 
      
 29 
     | 
    
         
            +
            end
         
     | 
| 
      
 30 
     | 
    
         
            +
             
     | 
| 
      
 31 
     | 
    
         
            +
            desc "Generate a ChangeLog"
         
     | 
| 
      
 32 
     | 
    
         
            +
            task :changelog do
         
     | 
| 
      
 33 
     | 
    
         
            +
              system "darcs changes --repo=#{ENV["DARCS_REPO"] || "."} >ChangeLog"
         
     | 
| 
      
 34 
     | 
    
         
            +
            end
         
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            desc "Generate RDoc documentation"
         
     | 
| 
      
 37 
     | 
    
         
            +
            Rake::RDocTask.new(:doc) do |rdoc|
         
     | 
| 
      
 38 
     | 
    
         
            +
              rdoc.options << '--line-numbers --inline-source'
         
     | 
| 
      
 39 
     | 
    
         
            +
              rdoc.rdoc_dir = "rdoc"
         
     | 
| 
      
 40 
     | 
    
         
            +
              rdoc.rdoc_files.include 'README'
         
     | 
| 
      
 41 
     | 
    
         
            +
              rdoc.rdoc_files.include 'xoxo.rb'
         
     | 
| 
      
 42 
     | 
    
         
            +
            end 
         
     | 
| 
      
 43 
     | 
    
         
            +
             
     | 
| 
      
 44 
     | 
    
         
            +
             
     | 
| 
      
 45 
     | 
    
         
            +
            # Helper to retrieve the "revision number" of the darcs tree.
         
     | 
| 
      
 46 
     | 
    
         
            +
            def get_darcs_tree_version
         
     | 
| 
      
 47 
     | 
    
         
            +
              return ""  unless File.directory? "_darcs"
         
     | 
| 
      
 48 
     | 
    
         
            +
             
     | 
| 
      
 49 
     | 
    
         
            +
              changes = `darcs changes`
         
     | 
| 
      
 50 
     | 
    
         
            +
              count = 0
         
     | 
| 
      
 51 
     | 
    
         
            +
              tag = "0.0"
         
     | 
| 
      
 52 
     | 
    
         
            +
              
         
     | 
| 
      
 53 
     | 
    
         
            +
              changes.each("\n\n") { |change|
         
     | 
| 
      
 54 
     | 
    
         
            +
                head, title, desc = change.split("\n", 3)
         
     | 
| 
      
 55 
     | 
    
         
            +
                
         
     | 
| 
      
 56 
     | 
    
         
            +
                if title =~ /^  \*/
         
     | 
| 
      
 57 
     | 
    
         
            +
                  # Normal change.
         
     | 
| 
      
 58 
     | 
    
         
            +
                  count += 1
         
     | 
| 
      
 59 
     | 
    
         
            +
                elsif title =~ /tagged (.*)/
         
     | 
| 
      
 60 
     | 
    
         
            +
                  # Tag.  We look for these.
         
     | 
| 
      
 61 
     | 
    
         
            +
                  tag = $1
         
     | 
| 
      
 62 
     | 
    
         
            +
                  break
         
     | 
| 
      
 63 
     | 
    
         
            +
                else
         
     | 
| 
      
 64 
     | 
    
         
            +
                  warn "Unparsable change: #{change}"
         
     | 
| 
      
 65 
     | 
    
         
            +
                end
         
     | 
| 
      
 66 
     | 
    
         
            +
              }
         
     | 
| 
      
 67 
     | 
    
         
            +
             
     | 
| 
      
 68 
     | 
    
         
            +
              "-" + tag + "." + count.to_s
         
     | 
| 
      
 69 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,60 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            # Rakefile for rubypants  -*-ruby-*-
         
     | 
| 
      
 2 
     | 
    
         
            +
            require 'rake/rdoctask'
         
     | 
| 
      
 3 
     | 
    
         
            +
             
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
            desc "Run all the tests"
         
     | 
| 
      
 6 
     | 
    
         
            +
            task :default => [:test]
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            desc "Do predistribution stuff"
         
     | 
| 
      
 9 
     | 
    
         
            +
            task :predist => [:changelog, :doc]
         
     | 
| 
      
 10 
     | 
    
         
            +
             
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            desc "Run all the tests"
         
     | 
| 
      
 13 
     | 
    
         
            +
            task :test do
         
     | 
| 
      
 14 
     | 
    
         
            +
              ruby 'rand.rb'
         
     | 
| 
      
 15 
     | 
    
         
            +
            end
         
     | 
| 
      
 16 
     | 
    
         
            +
             
     | 
| 
      
 17 
     | 
    
         
            +
            desc "Make an archive as .tar.gz"
         
     | 
| 
      
 18 
     | 
    
         
            +
            task :dist => :test do
         
     | 
| 
      
 19 
     | 
    
         
            +
              system "export DARCS_REPO=#{File.expand_path "."}; " +
         
     | 
| 
      
 20 
     | 
    
         
            +
                     "darcs dist -d rand#{get_darcs_tree_version}"
         
     | 
| 
      
 21 
     | 
    
         
            +
            end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
            desc "Generate a ChangeLog"
         
     | 
| 
      
 24 
     | 
    
         
            +
            task :changelog do
         
     | 
| 
      
 25 
     | 
    
         
            +
              system "darcs changes --repo=#{ENV["DARCS_REPO"] || "."} >ChangeLog"
         
     | 
| 
      
 26 
     | 
    
         
            +
            end
         
     | 
| 
      
 27 
     | 
    
         
            +
             
     | 
| 
      
 28 
     | 
    
         
            +
            desc "Generate RDoc documentation"
         
     | 
| 
      
 29 
     | 
    
         
            +
            Rake::RDocTask.new(:doc) do |rdoc|
         
     | 
| 
      
 30 
     | 
    
         
            +
              rdoc.options << '--line-numbers --inline-source --all'
         
     | 
| 
      
 31 
     | 
    
         
            +
              rdoc.rdoc_files.include 'README'
         
     | 
| 
      
 32 
     | 
    
         
            +
              rdoc.rdoc_files.include 'rand.rb'
         
     | 
| 
      
 33 
     | 
    
         
            +
            end
         
     | 
| 
      
 34 
     | 
    
         
            +
             
     | 
| 
      
 35 
     | 
    
         
            +
             
     | 
| 
      
 36 
     | 
    
         
            +
            # Helper to retrieve the "revision number" of the darcs tree.
         
     | 
| 
      
 37 
     | 
    
         
            +
            def get_darcs_tree_version
         
     | 
| 
      
 38 
     | 
    
         
            +
              return ""  unless File.directory? "_darcs"
         
     | 
| 
      
 39 
     | 
    
         
            +
             
     | 
| 
      
 40 
     | 
    
         
            +
              changes = `darcs changes`
         
     | 
| 
      
 41 
     | 
    
         
            +
              count = 0
         
     | 
| 
      
 42 
     | 
    
         
            +
              tag = "0.0"
         
     | 
| 
      
 43 
     | 
    
         
            +
              
         
     | 
| 
      
 44 
     | 
    
         
            +
              changes.each("\n\n") { |change|
         
     | 
| 
      
 45 
     | 
    
         
            +
                head, title, desc = change.split("\n", 3)
         
     | 
| 
      
 46 
     | 
    
         
            +
                
         
     | 
| 
      
 47 
     | 
    
         
            +
                if title =~ /^  \*/
         
     | 
| 
      
 48 
     | 
    
         
            +
                  # Normal change.
         
     | 
| 
      
 49 
     | 
    
         
            +
                  count += 1
         
     | 
| 
      
 50 
     | 
    
         
            +
                elsif title =~ /tagged (.*)/
         
     | 
| 
      
 51 
     | 
    
         
            +
                  # Tag.  We look for these.
         
     | 
| 
      
 52 
     | 
    
         
            +
                  tag = $1
         
     | 
| 
      
 53 
     | 
    
         
            +
                  break
         
     | 
| 
      
 54 
     | 
    
         
            +
                else
         
     | 
| 
      
 55 
     | 
    
         
            +
                  warn "Unparsable change: #{change}"
         
     | 
| 
      
 56 
     | 
    
         
            +
                end
         
     | 
| 
      
 57 
     | 
    
         
            +
              }
         
     | 
| 
      
 58 
     | 
    
         
            +
             
     | 
| 
      
 59 
     | 
    
         
            +
              "-" + tag + "." + count.to_s
         
     | 
| 
      
 60 
     | 
    
         
            +
            end
         
     | 
| 
         @@ -0,0 +1,24 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            module Rake
         
     | 
| 
      
 4 
     | 
    
         
            +
             
     | 
| 
      
 5 
     | 
    
         
            +
              # Manage several publishers as a single entity.
         
     | 
| 
      
 6 
     | 
    
         
            +
              class CompositePublisher
         
     | 
| 
      
 7 
     | 
    
         
            +
                def initialize
         
     | 
| 
      
 8 
     | 
    
         
            +
                  @publishers = []
         
     | 
| 
      
 9 
     | 
    
         
            +
                end
         
     | 
| 
      
 10 
     | 
    
         
            +
                
         
     | 
| 
      
 11 
     | 
    
         
            +
                # Add a publisher to the composite.
         
     | 
| 
      
 12 
     | 
    
         
            +
                def add(pub)
         
     | 
| 
      
 13 
     | 
    
         
            +
                  @publishers << pub
         
     | 
| 
      
 14 
     | 
    
         
            +
                end
         
     | 
| 
      
 15 
     | 
    
         
            +
                
         
     | 
| 
      
 16 
     | 
    
         
            +
                # Upload all the individual publishers.
         
     | 
| 
      
 17 
     | 
    
         
            +
                def upload
         
     | 
| 
      
 18 
     | 
    
         
            +
                  @publishers.each { |p| p.upload }
         
     | 
| 
      
 19 
     | 
    
         
            +
                end
         
     | 
| 
      
 20 
     | 
    
         
            +
              end
         
     | 
| 
      
 21 
     | 
    
         
            +
             
     | 
| 
      
 22 
     | 
    
         
            +
            end
         
     | 
| 
      
 23 
     | 
    
         
            +
             
     | 
| 
      
 24 
     | 
    
         
            +
             
     | 
| 
         @@ -0,0 +1,139 @@ 
     | 
|
| 
      
 1 
     | 
    
         
            +
            #!/usr/bin/env ruby
         
     | 
| 
      
 2 
     | 
    
         
            +
             
     | 
| 
      
 3 
     | 
    
         
            +
            # = Tools for FTP uploading.
         
     | 
| 
      
 4 
     | 
    
         
            +
            #
         
     | 
| 
      
 5 
     | 
    
         
            +
            # This file is still under development and is not released for general
         
     | 
| 
      
 6 
     | 
    
         
            +
            # use.
         
     | 
| 
      
 7 
     | 
    
         
            +
             
     | 
| 
      
 8 
     | 
    
         
            +
            require 'date'
         
     | 
| 
      
 9 
     | 
    
         
            +
            require 'parsedate'
         
     | 
| 
      
 10 
     | 
    
         
            +
            require 'net/ftp'
         
     | 
| 
      
 11 
     | 
    
         
            +
             
     | 
| 
      
 12 
     | 
    
         
            +
            module Rake # :nodoc:
         
     | 
| 
      
 13 
     | 
    
         
            +
             
     | 
| 
      
 14 
     | 
    
         
            +
              ####################################################################
         
     | 
| 
      
 15 
     | 
    
         
            +
              # <b>Note:</b> <em> Not released for general use.</em>
         
     | 
| 
      
 16 
     | 
    
         
            +
              class FtpFile
         
     | 
| 
      
 17 
     | 
    
         
            +
                attr_reader :name, :size, :owner, :group, :time
         
     | 
| 
      
 18 
     | 
    
         
            +
             
     | 
| 
      
 19 
     | 
    
         
            +
                def self.date
         
     | 
| 
      
 20 
     | 
    
         
            +
                  @date_class ||= Date
         
     | 
| 
      
 21 
     | 
    
         
            +
                end
         
     | 
| 
      
 22 
     | 
    
         
            +
             
     | 
| 
      
 23 
     | 
    
         
            +
                def initialize(path, entry)
         
     | 
| 
      
 24 
     | 
    
         
            +
                  @path = path
         
     | 
| 
      
 25 
     | 
    
         
            +
                  @mode, line, @owner, @group, size, d1, d2, d3, @name = entry.split(' ')
         
     | 
| 
      
 26 
     | 
    
         
            +
                  @size = size.to_i
         
     | 
| 
      
 27 
     | 
    
         
            +
                  @time = determine_time(d1, d2, d3)
         
     | 
| 
      
 28 
     | 
    
         
            +
                end
         
     | 
| 
      
 29 
     | 
    
         
            +
             
     | 
| 
      
 30 
     | 
    
         
            +
                def path
         
     | 
| 
      
 31 
     | 
    
         
            +
                  File.join(@path, @name)
         
     | 
| 
      
 32 
     | 
    
         
            +
                end
         
     | 
| 
      
 33 
     | 
    
         
            +
             
     | 
| 
      
 34 
     | 
    
         
            +
                def directory?
         
     | 
| 
      
 35 
     | 
    
         
            +
                  @mode[0] == ?d
         
     | 
| 
      
 36 
     | 
    
         
            +
                end
         
     | 
| 
      
 37 
     | 
    
         
            +
             
     | 
| 
      
 38 
     | 
    
         
            +
                def mode
         
     | 
| 
      
 39 
     | 
    
         
            +
                  parse_mode(@mode)
         
     | 
| 
      
 40 
     | 
    
         
            +
                end
         
     | 
| 
      
 41 
     | 
    
         
            +
             
     | 
| 
      
 42 
     | 
    
         
            +
                def symlink?
         
     | 
| 
      
 43 
     | 
    
         
            +
                  @mode[0] == ?l
         
     | 
| 
      
 44 
     | 
    
         
            +
                end
         
     | 
| 
      
 45 
     | 
    
         
            +
             
     | 
| 
      
 46 
     | 
    
         
            +
                private # --------------------------------------------------------
         
     | 
| 
      
 47 
     | 
    
         
            +
             
     | 
| 
      
 48 
     | 
    
         
            +
                def parse_mode(m)
         
     | 
| 
      
 49 
     | 
    
         
            +
                  result = 0
         
     | 
| 
      
 50 
     | 
    
         
            +
                  (1..9).each do |i|
         
     | 
| 
      
 51 
     | 
    
         
            +
            	result = 2*result + ((m[i]==?-) ? 0 : 1)
         
     | 
| 
      
 52 
     | 
    
         
            +
                  end
         
     | 
| 
      
 53 
     | 
    
         
            +
                  result
         
     | 
| 
      
 54 
     | 
    
         
            +
                end
         
     | 
| 
      
 55 
     | 
    
         
            +
             
     | 
| 
      
 56 
     | 
    
         
            +
                def determine_time(d1, d2, d3)
         
     | 
| 
      
 57 
     | 
    
         
            +
                  elements = ParseDate.parsedate("#{d1} #{d2} #{d3}")
         
     | 
| 
      
 58 
     | 
    
         
            +
                  if elements[0].nil?
         
     | 
| 
      
 59 
     | 
    
         
            +
            	today = self.class.date.today
         
     | 
| 
      
 60 
     | 
    
         
            +
            	if elements[1] > today.month
         
     | 
| 
      
 61 
     | 
    
         
            +
            	  elements[0] = today.year - 1
         
     | 
| 
      
 62 
     | 
    
         
            +
            	else
         
     | 
| 
      
 63 
     | 
    
         
            +
            	  elements[0] = today.year
         
     | 
| 
      
 64 
     | 
    
         
            +
            	end
         
     | 
| 
      
 65 
     | 
    
         
            +
                  end
         
     | 
| 
      
 66 
     | 
    
         
            +
                  elements = elements.collect { |el| el.nil? ? 0 : el }
         
     | 
| 
      
 67 
     | 
    
         
            +
                  Time.mktime(*elements[0,7])
         
     | 
| 
      
 68 
     | 
    
         
            +
                end
         
     | 
| 
      
 69 
     | 
    
         
            +
              end
         
     | 
| 
      
 70 
     | 
    
         
            +
             
     | 
| 
      
 71 
     | 
    
         
            +
              ####################################################################
         
     | 
| 
      
 72 
     | 
    
         
            +
              # Manage the uploading of files to an FTP account.
         
     | 
| 
      
 73 
     | 
    
         
            +
              class FtpUploader
         
     | 
| 
      
 74 
     | 
    
         
            +
             
     | 
| 
      
 75 
     | 
    
         
            +
                # Log uploads to standard output when true.
         
     | 
| 
      
 76 
     | 
    
         
            +
                attr_accessor :verbose
         
     | 
| 
      
 77 
     | 
    
         
            +
             
     | 
| 
      
 78 
     | 
    
         
            +
                class << FtpUploader
         
     | 
| 
      
 79 
     | 
    
         
            +
                  # Create an uploader and pass it to the given block as +up+.
         
     | 
| 
      
 80 
     | 
    
         
            +
                  # When the block is complete, close the uploader.
         
     | 
| 
      
 81 
     | 
    
         
            +
                  def connect(path, host, account, password)
         
     | 
| 
      
 82 
     | 
    
         
            +
            	up = self.new(path, host, account, password)
         
     | 
| 
      
 83 
     | 
    
         
            +
            	begin
         
     | 
| 
      
 84 
     | 
    
         
            +
            	  yield(up)
         
     | 
| 
      
 85 
     | 
    
         
            +
            	ensure
         
     | 
| 
      
 86 
     | 
    
         
            +
            	  up.close
         
     | 
| 
      
 87 
     | 
    
         
            +
            	end
         
     | 
| 
      
 88 
     | 
    
         
            +
                  end
         
     | 
| 
      
 89 
     | 
    
         
            +
                end
         
     | 
| 
      
 90 
     | 
    
         
            +
             
     | 
| 
      
 91 
     | 
    
         
            +
                # Create an FTP uploader targetting the directory +path+ on +host+
         
     | 
| 
      
 92 
     | 
    
         
            +
                # using the given account and password.  +path+ will be the root
         
     | 
| 
      
 93 
     | 
    
         
            +
                # path of the uploader.
         
     | 
| 
      
 94 
     | 
    
         
            +
                def initialize(path, host, account, password)
         
     | 
| 
      
 95 
     | 
    
         
            +
                  @created = Hash.new
         
     | 
| 
      
 96 
     | 
    
         
            +
                  @path = path
         
     | 
| 
      
 97 
     | 
    
         
            +
                  @ftp = Net::FTP.new(host, account, password)
         
     | 
| 
      
 98 
     | 
    
         
            +
                  makedirs(@path)
         
     | 
| 
      
 99 
     | 
    
         
            +
                  @ftp.chdir(@path)
         
     | 
| 
      
 100 
     | 
    
         
            +
                end
         
     | 
| 
      
 101 
     | 
    
         
            +
             
     | 
| 
      
 102 
     | 
    
         
            +
                # Create the directory +path+ in the uploader root path.
         
     | 
| 
      
 103 
     | 
    
         
            +
                def makedirs(path)
         
     | 
| 
      
 104 
     | 
    
         
            +
                  route = []
         
     | 
| 
      
 105 
     | 
    
         
            +
                  File.split(path).each do |dir|
         
     | 
| 
      
 106 
     | 
    
         
            +
            	route << dir
         
     | 
| 
      
 107 
     | 
    
         
            +
            	current_dir = File.join(route)
         
     | 
| 
      
 108 
     | 
    
         
            +
            	if @created[current_dir].nil?
         
     | 
| 
      
 109 
     | 
    
         
            +
            	  @created[current_dir] = true
         
     | 
| 
      
 110 
     | 
    
         
            +
            	  puts "Creating Directory  #{current_dir}" if @verbose
         
     | 
| 
      
 111 
     | 
    
         
            +
            	  @ftp.mkdir(current_dir) rescue nil
         
     | 
| 
      
 112 
     | 
    
         
            +
            	end
         
     | 
| 
      
 113 
     | 
    
         
            +
                  end
         
     | 
| 
      
 114 
     | 
    
         
            +
                end
         
     | 
| 
      
 115 
     | 
    
         
            +
             
     | 
| 
      
 116 
     | 
    
         
            +
                # Upload all files matching +wildcard+ to the uploader's root
         
     | 
| 
      
 117 
     | 
    
         
            +
                # path.
         
     | 
| 
      
 118 
     | 
    
         
            +
                def upload_files(wildcard)
         
     | 
| 
      
 119 
     | 
    
         
            +
                  Dir[wildcard].each do |fn|
         
     | 
| 
      
 120 
     | 
    
         
            +
            	upload(fn)
         
     | 
| 
      
 121 
     | 
    
         
            +
                  end
         
     | 
| 
      
 122 
     | 
    
         
            +
                end
         
     | 
| 
      
 123 
     | 
    
         
            +
                
         
     | 
| 
      
 124 
     | 
    
         
            +
                # Close the uploader.
         
     | 
| 
      
 125 
     | 
    
         
            +
                def close
         
     | 
| 
      
 126 
     | 
    
         
            +
                  @ftp.close
         
     | 
| 
      
 127 
     | 
    
         
            +
                end
         
     | 
| 
      
 128 
     | 
    
         
            +
             
     | 
| 
      
 129 
     | 
    
         
            +
                private # --------------------------------------------------------
         
     | 
| 
      
 130 
     | 
    
         
            +
             
     | 
| 
      
 131 
     | 
    
         
            +
                # Upload a single file to the uploader's root path.
         
     | 
| 
      
 132 
     | 
    
         
            +
                def upload(file)
         
     | 
| 
      
 133 
     | 
    
         
            +
                  puts "Uploading #{file}" if @verbose
         
     | 
| 
      
 134 
     | 
    
         
            +
                  dir = File.dirname(file)
         
     | 
| 
      
 135 
     | 
    
         
            +
                  makedirs(dir)
         
     | 
| 
      
 136 
     | 
    
         
            +
                  @ftp.putbinaryfile(file, file) unless File.directory?(file)
         
     | 
| 
      
 137 
     | 
    
         
            +
                end
         
     | 
| 
      
 138 
     | 
    
         
            +
              end
         
     | 
| 
      
 139 
     | 
    
         
            +
            end
         
     |