如果厨师食谱内的声明

时间:2015-08-07 10:13:22

标签: chef

如何在厨师食谱中使用if语句?

我想只在文件夹不存在的情况下克隆存储库,如果不存在则更好克隆它,如果存在则拉出来

我有一个代码:

bash 'clone-mercurial-repository' do
    if !File.exist?("/root/projects/some_repo")
        code <<-EOH
            cd '/root/projects/'
            hg clone https://bitbucket.org/some_repo
        EOH
    end
end

此代码执行无关紧要,我也尝试将not if放在最后,但它也无法正常工作..

问候,布莱克

2 个答案:

答案 0 :(得分:5)

您可以使用only_ifnot_if来控制任何资源(包括bash资源)的执行。

例如:

bash 'clone-mercurial-repository' do
    code <<-EOH
        cd '/root/projects/'
        hg clone https://bitbucket.org/some_repo
    EOH
    not_if { File.exist?("/root/projects/some_repo") }
end

与您的问题无关,您可能需要查看mercurial cookbook以避免使用bash资源。

答案 1 :(得分:-2)

您还可以使用执行资源,如下所示:

 public void notifyError(String requestType,VolleyError error) {
                String body;
                if(error.networkResponse.data!=null) {
                    String statusCode = String.valueOf(error.networkResponse.statusCode);
                    try {
                        if (error instanceof NetworkError) {
                            Log.d("internet","nao tem internet ligada");
                        }
                        else if (error instanceof ServerError) {
                            Log.d("internet","The server could not be found. Please try again after some time!!");
                        }
                        body = new String(error.networkResponse.data,"UTF-8");
                        JSONObject jsonObj = new JSONObject(body);
                        Log.d("body",String.valueOf(jsonObj.get("message")));
                        showToast(String.valueOf(jsonObj.get("message")));
                    } catch (UnsupportedEncodingException e) {
                        showToast("You need to connect to the internet!");
                    } catch (JSONException e) {
                        Log.d("json:","problems decoding jsonObj");
                    }
                }