[英]Ruby thor command line tool commands
我正計划制作我的第一個命令行工具,並且想知道命名和命令的工作方式。
我希望我的工具的功能類似於Git,從某種意義上說,您只需安裝它,然后運行命令,只需輸入git clone
或git commit
。 在許多示例中,我已經看到工具類似於thor foo:bar
或./foo.rb bar
。
我的主要問題是如何做到這一點,如果我的工具名稱是Foo
,並且工具中的命令是bar
,那么用戶要做的就是在命令行中運行Foo bar
。
對於git clone
,它的工作方式是執行git
程序並將clone
作為參數傳遞給它。 因此,如果您有幾個應該以類似方式啟動的腳本,則可以創建一個小型啟動器。 該代碼在bash中(但是腳本與sh
兼容,因此您可以安全地將shebang更改為/bin/sh
)。 用任何其他語言編寫相同的東西非常容易。
#!/bin/bash
command=$1
shift
case $1 in
cmd1)
echo "Executing command #1"
./smallcmd1 "$@"
;;
cmd2)
echo "Executing command $command"
./smallcmd2 "$@"
;;
'')
echo 'No option specified'
exit 1
;;
*) echo "Invalid option"
exit 1
;;
esac
exit $?
其中smallcmd
是您的輔助命令腳本或程序。
現在您可以執行它:
./mycommand smallcmd1
也可以傳遞其他參數。
如果將此腳本放置在任何$ PATH目錄中,則可以省略./
如下所示:
mycommand smallcmd1
使用Thor編寫可執行文件非常簡單。 您要做的就是:
#{YourThorClassname}.start
添加到腳本的底部。 示例:my-cli.rb
#!/usr/bin/env ruby
require "thor"
class MyCLI < Thor
desc "foo", "Prints foo"
def foo
puts "foo"
end
end
MyCLI.start
使腳本可執行:
chmod a+x my-cli.rb
現在您可以輸入:
./my-cli.rb foo
您可以在Thor Wiki中找到類似的示例和更多幫助。
您甚至可以將文件重命名為my-cli
(不帶.rb
擴展名),並且由於文件中的ruby shebang而仍然有效。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.