在启动时无所适从,检查文件夹是否存在,否则创建?

时间:2018-11-27 16:17:52

标签: bash vagrant vagrantfile vagrant-provision

当我们想第一次运行流浪汉时,如何检查项目目录中是否存在已同步的文件夹,如果不存在,则在继续进行下一步之前创建?

我尝试:

  config.trigger.before [:up] do |trigger|
    trigger.info = "Create log, tmp, webroot/img folders"
    trigger.run = {path: ".provisioning/before_up.sh"}
  end

#!/bin/bash
# before_up.sh

if [ ! -d "logs" ]; then
  sudo mkdir logs
fi

if [ ! -d "tmp" ]; then
  sudo mkdir tmp
fi

if [ ! -d "webroot/img" ]; then
  sudo mkdir webroot/img
fi

但是有错误

==> default: Running triggers before up ...
==> default: Running trigger...
==> default: Create logs, tmp, webroot/img folders
    default: Running local script: .provisioning/before_up.sh
==> default: Trigger run failed
==> default: Permission denied - /Users/me/apps/.provisioning/before_up.sh

1 个答案:

答案 0 :(得分:0)

这是解决方案

在Vagrant文​​件顶部添加:

FileUtils.mkdir_p './logs'
FileUtils.mkdir_p './tmp'
FileUtils.mkdir_p './webroot/img'

Vagrant.configure("2") do |config|
 # config here
end

来自ruby文档: https://ruby-doc.org/stdlib-1.9.3/libdoc/fileutils/rdoc/FileUtils.html#method-c-mkdir_p

  

mkdir_p(列表,选项= {})单击以切换源选项:模式noop   详细

     

创建一个目录及其所有父目录。例如,

     

FileUtils.mkdir_p'/ usr / local / lib / ruby​​'使执行以下操作   目录(如果不存在)。

     
      
  • / usr
  •   
  • / usr / local
  •   
  • / usr / local / lib
  •   
  • / usr / local / lib / ruby​​
  •