如何打包shell脚本以便在GitHub上分发



我不太确定从哪里开始搜索这个问题的答案。

(我用的是Mac。)

不管怎样,我已经制作了一个命令行工具,可以运行一些Ruby的东西。基本上,我在用户目录中的文件夹中添加了一个可执行文件,添加了允许它在终端中运行的权限。然后,我将可执行文件的路径添加到我的$PATH变量中。这一切对我来说都很好。我可以从我的外壳中这样运行:

$ ngi controller

我把这个项目上传到了GitHub,并向用户提供了下载和使用的指示,但下载的指示非常复杂(这是我能想到的最好的):

~ $ mkdir .angular_init
~ $ cd .angular_init
~/.angular_init $ git clone https://github.com/joshbeam/angular_init.git
~/.angular_init $ cd angular_init/bin
~/.angular_init/angular_init/bin $ chmod 755 ngi
~/.angular_init/angular_init/bin $ export PATH=$PATH:~/.angular_init/angular_init/bin

显然,对于像rvmnpm这样的工具,您只需神奇地下载它们,它们就可以工作了那么,我如何将我的shell脚本打包为易于"下载"的,并为用户节省6行shell(令人困惑)的工作量呢

(如果有帮助的话,这里有回购的链接)。

作为一些简化点,您不需要双重嵌套目录,正如您所知,git clone将创建所需的目录。

所以

git clone https://github.com/joshbeam/angular_init.git .angular_init

将创建您的repo并将其直接克隆到.angular_init中。

您还可以告诉git,该文件在repo中具有执行权限,因此它可以通过这种方式进行检查,而不需要人员自己chmod。只需更改权限并再次添加文件,然后提交即可。(您可以在工作目录中使用git ls-tree HEAD -- <file>来查看git的权限。)

这将用git克隆替换前五个步骤。这只剩下两个步骤,这是完全合理的。

此外,第二步应该是将PATH修改行放入适当的shell启动文件中,而不是直接在当前shell会话中运行它。

或者,上面的方法可以让人们将存储库签出到他们想要的任何地方,然后从那里直接链接到他们的PATH中的一个位置。

最新更新