给go get加进度条

给go get加进度条

go get的时候没有回显,实验室网又慢,看着一行命令很长时间不动挺按难受的,就想着能不能加个进度条。谷歌了一下,4年前就已经有大神实现了。
让go get显示进度条(博客可能已经过期了)
作为萌新,按着大神的方法也实现了这个功能,而且大神把原理说的非常清楚明白,感谢!!!
大神思路很简单:

  • 修改cmd.Run()执行的地方, 使其将输出定位到标准输出流上

重新记录一下我的操作过程,详细一些,方便和我一样的萌新们。
我的版本是:go1.9.2
编辑/usr/local/go/src/cmd/go/internal/get/vcs.go。

cmd.Stdout = &buf  
cmd.Stderr = &buf  
//添加cmd.Stdout = os.Stdout  
//添加cmd.Stderr = os.Stderr  

cmd.Stdout = &buf  
cmd.Stderr = &buf  
cmd.Stdout = os.Stdout  
cmd.Stderr = os.Stderr  

然后跑一遍/usr/local/go/src/run.bash
之后运行go get就有回显了

Cloning into '/root/go/src/github.com/go-redis/redis'...  
remote: Counting objects: 4026, done.  
remote: Compressing objects: 100% (18/18), done.  
Receiving objects:  69% (2784/4026), 1.14 MiB | 8.00 KiB/s