基于任务的语言替代Makefile

时间:2012-10-09 07:04:04

标签: bash programming-languages makefile

Makefile中,我可以定义任务,以便用户可以指定他/她想要做的事情:

make run
make serve
make deploy
..

这似乎工作正常,但我觉得Makefile对于这个目的而言是一种过度杀伤,所有这些依赖性分析和相对模糊的语法/执行。是否有任何专门为此目的而设计的语言/工具,大多数系统都可以使用?或任何想法如何使用像bash这样的目的?

1 个答案:

答案 0 :(得分:4)

因此,在Arjun的建议之后,我想出了一个sh脚本:

#!/usr/bin sh

# only one task at a time
if [ $# != 1 ]; then
    echo "usage: $0 <task_name>"
fi

run() {
    echo "I'm now running"
}

serve() {
    echo "I'm now serving"
}

deploy() {
    echo "I'm now deploying"
}

case $1 in
    "run")        run;;
    "serve")      serve;;
    "deploy")     deploy;;
esac

这比我想象的容易得多。我已将文件命名为task,以便我现在可以将任务运行为:

$ sh task serve
I'm now serving

或者如果文件是可执行的:

$ ./task deploy
I'm now deploying

switch声明中只有一点点重复,但这对我来说已经足够了。如果可以做得更好,请随时给我发表评论。