用 Yaml 定义自己项目里的常用 cli 命令

用 yml 文件定义常用的 cli 命令方便解决实际问题
更新于: 2021-12-19 12:57:28

背景

有时候,我们在项目中经常会遇到这样一个场景,经常写一些小脚本,或者一些小脚本的组合

从服务器上 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