细心的朋友可能会发现,我提供的一些脚本都可以通过一行命令安装,并且它们的安装命令极为相似,本文探讨是否可以把这套体系升级成为方便所有人发布脚本与下载脚本的开放性平台。
curl -s https://xaoxuu.com/install | sh -s vim-cn.sh |
虽然它们安装方式极为相似,但是安装逻辑却并非完全相同,例如前三者是安装到 /usr/local/bin/
目录下,在任意位置打开终端都可以使用,而 podspec.sh
则是下载到当前目录下。
如果打开 https://xaoxuu.com/install
文件,你会发现它并没有做任何实质性的操作,只是负责任务派发,根据不同的参数把「安装」指令指派给不同的项目,不同的项目对「安装」的具体实现可以相同也可以不同。
对于相同的部分,以 vim-cn.sh
为例,它的 install
实现如下:
|
从中可以看到它导入了一个「库」,确切的说是一个存放可复用代码的仓库地址,具体的「下载」与「安装」脚本像独立组件一样可供外部调用。与此例不同的 podspec.sh
脚本就只有下载操作:
curl -s ${lib}/download.sh | sh -s xaoxuu ${REPO} ${VERSION} ${TARGET} ./ && |
易于扩展
这么一套流程使得脚本安装变得非常有扩展性,如果需要发布一个新的脚本,只需要新建仓库,在其中写一个 install
脚本,通过调用 lib.sh
仓库里封装好的脚本,传入仓库名、版本、要下载的文件,就可以轻松实现下载安装流程。
易于使用
更重要的是,可以通过一行命令来安装:
curl -s https://xaoxuu.com/install | sh -s 我的脚本 |
这套体系类似于「应用商店、Cocoapods、npm」一样,但目前只对创建在 https://github.com/xaoxuu/
中的仓库有效。
Todo
- 把「扩展性」范围放大至所有GitHub用户的仓库,而不是只有我自己账号下的仓库。
- 为 lib 库增加更多基础组件。
- 需要懂脚本的大佬完成跨平台兼容性(Win/Mac/Linux)
- 修复现存问题,例如
volantis/start
首次安装后无限循环的BUG - 如果可能,建一个前端页面可供搜索、查阅文档。
- 社区、推广,让更多人加入。