【问题标题】:Copy Folder Contents to Parent Directory in Rake (on Windows)将文件夹内容复制到 Rake 中的父目录(在 Windows 上)
【发布时间】:2015-10-15 02:05:04
【问题描述】:

我的文件夹中有一组文件../SomeFolder/AndAnother/dist

dist 文件夹包含一堆文件和文件夹,我想在 Rake 任务中提升一个级别。

所以

../SomeFolder/AndAnother/dist/subFolder/a.txt 变为 ../SomeFolder/AndAnother/subFolder/a.txt

我可以通过

在 linux 上做到这一点
task :lift_to_parent do
  sh('mv', '../SomeFolder/AndAnother/dist/*', '../SomeFolder/AndAnother')
end

但是这个 Rake 任务也可以在 Windows 和那个操作系统上运行我得到Errno::EACCES: Permission denied @ unlink_internal

我希望FileUtils.mv 可以在 linux 和 windows 上运行...

但是如果我

task :lift_to_parent do
  FileUtils.mv '../SomeFolder/AndAnother/dist', '../SomeFolder/AndAnother', :force => true
end

我得到了ArgumentError: same file: ../SomeFolder/AndAnother/dist and ../SomeFolder/AndAnother/dist,所以我显然遗漏了一些东西让FileUtils.mv 复制一个级别(或以错误的方式进行此操作)

那么,如何修复我的 FileUtils 版本或使用 Rake 任务将文件夹结构复制到其父级?

【问题讨论】:

    标签: ruby rake


    【解决方案1】:

    我已经这样做了

    task : lift_to_parent do
      copied_by_jenkins = '../SomeFolder/AndAnother/dist'
      copy_pattern = "#{copied_by_jenkins}/**/*"
      target_directory = '../SomeFolder/AndAnother/Public'
    
      next unless File.exists? copied_by_jenkins
    
      FileList[copy_pattern].each do |file|
        file_path = File.dirname(file).sub! copied_by_jenkins, ''
        file_name = File.basename(file)
        target_directory = File.join(target_directory, file_path)
        destination = File.join(target_directory, file_name)
    
        FileUtils.mkdir_p target_directory
        FileUtils.copy_file(file, destination) unless File.directory? file
      end
    
      FileUtils.remove copied_by_jenkins
    end
    

    但为了实现我的目标,这似乎需要大量输入

    【讨论】:

      猜你喜欢
      • 2014-01-21
      • 2019-10-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-07
      • 2019-02-06
      • 2014-07-25
      • 1970-01-01
      相关资源
      最近更新 更多