跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • 在命令行里面准备起飞–解释来龙去脉
未分類
14 5 月 2020

在命令行里面准备起飞–解释来龙去脉

在命令行里面准备起飞–解释来龙去脉

資深大佬 : guonaihong 1

为什么有 clop

什么有 clop,先从官方库的弊端说起,现有开源库的现状。clop 要解决的问题。

官方库的弊端

  • 不支持 posix 风格(最主要原因)
  • 不能直接支持子命令

go 标准库其实有命令行解析器 flag 。但是他不支持 posix 风格命令行,对于命令行爱好者来说,不支持 posix 风格是相当不友好的。试问可以用cat -nT file 命令读取文件加行号,加行号,显示 tab 符号。用 flag 必须cat -n -T file ,你品,你细品。是不是,flag 开发的 cmd 应用直接没了 posix 那种感觉。当然后还有别的一些弊端,比如没有子命令直接支持等。

对主流开源命令行工具的思考

  • 现有函数式接口缺点

go 里面主流命令行解析库,都是函数一把梭,如果代码按行计费,恩,他们赢面挺大。clop 的设计为什么采用 struct 形式。go 里面是强类型语言,相比 js, py 有数据模板–struct,你们写代码是不是经常传递 struct,确实 struct 是我们经常打交道的伙伴,如果用函数形式老大哥 viper 开发 cmd,你要先定义 struct->定义函数–配置一些形为,还要修改 struct 定义的地方。而使用 clop,只要定义 struct 。一看步骤就知道从 2 变成 1,这里面 struct 用法简化了函数式用法的步骤。

clop 要解决的问题

  • 相比函数式,对复制粘贴友好

第一点,在对比函数式已经说明了只要定义结构体就行,如果要修改,被绑定的变量和 tag 在一行,怎么改也不容易出错,这就是对修改,和复制粘贴友好的原因,函数式:数据定义和使用隔的有点远,容易修改了 A 忘了修改 B 。

  • posix 风格信徒

对一些新的 posix 风格也能支持到位

  • 在实战中慢慢打磨 clop

后面的更新记录,时不时的会放出使用 clop 开发的 posix 命令。满血版本和你机器的 linux 有一样的功能,这次是 cat 命令啦。。。

clop 地址

https://github.com/guonaihong/clop

cat demo

完备版本 cat 实现

https://github.com/antlabs/cat

一个 easy demo

package main  import (  "fmt"  "github.com/guonaihong/clop" )  type Hello struct {  File string `clop:"-f; --file" usage:"file"` }  func main() {   h := Hello{}  clop.Bind(&h)  fmt.Printf("%#vn", h) } // ./one -f test // main.Hello{File:"test"} // ./one --file test // main.Hello{File:"test"} 

大佬有話說 (2)

  • 資深大佬 : paoqi2048

    这波直接起飞

  • 主 資深大佬 : guonaihong

    @paoqi2048 哈哈。。。

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具