用 Yaml 定义自己项目里的常用 cli 命令
用 yml 文件定义常用的 cli 命令方便解决实际问题
背景
有时候,我们在项目中经常会遇到这样一个场景,经常写一些小脚本,或者一些小脚本的组合
从服务器上 copy 一个文件,会写个小脚本,可能并不常用,但要经常改动,比如这样:
scp root@182.11.11.12:${{ vars.remote }}/production.sqlite3 ${{ vars.local }}/production.sqlite3
又比如,本地会经常执行一些脚本
cp production.sqlite3 development.sqlite3
经常会有这样的脚本出现,而且,经常是一小段,一小段的形式去使用,我目前用到的方式是 ycc 做成命令行的方式来调用:
安装
git clone git@github.com:afeiship/yaml-command-cli.git
npm link
配置文件 .ycc.yml ,目前不支持改名字
# .ycc.yml
vars:
remote: /home/aric.zheng/aric-jswork/jsw-rails/db
local: ${{ env.HOME }}/aric-jswork/jsw-rails/db
commands:
sync:
- scp west:${{ vars.remote }}/production.sqlite3 ${{ vars.local }}/production.sqlite3
prd2dev:
- cd ${{ vars.local }}
- cp production.sqlite3 development.sqlite3
调用
# command: sync
ycc -c sync
# command: prd2dev
ycc -c prd2dev
# composite
ycc -c sync,prd2dev
# dynmic args
ycc -c dynamic1 ~/Downloads picture
运行示例
❯ ycc -c dynamic1 ~/Downloads picture
total 380680
drwx------+ 16 alo7.aric staff 512B Nov 15 14:01 .
drwxr-xr-x+ 79 alo7.aric staff 2.5K Nov 15 11:29 ..
-rw-r--r--@ 1 alo7.aric staff 6.0K Nov 11 09:48 .DS_Store
-rw-r--r--@ 1 alo7.aric staff 102K Nov 11 11:03 Snip20211111_100.png
-rw-r--r--@ 1 alo7.aric staff 39K Nov 11 14:52 Snip20211111_102.png
-rw-r--r--@ 1 alo7.aric staff 19K Nov 11 15:58 Snip20211111_103.png
-rw-r--r--@ 1 alo7.aric staff 141K Nov 11 18:04 Snip20211111_105.png
-rw-r--r--@ 1 alo7.aric staff 53K Nov 11 10:39 Snip20211111_98.png
-rw-r--r--@ 1 alo7.aric staff 95K Nov 12 16:33 Snip20211112_106.png
-rw-r--r--@ 1 alo7.aric staff 6.8K Nov 15 09:57 Snip20211115_107.png
-rw-r--r-- 1 alo7.aric staff 237B Nov 9 09:45 package.json
-rw-r--r-- 1 alo7.aric staff 415K Nov 15 14:01 picture.tar.gz
扩展
你也可以在 ~/.ycc.yml 里配置所有项目都通用的命令,ycc 会自动加载与项目的 yml 合并使用
# in home dir
~/.ycc.yml
# in project dir
current_project_dir/.ycc.yml