在 golang 里面让你的命令行起飞

2019-05-23 09:18:28 +08:00
 guonaihong

标准库的命令行解析库,支持两种 这也不支持和那也不支持(开玩笑。。。)

0x000000

为了解决本人在重写 linux 命令,遇到 flag 库表达能力不够的痛点,在标准库上加了很多功能。 项目地址,感兴趣可以移步

( https://github.com/guonaihong/flag)

为啥不把修改贡献给 golang 项目组

番外

重写 linux 命令项目在( https://github.com/guonaihong/coreutils

5233 次点击
所在节点    程序员
29 条回复
chennqqi
2019-05-23 10:00:17 +08:00
已 star
qcts33
2019-05-23 10:39:49 +08:00
之前看有人在用 rust 重写 coreutils,然后我就在想会不会有人用 go 来试试😊
虽然我对 go 不熟,但我印象中 go 编译出来的 binary 由于自带一个 runtime,所以体积有点大。我看楼主这个项目是类似 busybox 的方式把不同的命令打包到一个 binary 中吗?
Muninn
2019-05-23 11:23:45 +08:00
呃,难道大家不是都在用 cobra,都想不起来标准库有 flag 了……

轮子想跟 spf13 竞争有点难
xml123
2019-05-23 11:34:37 +08:00
能支持 windows 吗
guonaihong
2019-05-23 12:15:02 +08:00
@qcts33 谢谢
huiyifyj
2019-05-23 12:16:09 +08:00
guonaihong
2019-05-23 12:22:57 +08:00
@Muninn cobra 的作者估计没有大量写过命令行程序,设计 API 好长,跟拉面一样。论 API 易用性还是要像 gin 这个 web 框架取经。
mritd
2019-05-23 12:31:08 +08:00
还是习惯了 cobra
guonaihong
2019-05-23 12:31:51 +08:00
@huiyifyj 谢谢。从 API 介绍上 cli 已经借鉴 gin 的 API 设计哲学,但是缺点是太追求 API 的美感,写的代码太多。如果要大量写命令行程序,这种美感很反胃。flag 追求实战,短,快,实用是它的哲学。
huiyifyj
2019-05-23 12:35:13 +08:00
还是用 rust 的 clap 库写 cli 更爽。
guonaihong
2019-05-23 12:35:40 +08:00
@qcts33 是的类似 busybox。可以打包到一个可执行文件里面。有点类似全局命名空间的想法。
guonaihong
2019-05-23 12:38:06 +08:00
@huiyifyj 是吗?我先收藏下。等玩 rust 的时候用 clap 写代码。谢谢了。
guonaihong
2019-05-23 12:38:48 +08:00
@chennqqi 谢谢了
wowiwj
2019-05-23 12:40:54 +08:00
@guonaihong 感觉 gin 一种厚重的 tp 风,一般般吧,用起来很难受,倾向于 revel 和 echo
guonaihong
2019-05-23 12:46:01 +08:00
@mritd 情人眼里出西施。。。哈哈,要不玩下 flag 库,不在一颗树上吊死。
impl
2019-05-23 12:52:03 +08:00
rust 的 structopt 了解下?
ifaii
2019-05-23 12:53:17 +08:00
start
Reficul
2019-05-23 12:54:24 +08:00
spf13 的 pflag 不能满足需求咩😶
lolizeppelin
2019-05-23 13:07:59 +08:00
楼主有看过 openstack 的 oslo.cfg 么

那玩意真是好, 命令行和配置文件是一套的,建议你看看

我之前想照着用 go 写个,但是 go 没泛型写了一会儿觉得恶心就一直没碰 go 了 2333
HarrisonZ
2019-05-23 13:13:31 +08:00
spf13 的 cli 轮子已经成事实标准了吧

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/566803

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX