0

我有一个在 aws 中部署 x 项目的 makefile

目标是像这样执行make:

make deploy-production

并看到这样的输出

Please select the project:
1) api
2) web
3) somethingelse

然后按下数字并继续,通过将选择分配给名为 project 的变量

我已经为受支持的环境“自动生成”目标,只想为项目构建多选项。我的示例 makefile 已删除不相关的内容:

ENVIRONMENTS := development staging production
TARGETS := $(foreach X,$(ENVIRONMENTS),deploy-$X)

$(TARGETS):
  $(eval ENV:=$(subst deploy-,,$(@)))
  # here want to ask for project, env i have already as resolved from above line
4

1 回答 1

1

好吧,make 可以运行任何 shell 脚本。因此,如果您编写一个要求用户输入并接受答案的 shell 脚本,您可以从 make 运行它。

你可以这样做:

deploy-production:
        @echo Please select the project:; \
        echo '1) api'; \
        echo '2) web'; \
        echo '3) somethingelse'; \
        read -p 'Enter value: ' result && $(MAKE) CHOICE=$$result got-choice

这里遗漏了很多:处理无效值,将CHOICE值转换为目标,然后将其作为目标的先决条件got-choice等等。我真的不认为这是一个好的前进方式,但你可以让它工作.

于 2021-07-05T17:04:02.557 回答