我计划制作我的第一个命令行工具,并且想知道命名和命令是如何工作的。
我希望我的工具的功能类似于Git,也就是说您只需安装它,然后运行命令,只需输入git clone或git commit即可。在我看到的许多例子中,这些工具都类似于thor foo:bar或./foo.rb bar。
我的主要问题是,如果我的工具名是Foo,而我的工具中的命令是bar,那么用户所要做的就是在命令行中运行Foo bar。
发布于 2013-09-08 04:51:17
在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发布于 2017-09-19 16:02:33
使用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 维基中找到类似的示例和更多的帮助。
您甚至可以将文件重命名为my-cli (没有.rb扩展名),而且由于文件中的ruby,它仍然工作。
https://stackoverflow.com/questions/18679786
复制相似问题