likes
comments
collection
share

用go写了一个帮助开发人员早点下班的命令行工具

作者站长头像
站长
· 阅读数 22

lwe是leave work early的缩写,也就是"早点下班"!🤣🤣🤣 它是一个帮助开发者提高工作效率的跨平台命令行工具,当然你把它当做go入门学习的项目也是合适的! 总之,欢迎提issue、提好玩或者使用的功能需求,最好能直接PR参与到项目中,大家一起努力,争取早点下班!!! 💪💪💪

功能概览

1.由建表SQL语句转换成Java Bean、Go结构体、Json等

2.将SQL语句转换成ElasticSearch查询的DSL语言

3.Git增强功能:glog、gl、gcl、gst

其它小工具

安装

下载编译后的可执行文件

release页获取对应平台的版本,在终端上即可使用该二进制文件!

如果你经常使用lwe,更推荐的方式是将二进制文件配置到环境变量中,这样可以随时随地使用二进制文件

更多的安装方式和注意事项,查查阅Wiki

使用姿势

你可以输入lwe 查看lwe命令的使用方式,有哪些子命令及其各自对的功能描述:

Usage: lwe [command]

Available Commands:
completion  Generate the autocompletion script for the specified shell
  es          Translate SQL to elasticsearch's DSL
  fmt         Generate the specified file based on SQL
  gcl         Update all git repository under the given dir 
  gl          Update all git repository under the given dir 
  glog        Get all git repository commit log under the given dir 
 .....

如果你想查看lwe子命令的功能和使用方式,可以使用-h参数查看命令的使用帮助 ,如:lwe es -h

1、建表语句生成Java Bean实体、Go 结构体等

如果我们已经有了表结构,使用建表语句生成对应的实体可以大大减少我们"无脑且重复"工作。 目前支持生成的结构包括Java、Go、Json。

使用方式:

Usage:
lwe fmt [flags]

Examples:
lwe fmt sql-file-path [-t=java|go|json] [-a=yesAnd]

详细使用说明,可以查阅Wiki

2、SQL语句生成DSL语句

lwe es [可选参数] <SQL语句> 

这个命令可以帮我们从繁琐的ES查询语法中解脱出来,它可以将sql语句转换成响应的DSL,并且以curl命令的形式输出,这样服务器上也可以方便的使用。 当前版本支持的SQL操作

使用方式:

Usage:
  lwe es [flags]

Examples:
lwe es 'select * from user where age >18' [-p=true]

详细使用说明,可以查阅Wiki

3、Git增强功能:glog、gl、gcl、gst

这里是几个围绕git相关的增强命令,基本都是在原语义上增加了一些跨git仓库的操作

Git增强功能详细使用说明,可以查阅Wiki

glog 增强Git日志功能

查看给定目录下所有git仓库提交日志 开发人员通常会在多个git仓库下工作,经常会有同时查看多个git仓库提交日志的需求,glog子命令就派上用场了。

使用方式:

Usage:
  lwe glog [flags]

Examples:
lwe glog [git repo dir] [-a=yesAnd] [-n=50] [-s=2023-08-04] [-e=2023-08-04]

gl 增强拉取代码功能

拉取给定目录下的所有git仓库最新代码(使用的git pull --rebase的方式)

使用方式:

Usage:
  lwe gl [flags]

Examples:
lwe gl [git repo dir]

gcl 增强git clone功能

使用方式:

Usage:
  lwe gcl [flags]

Examples:
lwe gcl gitGroupUrl [dir for this git group] -t=yourToken

gst 查看指定目录下所有git仓库状态

查看给定目录下的所有git仓库状态

使用方式:

Usage:
  lwe gst [flags]

Examples:
lwe gst [your git repo dir]

其它小工具

一些非常实用的功能

格式化请求url

有时请求的url很长,不利于我们找到目标参数,可以使用url命令进行格式化,增加请求的可读性

使用方式:

Usage:
  lwe url [flags]

Examples:
lwe url yourUrl

详细使用说明,可以查阅Wiki

获取Navicat连接配置中的密码

如果想从Navicat保存的连接中获取对应数据库的用户名/密码,可以使用ncx文件,ncx文件是Navicat导出的连接配置文件,但ncx中的密码是一个加密后的十六进制串,使用ncx命令可以获取对应的明文

使用方式:

Usage:
lwe ncx [flags]

Examples:
lwe ncx ncx-file-path

详细使用说明,可以查阅Wiki

同步两个目录下文件

如果你有备份文件的习惯,这个工具可能会帮到你,它可以将源目录文件下的新增的文件同步到备份目录,省去了你逐层文件夹逐个文件去手动同步。

使用方式:

Usage:
lwe fsync [flags]

Examples:
lwe fsync sourceDir targetDir [-d=true]

详细使用说明,可以查阅Wiki

说明

1.使用spf13/cobra库来方便的构建命令行工具

2.es子命令实现借助了sqlparser库来解析SQL语句,一个库很优秀的解析SQL库

3.sql转换成dsl,曹大的elasticsql项目已经是一个很成熟好用的轮子了,lwe也大量借鉴了它的实现思路;没直接调用这个库的原因是想自己练手,同时后续增减功能也更加灵活

4.glog结果输出时使用了go-pretty库来表格化提交信息

RoadMap

  • fmt 根据需求支持更多类型的转换
  • es 按需增加对insert、update、delete ......

开源协议

MIT License