Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
Jenkins 中文社区
jenkins-cli
提交
c307d30d
J
jenkins-cli
项目概览
Jenkins 中文社区
/
jenkins-cli
通知
49
Star
8
Fork
1
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
J
jenkins-cli
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
c307d30d
编写于
6月 23, 2019
作者:
LinuxSuRen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Add indicator in show the progress
上级
6b13de96
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
47 addition
and
4 deletion
+47
-4
app/cmd/plugin.go
app/cmd/plugin.go
+47
-4
未找到文件。
app/cmd/plugin.go
浏览文件 @
c307d30d
...
...
@@ -2,6 +2,7 @@ package cmd
import
(
"bytes"
"crypto/tls"
"fmt"
"io"
"io/ioutil"
...
...
@@ -12,6 +13,7 @@ import (
"path/filepath"
"strings"
"github.com/gosuri/uiprogress"
"github.com/spf13/cobra"
"github.com/spf13/viper"
)
...
...
@@ -43,7 +45,6 @@ var pluginCmd = &cobra.Command{
dirName
:=
filepath
.
Base
(
path
)
dirName
=
strings
.
Replace
(
dirName
,
"-plugin"
,
""
,
-
1
)
path
+=
fmt
.
Sprintf
(
"/target/%s.hpi"
,
dirName
)
fmt
.
Println
(
"target path"
,
path
)
extraParams
:=
map
[
string
]
string
{}
request
,
err
:=
newfileUploadRequest
(
api
,
extraParams
,
"@name"
,
path
)
if
err
!=
nil
{
...
...
@@ -52,9 +53,11 @@ var pluginCmd = &cobra.Command{
request
.
SetBasicAuth
(
config
.
UserName
,
config
.
Token
)
request
.
Header
.
Add
(
"Accept"
,
"*/*"
)
request
.
Header
.
Add
(
crumb
.
CrumbRequestField
,
crumb
.
Crumb
)
fmt
.
Println
(
request
.
Header
)
if
err
==
nil
{
client
:=
&
http
.
Client
{}
tr
:=
&
http
.
Transport
{
TLSClientConfig
:
&
tls
.
Config
{
InsecureSkipVerify
:
true
},
}
client
:=
&
http
.
Client
{
Transport
:
tr
}
var
response
*
http
.
Response
response
,
err
=
client
.
Do
(
request
)
if
err
!=
nil
{
...
...
@@ -79,14 +82,26 @@ func newfileUploadRequest(uri string, params map[string]string, paramName, path
if
err
!=
nil
{
return
nil
,
err
}
var
total
float64
if
stat
,
err
:=
file
.
Stat
();
err
!=
nil
{
panic
(
err
)
}
else
{
total
=
float64
(
stat
.
Size
())
}
defer
file
.
Close
()
body
:=
&
bytes
.
Buffer
{}
// body := &bytes.Buffer{}
body
:=
&
ProgressIndicator
{
Total
:
total
,
}
body
.
Init
()
writer
:=
multipart
.
NewWriter
(
body
)
part
,
err
:=
writer
.
CreateFormFile
(
paramName
,
filepath
.
Base
(
path
))
if
err
!=
nil
{
return
nil
,
err
}
_
,
err
=
io
.
Copy
(
part
,
file
)
for
key
,
val
:=
range
params
{
...
...
@@ -101,3 +116,31 @@ func newfileUploadRequest(uri string, params map[string]string, paramName, path
req
.
Header
.
Set
(
"Content-Type"
,
writer
.
FormDataContentType
())
return
req
,
err
}
type
ProgressIndicator
struct
{
bytes
.
Buffer
Total
float64
count
float64
bar
*
uiprogress
.
Bar
}
func
(
i
*
ProgressIndicator
)
Init
()
{
uiprogress
.
Start
()
// start rendering
i
.
bar
=
uiprogress
.
AddBar
(
100
)
// Add a new bar
// optionally, append and prepend completion and elapsed time
i
.
bar
.
AppendCompleted
()
// i.bar.PrependElapsed()
}
func
(
i
*
ProgressIndicator
)
Write
(
p
[]
byte
)
(
n
int
,
err
error
)
{
n
,
err
=
i
.
Buffer
.
Write
(
p
)
return
}
func
(
i
*
ProgressIndicator
)
Read
(
p
[]
byte
)
(
n
int
,
err
error
)
{
n
,
err
=
i
.
Buffer
.
Read
(
p
)
i
.
count
+=
float64
(
n
)
i
.
bar
.
Set
((
int
)(
i
.
count
*
100
/
i
.
Total
))
return
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录