Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
jenkinsci
Jenkins Cli
提交
03fec4af
J
Jenkins Cli
项目概览
jenkinsci
/
Jenkins Cli
通知
0
Star
1
Fork
0
代码
文件
提交
分支
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,发现更多精彩内容 >>
提交
03fec4af
编写于
7月 24, 2019
作者:
LinuxSuRen
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Split config options into sub-cmd
上级
bff2cf4d
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
153 addition
and
128 deletion
+153
-128
app/cmd/config.go
app/cmd/config.go
+1
-106
app/cmd/config_add.go
app/cmd/config_add.go
+27
-8
app/cmd/config_generate.go
app/cmd/config_generate.go
+42
-0
app/cmd/config_list.go
app/cmd/config_list.go
+33
-0
app/cmd/config_remove.go
app/cmd/config_remove.go
+28
-0
app/cmd/config_select.go
app/cmd/config_select.go
+22
-14
未找到文件。
app/cmd/config.go
浏览文件 @
03fec4af
package
cmd
import
(
"errors"
"fmt"
"io/ioutil"
"log"
"os"
"runtime"
"github.com/linuxsuren/jenkins-cli/util"
"github.com/spf13/cobra"
"gopkg.in/yaml.v2"
)
type
ConfigOptions
struct
{
Current
string
Show
bool
Generate
bool
List
bool
ConfigFileLocation
string
}
...
...
@@ -26,54 +19,15 @@ var configOptions ConfigOptions
func
init
()
{
rootCmd
.
AddCommand
(
configCmd
)
configCmd
.
Flags
()
.
StringVarP
(
&
configOptions
.
Current
,
"current"
,
"c"
,
""
,
"Set the current Jenkins"
)
configCmd
.
Flags
()
.
BoolVarP
(
&
configOptions
.
Show
,
"show"
,
"s"
,
false
,
"Show the current Jenkins"
)
configCmd
.
Flags
()
.
BoolVarP
(
&
configOptions
.
Generate
,
"generate"
,
"g"
,
false
,
"Generate a sample config file for you"
)
configCmd
.
Flags
()
.
BoolVarP
(
&
configOptions
.
List
,
"list"
,
"l"
,
false
,
"Display all your Jenkins configs"
)
}
var
configCmd
=
&
cobra
.
Command
{
Use
:
"config"
,
Short
:
"Manage the config of jcli"
,
Long
:
`Manage the config of jcli`
,
Args
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
(
err
error
)
{
if
!
configOptions
.
Show
&&
!
configOptions
.
Generate
&&
!
configOptions
.
List
&&
configOptions
.
Current
==
""
{
err
=
errors
.
New
(
"need arguments"
)
}
return
},
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
current
:=
getCurrentJenkins
()
if
configOptions
.
Show
{
fmt
.
Printf
(
"Current Jenkins's name is %s, url is %s
\n
"
,
current
.
Name
,
current
.
URL
)
}
if
configOptions
.
List
{
table
:=
util
.
CreateTable
(
os
.
Stdout
)
table
.
AddRow
(
"number"
,
"name"
,
"url"
)
for
i
,
jenkins
:=
range
getConfig
()
.
JenkinsServers
{
name
:=
jenkins
.
Name
if
name
==
current
.
Name
{
name
=
fmt
.
Sprintf
(
"*%s"
,
name
)
}
table
.
AddRow
(
fmt
.
Sprintf
(
"%d"
,
i
),
name
,
jenkins
.
URL
)
}
table
.
Render
()
}
if
configOptions
.
Generate
{
if
data
,
err
:=
generateSampleConfig
();
err
==
nil
{
fmt
.
Print
(
string
(
data
))
fmt
.
Println
(
"# Goto 'http://localhost:8080/jenkins/me/configure', then you can generate your token."
)
}
else
{
log
.
Fatal
(
err
)
}
}
if
configOptions
.
Current
!=
""
{
setCurrentJenkins
(
configOptions
.
Current
)
}
fmt
.
Printf
(
"Current Jenkins's name is %s, url is %s
\n
"
,
current
.
Name
,
current
.
URL
)
},
Example
:
"jcli config -l"
,
}
...
...
@@ -112,21 +66,6 @@ func setCurrentJenkins(name string) {
}
}
func
generateSampleConfig
()
([]
byte
,
error
)
{
sampleConfig
:=
Config
{
Current
:
"yourServer"
,
JenkinsServers
:
[]
JenkinsServer
{
{
Name
:
"yourServer"
,
URL
:
"http://localhost:8080/jenkins"
,
UserName
:
"admin"
,
Token
:
"111e3a2f0231198855dceaff96f20540a9"
,
},
},
}
return
yaml
.
Marshal
(
&
sampleConfig
)
}
var
config
Config
func
getConfig
()
Config
{
...
...
@@ -160,50 +99,6 @@ func findJenkinsByName(name string) (jenkinsServer *JenkinsServer) {
return
}
func
addJenkins
(
jenkinsServer
JenkinsServer
)
(
err
error
)
{
jenkinsName
:=
jenkinsServer
.
Name
if
jenkinsName
==
""
{
err
=
fmt
.
Errorf
(
"Name cannot be empty"
)
return
}
if
findJenkinsByName
(
jenkinsName
)
!=
nil
{
err
=
fmt
.
Errorf
(
"Jenkins %s is existed"
,
jenkinsName
)
return
}
config
.
JenkinsServers
=
append
(
config
.
JenkinsServers
,
jenkinsServer
)
err
=
saveConfig
()
return
}
func
removeJenkins
(
name
string
)
(
err
error
)
{
current
:=
getCurrentJenkins
()
if
name
==
current
.
Name
{
err
=
fmt
.
Errorf
(
"You cannot remove current Jenkins"
)
}
index
:=
-
1
config
:=
getConfig
()
for
i
,
jenkins
:=
range
config
.
JenkinsServers
{
if
name
==
jenkins
.
Name
{
index
=
i
break
}
}
if
index
==
-
1
{
err
=
fmt
.
Errorf
(
"Cannot found by name %s"
,
name
)
}
else
{
config
.
JenkinsServers
[
index
]
=
config
.
JenkinsServers
[
len
(
config
.
JenkinsServers
)
-
1
]
config
.
JenkinsServers
[
len
(
config
.
JenkinsServers
)
-
1
]
=
JenkinsServer
{}
config
.
JenkinsServers
=
config
.
JenkinsServers
[
:
len
(
config
.
JenkinsServers
)
-
1
]
err
=
saveConfig
()
}
return
}
func
loadDefaultConfig
()
(
err
error
)
{
userHome
:=
userHomeDir
()
configPath
:=
fmt
.
Sprintf
(
"%s/.jenkins-cli.yaml"
,
userHome
)
...
...
app/cmd/config_add.go
浏览文件 @
03fec4af
package
cmd
import
(
"fmt"
"log"
"github.com/spf13/cobra"
...
...
@@ -14,21 +15,39 @@ var configAddOptions ConfigAddOptions
func
init
()
{
configCmd
.
AddCommand
(
configAddCmd
)
configAddCmd
.
Persistent
Flags
()
.
StringVarP
(
&
configAddOptions
.
Name
,
"name"
,
"n"
,
""
,
"Name of the Jenkins"
)
configAddCmd
.
Persistent
Flags
()
.
StringVarP
(
&
configAddOptions
.
URL
,
"url"
,
""
,
""
,
"URL of the Jenkins"
)
configAddCmd
.
Persistent
Flags
()
.
StringVarP
(
&
configAddOptions
.
UserName
,
"username"
,
"u"
,
""
,
"UserName of the Jenkins"
)
configAddCmd
.
Persistent
Flags
()
.
StringVarP
(
&
configAddOptions
.
Token
,
"token"
,
"t"
,
""
,
"Token of the Jenkins"
)
configAddCmd
.
Persistent
Flags
()
.
StringVarP
(
&
configAddOptions
.
Proxy
,
"proxy"
,
"p"
,
""
,
"Proxy of the Jenkins"
)
configAddCmd
.
Persistent
Flags
()
.
StringVarP
(
&
configAddOptions
.
ProxyAuth
,
"proxyAuth"
,
"a"
,
""
,
"ProxyAuth of the Jenkins"
)
configAddCmd
.
Flags
()
.
StringVarP
(
&
configAddOptions
.
Name
,
"name"
,
"n"
,
""
,
"Name of the Jenkins"
)
configAddCmd
.
Flags
()
.
StringVarP
(
&
configAddOptions
.
URL
,
"url"
,
""
,
""
,
"URL of the Jenkins"
)
configAddCmd
.
Flags
()
.
StringVarP
(
&
configAddOptions
.
UserName
,
"username"
,
"u"
,
""
,
"UserName of the Jenkins"
)
configAddCmd
.
Flags
()
.
StringVarP
(
&
configAddOptions
.
Token
,
"token"
,
"t"
,
""
,
"Token of the Jenkins"
)
configAddCmd
.
Flags
()
.
StringVarP
(
&
configAddOptions
.
Proxy
,
"proxy"
,
"p"
,
""
,
"Proxy of the Jenkins"
)
configAddCmd
.
Flags
()
.
StringVarP
(
&
configAddOptions
.
ProxyAuth
,
"proxyAuth"
,
"a"
,
""
,
"ProxyAuth of the Jenkins"
)
}
var
configAddCmd
=
&
cobra
.
Command
{
Use
:
"add"
,
Short
:
"Add a Jenkins config"
,
Long
:
`Add a Jenkins config`
,
Short
:
"Add a Jenkins config
item
"
,
Long
:
`Add a Jenkins config
item
`
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
if
err
:=
addJenkins
(
configAddOptions
.
JenkinsServer
);
err
!=
nil
{
log
.
Fatal
(
err
)
}
},
Example
:
"jcli config add -n demo"
,
}
func
addJenkins
(
jenkinsServer
JenkinsServer
)
(
err
error
)
{
jenkinsName
:=
jenkinsServer
.
Name
if
jenkinsName
==
""
{
err
=
fmt
.
Errorf
(
"Name cannot be empty"
)
return
}
if
findJenkinsByName
(
jenkinsName
)
!=
nil
{
err
=
fmt
.
Errorf
(
"Jenkins %s is existed"
,
jenkinsName
)
return
}
config
.
JenkinsServers
=
append
(
config
.
JenkinsServers
,
jenkinsServer
)
err
=
saveConfig
()
return
}
app/cmd/config_generate.go
0 → 100644
浏览文件 @
03fec4af
package
cmd
import
(
"fmt"
"log"
"github.com/spf13/cobra"
"gopkg.in/yaml.v2"
)
func
init
()
{
configCmd
.
AddCommand
(
configGenerateCmd
)
}
var
configGenerateCmd
=
&
cobra
.
Command
{
Use
:
"generate"
,
Short
:
"Generate a sample config file for you"
,
Long
:
`Generate a sample config file for you`
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
if
data
,
err
:=
generateSampleConfig
();
err
==
nil
{
fmt
.
Print
(
string
(
data
))
fmt
.
Println
(
"# Goto 'http://localhost:8080/jenkins/me/configure', then you can generate your token."
)
}
else
{
log
.
Fatal
(
err
)
}
},
}
func
generateSampleConfig
()
([]
byte
,
error
)
{
sampleConfig
:=
Config
{
Current
:
"yourServer"
,
JenkinsServers
:
[]
JenkinsServer
{
{
Name
:
"yourServer"
,
URL
:
"http://localhost:8080/jenkins"
,
UserName
:
"admin"
,
Token
:
"111e3a2f0231198855dceaff96f20540a9"
,
},
},
}
return
yaml
.
Marshal
(
&
sampleConfig
)
}
app/cmd/config_list.go
0 → 100644
浏览文件 @
03fec4af
package
cmd
import
(
"fmt"
"os"
"github.com/linuxsuren/jenkins-cli/util"
"github.com/spf13/cobra"
)
func
init
()
{
configCmd
.
AddCommand
(
configListCmd
)
}
var
configListCmd
=
&
cobra
.
Command
{
Use
:
"list"
,
Short
:
"List all Jenkins config items"
,
Long
:
`List all Jenkins config items`
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
current
:=
getCurrentJenkins
()
table
:=
util
.
CreateTable
(
os
.
Stdout
)
table
.
AddRow
(
"number"
,
"name"
,
"url"
)
for
i
,
jenkins
:=
range
getConfig
()
.
JenkinsServers
{
name
:=
jenkins
.
Name
if
name
==
current
.
Name
{
name
=
fmt
.
Sprintf
(
"*%s"
,
name
)
}
table
.
AddRow
(
fmt
.
Sprintf
(
"%d"
,
i
),
name
,
jenkins
.
URL
)
}
table
.
Render
()
},
}
app/cmd/config_remove.go
浏览文件 @
03fec4af
package
cmd
import
(
"fmt"
"log"
"github.com/spf13/cobra"
...
...
@@ -25,3 +26,30 @@ var configRemoveCmd = &cobra.Command{
}
},
}
func
removeJenkins
(
name
string
)
(
err
error
)
{
current
:=
getCurrentJenkins
()
if
name
==
current
.
Name
{
err
=
fmt
.
Errorf
(
"You cannot remove current Jenkins"
)
}
index
:=
-
1
config
:=
getConfig
()
for
i
,
jenkins
:=
range
config
.
JenkinsServers
{
if
name
==
jenkins
.
Name
{
index
=
i
break
}
}
if
index
==
-
1
{
err
=
fmt
.
Errorf
(
"Cannot found by name %s"
,
name
)
}
else
{
config
.
JenkinsServers
[
index
]
=
config
.
JenkinsServers
[
len
(
config
.
JenkinsServers
)
-
1
]
config
.
JenkinsServers
[
len
(
config
.
JenkinsServers
)
-
1
]
=
JenkinsServer
{}
config
.
JenkinsServers
=
config
.
JenkinsServers
[
:
len
(
config
.
JenkinsServers
)
-
1
]
err
=
saveConfig
()
}
return
}
app/cmd/config_select.go
浏览文件 @
03fec4af
...
...
@@ -10,24 +10,32 @@ func init() {
}
var
configSelectCmd
=
&
cobra
.
Command
{
Use
:
"select"
,
Use
:
"select
[<name>]
"
,
Short
:
"Select one config as current Jenkins"
,
Long
:
`Select one config as current Jenkins`
,
Run
:
func
(
cmd
*
cobra
.
Command
,
args
[]
string
)
{
target
:=
""
if
currentJenkins
:=
getCurrentJenkins
();
currentJenkins
!=
nil
{
target
=
currentJenkins
.
Name
}
prompt
:=
&
survey
.
Select
{
Message
:
"Choose a Jenkins as the current one:"
,
Options
:
getJenkinsNames
(),
Default
:
target
,
}
survey
.
AskOne
(
prompt
,
&
target
)
if
len
(
args
)
>
0
{
jenkinsName
:=
args
[
0
]
if
target
!=
""
{
setCurrentJenkins
(
target
)
setCurrentJenkins
(
jenkinsName
)
}
else
{
selectByManual
()
}
},
}
func
selectByManual
()
{
target
:=
""
if
currentJenkins
:=
getCurrentJenkins
();
currentJenkins
!=
nil
{
target
=
currentJenkins
.
Name
}
prompt
:=
&
survey
.
Select
{
Message
:
"Choose a Jenkins as the current one:"
,
Options
:
getJenkinsNames
(),
Default
:
target
,
}
if
err
:=
survey
.
AskOne
(
prompt
,
&
target
);
err
==
nil
&&
target
!=
""
{
setCurrentJenkins
(
target
)
}
}
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录