在Makefile
的我可以定義任務,使用戶可以指定哪些他/她想要做的是:任務型語言替代Makefile文件
make run
make serve
make deploy
..
這似乎是工作好,但我覺得Makefile
對於所有這些依賴性分析和相對模糊的語法/執行來說,這是一個矯枉過正的目的。是否有任何專門爲此目的而設計的語言/工具最適用於大多數系統?或任何想法如何使用bash
爲此目的?
在Makefile
的我可以定義任務,使用戶可以指定哪些他/她想要做的是:任務型語言替代Makefile文件
make run
make serve
make deploy
..
這似乎是工作好,但我覺得Makefile
對於所有這些依賴性分析和相對模糊的語法/執行來說,這是一個矯枉過正的目的。是否有任何專門爲此目的而設計的語言/工具最適用於大多數系統?或任何想法如何使用bash
爲此目的?
所以阿瓊的建議後,我想出了一個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
聲明有點重複,但它不夠好爲了我。如果它可以變得更好,請隨時給我評論。
看起來很像一個initscript(即'/ etc/init.d/*'或'/ etc/rc.d/*')。如果你想要風格的建議,也許你可以偷看其中的一個文件;) – ArjunShankar
@ArjunShankar的確的確如此,看起來像我已經徹底改變了車輪.. – none
不時重塑車輪並不是一件壞事。它加深了你對車輪的理解。 – Beta
如果您不需要依賴關係分析,也許您真正需要的是您選擇的語言中的「switch」語句。 – ArjunShankar
你有沒有考慮過爲每個命令創建一個可執行的bash文件?然後你的用戶可以輸入'run'' serve'' deploy'等。你可以使用內置的'source'來從其他文件導入庫函數,設置,配置等。 – rici
你編譯源代碼嗎?如果是的話,我認爲依賴分析是沒有必要的。 – uzsolt