关于 hosts-tool 的一些事
2019年6月17日 · 596 字 · 2 分钟 · Golang Hosts
前置
由于平时有些修改 hosts 文件的需求(屏蔽广告啦),所以之前一直在用 SwitchHosts! 来自动下载远程 hosts 文件。
但 SwitchHosts! 还是有几点不尽如人意的地方:
- 由 Electron 与 JavaScript 开发
- 每次开启均会使用一个一个名为 SnoreToast 的软件
- 不能做到随用随开,用完就关,需要手动在托盘处关闭后台
上面这些其实都在能忍受的范围内,毕竟 又不是不能用 ,而且也没有其他合适的轮子,将就着也还能用。 但是!近期(也都两三个月了)直接不能用了。直接不能从远端下载更新 hosts 文件了,加上我瞅着作者也不活跃开发了,迫不得已,只好自己造轮子。
最开始时是用的 dotnet core C# 来写的,名为 hosts-tool,代码已基本可用,奈何我对 OO 不甚了解,后面的功能无法继续增加,也就未开源。加上种种原因,一直勉强用着。
后来,我学了 golang,由于其编译出来的可执行程序是单文件,所以使用 go 来重写 hosts-tool 势在必行。
重写
刚开始重写实际上是简单的把 C# 的函数写成 go 语言版本的。后来开始使用各种库、考虑跨平台。
下面是一些写代码过程中得到的经验与吐槽。
- 为什么 args 里第一个是
c.Args().First()
第二个却是c.Args().Get(1))
。都用c.Args().Get())
之后从零数也不至于让人这么迷惑。 - 将 aurora 以
. "github.com/logrusorgru/aurora"
方式引入经常会打印出来一些奇怪的字符。 - 错误处理太烦人了。
- 写入配置文件记得用
os.O_TRUNC
截断。
ROADMAP
下面是一些想起来了但暂时没动力写的功能
- local hosts 功能,暂定是搞个
local
文件和 config 文件放一块 - home 功能,
hosts-tool-go home NAME
来直接浏览器打开这个 hosts 源 - 无任何命令行参数附加打开时搞出一个交互式的命令行
慢慢摸咯,想起来时再写 23333