0

我无法测试 Fastlane 操作或通道中是否存在目录。以下任何一项save_path = "./dir_name"都不适用save_path = "dir_name"于当前目录(fastlane正在运行的目录):

!Dir.empty?(save_path)
!Dir[save_path].empty?
Dir.exist?(save_path)
File.exist?(save_path)
File.directory?(save_path)

我什至尝试扩展相对路径:

File.exists? File.expand_path(save_path)

我提到了以下内容:

  1. 检查Ruby中的目录是否为空
  2. 如何检查给定目录是否存在于Ruby中
  3. https://blog.bigbinary.com/2017/02/28/dir-emtpy-included-in-ruby-2-4.html
  4. https://ruby-doc.org/core-2.2.0/Dir.html

如何测试一个目录是否存在于 Fastlane 中?感谢您的阅读和帮助!

4

2 回答 2

0

检查这个的正确格式:

Dir.exist? "#{save_path}" 

如果存在则返回 true,否则返回 false。

于 2018-11-09T12:50:02.180 回答
0

大声笑好吧,我发现了我的问题。我没有意识到我必须包含每个语句的完整路径,因为我正在使用Dir.foreach迭代文件系统的一部分;更新的语法是:

Dir.foreach(save_path) do |dir|
   next if dir == '.' or dir == '..'
   if (File.directory?("#{save_path}#{dir}"))
     begin
       FileUtils.mkdir_p("./#{save_path}#{dir}/images")
     rescue StandardError => e
       UI.message("Failed to make directory ./#{save_path}#{dir}/images: #{e.to_s}")
       return
     end
   end
end

这与File.directory?("#{dir}")那个 if 语句相反。我认为对于路径的其余部分,RubyDirFileUtil库看起来相对于当前目录。

于 2018-11-09T20:00:51.370 回答