2009-02-03 10 views

Répondre

5

Ok, j'ai décidé de le faire moi-même. Le code n'est pas très beau car il contient beaucoup de gestion des exceptions, mais il fait le travail :)

require 'rake' 
require 'net/ftp' 

def ftp_files(prefixToRemove, sourceFileList, targetDir, hostname, username, password) 
    Net::FTP.open(hostname, username, password) do |ftp| 
    begin 
    puts "Creating dir #{targetDir}" 
    ftp.mkdir targetDir 
    rescue 
    puts $! 
    end 
    sourceFileList.each do |srcFile|  
    if prefixToRemove 
     targetFile = srcFile.pathmap(("%{^#{prefixToRemove},#{targetDir}}p")) 
    else 
     targetFile = srcFile.pathmap("#{targetDir}%s%p") 
    end 
    begin 
     puts "Creating dir #{targetFile}" if File.directory?(srcFile) 
     ftp.mkdir targetFile if File.directory?(srcFile) 
    rescue 
     puts $! 
    end 
    begin 
     puts "Copying #{srcFile} -> #{targetFile}" unless File.directory?(srcFile) 
     ftp.putbinaryfile(srcFile, targetFile) unless File.directory?(srcFile) 
    rescue 
     puts $! 
    end 
    end 
    end 
end 

task :ftp => [:dist] do 
    ftp_files("dist", FileList["dist/**/*"], "remote_dir", 'host.com', 'user', 'pwd') 
end 
Questions connexes