Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
G
go-ipfs
概览
概览
详情
活动
周期分析
版本库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
统计图
问题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程表
图表
维基
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
jihao
go-ipfs
Commits
169f7899
提交
169f7899
authored
3月 06, 2017
作者:
Jeromy
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
fix progress bar on ipfs get
License: MIT Signed-off-by:
Jeromy
<
jeromyj@gmail.com
>
上级
60b94a2c
隐藏空白字符变更
内嵌
并排
正在显示
2 个修改的文件
包含
34 行增加
和
7 行删除
+34
-7
get.go
core/commands/get.go
+11
-5
extractor.go
thirdparty/tar/extractor.go
+23
-2
没有找到文件。
core/commands/get.go
浏览文件 @
169f7899
...
...
@@ -143,6 +143,12 @@ func (r *clearlineReader) Read(p []byte) (n int, err error) {
}
func
progressBarForReader
(
out
io
.
Writer
,
r
io
.
Reader
,
l
int64
)
(
*
pb
.
ProgressBar
,
io
.
Reader
)
{
bar
:=
makeProgressBar
(
out
,
l
)
barR
:=
bar
.
NewProxyReader
(
r
)
return
bar
,
&
clearlineReader
{
barR
,
out
}
}
func
makeProgressBar
(
out
io
.
Writer
,
l
int64
)
*
pb
.
ProgressBar
{
// setup bar reader
// TODO: get total length of files
bar
:=
pb
.
New64
(
l
)
.
SetUnits
(
pb
.
U_BYTES
)
...
...
@@ -155,8 +161,7 @@ func progressBarForReader(out io.Writer, r io.Reader, l int64) (*pb.ProgressBar,
bar
.
Callback
=
nil
log
.
Infof
(
"terminal width: %v
\n
"
,
terminalWidth
)
}
barR
:=
bar
.
NewProxyReader
(
r
)
return
bar
,
&
clearlineReader
{
barR
,
out
}
return
bar
}
type
getWriter
struct
{
...
...
@@ -208,12 +213,13 @@ func (gw *getWriter) writeArchive(r io.Reader, fpath string) error {
func
(
gw
*
getWriter
)
writeExtracted
(
r
io
.
Reader
,
fpath
string
)
error
{
fmt
.
Fprintf
(
gw
.
Out
,
"Saving file(s) to %s
\n
"
,
fpath
)
bar
,
barR
:=
progressBarForReader
(
gw
.
Err
,
r
,
gw
.
Size
)
bar
:=
makeProgressBar
(
gw
.
Er
r
,
gw
.
Size
)
bar
.
Start
()
defer
bar
.
Finish
()
defer
bar
.
Set64
(
gw
.
Size
)
extractor
:=
&
tar
.
Extractor
{
fpath
}
return
extractor
.
Extract
(
barR
)
extractor
:=
&
tar
.
Extractor
{
fpath
,
bar
.
Add64
}
return
extractor
.
Extract
(
r
)
}
func
getCompressOptions
(
req
cmds
.
Request
)
(
int
,
error
)
{
...
...
thirdparty/tar/extractor.go
浏览文件 @
169f7899
...
...
@@ -11,7 +11,8 @@ import (
)
type
Extractor
struct
{
Path
string
Path
string
Progress
func
(
int64
)
int64
}
func
(
te
*
Extractor
)
Extract
(
reader
io
.
Reader
)
error
{
...
...
@@ -111,10 +112,30 @@ func (te *Extractor) extractFile(h *tar.Header, r *tar.Reader, depth int, rootEx
}
defer
file
.
Close
()
_
,
err
=
io
.
Copy
(
file
,
r
)
err
=
copyWithProgress
(
file
,
r
,
te
.
Progress
)
if
err
!=
nil
{
return
err
}
return
nil
}
func
copyWithProgress
(
to
io
.
Writer
,
from
io
.
Reader
,
cb
func
(
int64
)
int64
)
error
{
buf
:=
make
([]
byte
,
4096
)
for
{
n
,
err
:=
from
.
Read
(
buf
)
if
err
!=
nil
{
if
err
==
io
.
EOF
{
return
nil
}
return
err
}
cb
(
int64
(
n
))
_
,
err
=
to
.
Write
(
buf
[
:
n
])
if
err
!=
nil
{
return
err
}
}
}
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论