我把这个设置在一个Makefile
.
ARG_2 := $(word 2, $(MAKECMDGOALS))
command_exist=command -v $(1) >/dev/null 2>&1
command_not_exist=! command -v $(1) >/dev/null 2>&1
npmig:
$(call command_not_exist,npm) && echo 'npm is not installed'
$(call command_not_exist,ied) && npm install ied
$(call command_not_exist,$(ARG_2)) && ied install $(ARG_2) -g
一般的想法是我可以运行类似的东西make npmig json
,如果npm
没有安装我会得到一个实际的错误。如果ied
没有安装就会安装,最后ied
会安装json
。
- 在第一行之后,如果
npm
检查失败,则进程应退出。 ied
无论是已安装还是(希望)刚刚安装,都应安装第二个之后。- 第三个之后
json
应该安装,无论它是否已安装,或者(希望)刚刚安装。
这是行不通的。检查命令是否存在的代码将抛出错误,并且整个配方将退出。我需要一种方法来控制这个配方的流程,以便它在我需要时退出并在我需要时继续。