Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby thor命令行工具命令_Ruby_Shell_Gem_Command Line Interface_Thor - Fatal编程技术网

Ruby thor命令行工具命令

Ruby thor命令行工具命令,ruby,shell,gem,command-line-interface,thor,Ruby,Shell,Gem,Command Line Interface,Thor,我正计划制作我的第一个命令行工具,我想知道命名和命令是如何工作的 我希望我的工具的功能类似于Git,即您只需安装它,然后运行命令,只需输入Git clone或Git commit。在我看到的许多示例中,工具类似于thor foo:bar或/foo.rb bar 我的主要问题是,如果我的工具名是Foo,而我的工具中的命令是bar,我如何才能做到这一点,用户只需在命令行中运行Foo bar。在git clone的情况下,它的工作方式是执行git程序,并将clone作为参数传递给它。因此,如果您有几个

我正计划制作我的第一个命令行工具,我想知道命名和命令是如何工作的

我希望我的工具的功能类似于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
s是辅助命令脚本或程序

现在您可以执行它:

./mycommand smallcmd1
还可以传递其他参数

如果将此脚本放在任何目录中,则可以省略
/
,如下所示:

mycommand smallcmd1

用Thor制作一个可执行文件非常简单。你所要做的就是:

  • 包括ruby shebang系列
  • 在脚本中需要“thor”
  • 定义你的Thor类
  • #{YourThorClassname}.start
    添加到脚本底部
示例:my-cli.rb

现在您可以键入:

./my-cli.rb foo
你可以在《雷神》中找到一个类似的例子和更多的帮助


您甚至可以将文件重命名为
my cli
(没有扩展名
.rb
),由于文件中的ruby shebang,它仍然可以工作。

显示您尝试过但失败的代码在哪里?正如我在原文中所说的,我以前从未做过这样的代码,我所看到的任何资源或教程都没有说明如何做到这一点。所以真的没有尝试,我真的只是想找出从哪里开始,或者只是一个建议,我可以看看哪里。我已经阅读了尽可能多的关于Thor和Ruby命令行工具的文档,但什么也没找到。是一个描述这一点的博客。它只描述了简单的Ruby,没有任何帮助,标准库中的OptParse,还有一个使用ThorThank的例子,我会读到的。太棒了,如果我想自动完成的话。用户只需运行一行就可以安装我的工具,而且它可以立即工作。我在程序中是否做了一些更改以使其安装到$PATH?或者安装程序命令是否指定将其放入$PATH?我应该把它做成红宝石吗?这些似乎很容易安装。
chmod a+x my-cli.rb
./my-cli.rb foo