makefile 中的多 select 菜单
Multi select menu in makefile
我有一个在 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
嗯,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
目标的先决条件,等等。我不真的不认为这是一个很好的前进方式,但你可以让它发挥作用。
我有一个在 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
嗯,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
目标的先决条件,等等。我不真的不认为这是一个很好的前进方式,但你可以让它发挥作用。