简易补全
#/usr/bin/env bash
# 'head -n 1' 展示grep结果的行数,从第一行开始
head_line=`grep -nw EOF /home/skull/work/scripts/docode |head -n 1 |awk -F : '{print $1}'`
# 'sed -n 2p' 展示grep结果的第2行数
tail_line=`grep -nw EOF /home/skull/work/scripts/docode |sed -n 2p |awk -F : '{print $1}'`
# 以空格分割,取第四列,sed限制行数
arg_complete=`cat /home/skull/work/scripts/docode |sed -n $head_line,${tail_line}p |awk '{print $4}'`
# 指定命令的补全参数
complete -W "$arg_complete" docode
cat <<EOF
************************************************************************************************************************
<<Usage>>
Repo Init: docode init [branch_name] [manifest_xml]
Sync Files: docode sync [fallback-depth]
Switch XML: docode xml manifest_xml [fallback-depth]
Compiler Code: docode make [delta] [ota] [tiny] [release] [copy] [product-name] [more]
Generate .gapp: docode gapp [storyboard_module] [--help] [more]
Build Simulator: docode simulator [delta]
Copy Firmware: docode copy [ota] [only] [product-name]
Statistic Modify: docode repo-diff
Generate Diff-OTA: docode tiny
View Branch: docode view-branch [-n] branch-name
Switch Branch: docode switch-branch branch-search branch-switch branch-origin
************************************************************************************************************************
EOF
二级补全
#/usr/bin/env bash
dodo_path=`find /home -iname dodo`
# 提取脚本文件中方括号内的命令
arg=`grep -n "usage: dodo" $dodo_path | grep -o '\[.*\]' |sed -e 's/\[//g'|sed -e 's/\]//g'`
echo $arg
# 以空格分割字符串转存至数组
OLD_IFS="$IFS"
IFS=" "
arg_array=($arg)
IFS="$OLD_IFS"
function define_complete {
COMPREPLY=()
case $COMP_CWORD in
1)
COMPREPLY=($(compgen -W "$arg" -- ${COMP_WORDS[COMP_CWORD]}))
;;
2)
[[ ${arg_array[@]} =~ ${COMP_WORDS[COMP_CWORD - 1]} ]] && {
tput sc # 保存光标当前位置
# 以'dodo $cmd'为关键字检索提取脚本命令选项参数
echo -e "\noption: "`grep -n "dodo ${COMP_WORDS[COMP_CWORD - 1]}" /home/skull/work/scripts/dodo | grep -o '\[.*\]' |sed -e 's/\[//g'|sed -e 's/\]//g'`
tput rc # 还原光标位置
}
esac
}
complete -F define_complete dodo
cat <<EOF
usage: dodo [init] [sync] [xml] [make] [gapp] [simulator] [copy] [diff] [tiny] [branch] [dircfg]
初始化代码仓库
dodo init [branch_name] [manifest_xml]
branch_name manifest仓分支,缺省则为master分支
manifest_xml 要切换的xml配置文件,缺省则为huamiOS.xml
同步代码仓库
dodo sync [fallback-depth]
fallback-depth 同步前净化代码仓的回滚深度,此参数可选
切换xml
dodo xml [manifest_xml] [fallback-depth]
manifest_xml 要切换的xml配置文件
fallback-depth 切换前净化代码仓的回滚深度,此参数可选
构建项目
dodo make [-d] [-o] [-t] [-r] [-m] [-v]
-d delta 增量编译
-o ota ota升级包编译
-t tiny 制作差分包
-r release release版本,缺省为debug版本
-m more 选择要构建的项目,缺省则在后面选择
-v version 指定版本号,版本号卸载最后,缺省则为9.9.9
生成gapp工程
dodo gapp [module] [-c] [-m]
module 指定要生成的gapp工程的模块
-c gapp module 选择要生成的gapp工程的模块
-m more 选择要构建的项目,缺省则在后面选择
编译模拟器
dodo simulator [-d]
-d delta 增量编译,缺省则为全编译
复制编译出的固件
dodo copy [-t] [-o] [product]
-t ota 复制ota升级固件到桌面对应项目文件夹
-o only 复制程序固件到对应项目烧录文件夹
product 指定要复制到文件夹的项目名,缺省则在后面选择
tips: 缺省选项则复制包括资源在内的固件包到对应项目文件夹
自定义固件存放的路径
dodo dircfg [path]
path 指定配置文件存放的路径
tips: 生成自定义固件存放的路径的配置文件,根据需求修改即可
检查代码仓变化
dodo diff
tips: 检查仓内c/cpp/h文件修改情况,同时将结果写入文件repo.diff
制作差分包
dodo tiny [product]
product 指定做差分包的产品,缺省则以上次编译的产品做
tips: 项目生成的升级包与BACKUP文件夹中的升级包做差分包存至目录BACKUP/diff,同时将上传至桌面文件夹tiny
代码仓分支操作
dodo branch [-v] [-n] [branch]
-v view branch 查看代码仓指定分支的状态
-n exclude branch 查看代码仓排除指定分支的状态
branch 分支名
dodo branch [-s] [search] [target] [origin]
-s switch branch 切换分支
search 检索分支
target 目标分支
origin 远端分支,缺省则表示切分支
tips 检索分支与目标分支相同,则重建分支,不同则切换分支
EOF
标签:SHELL,grep,补全,docode,dodo,命令,sed,branch,arg From: https://www.cnblogs.com/skullboyer/p/17028387.html