提交 ff4a4ea9 编写于 作者: LinuxSuRen's avatar LinuxSuRen

Allow user to add and remove config item

上级 b4a137a2
......@@ -134,6 +134,50 @@ 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() {
userHome := userHomeDir()
if err := loadConfig(fmt.Sprintf("%s/.jenkins-cli.yaml", userHome)); err != nil {
......
package cmd
import (
"log"
"github.com/spf13/cobra"
)
type ConfigAddOptions struct {
JenkinsServer
}
var configAddOptions ConfigAddOptions
func init() {
configCmd.AddCommand(configAddCmd)
configAddCmd.PersistentFlags().StringVarP(&configAddOptions.Name, "name", "n", "", "Name of the Jenkins")
configAddCmd.PersistentFlags().StringVarP(&configAddOptions.URL, "url", "", "", "URL of the Jenkins")
configAddCmd.PersistentFlags().StringVarP(&configAddOptions.UserName, "username", "u", "", "UserName of the Jenkins")
configAddCmd.PersistentFlags().StringVarP(&configAddOptions.Token, "token", "t", "", "Token of the Jenkins")
configAddCmd.PersistentFlags().StringVarP(&configAddOptions.Proxy, "proxy", "p", "", "Proxy of the Jenkins")
configAddCmd.PersistentFlags().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`,
Run: func(cmd *cobra.Command, args []string) {
if err := addJenkins(configAddOptions.JenkinsServer); err != nil {
log.Fatal(err)
}
},
}
package cmd
import (
"log"
"github.com/spf13/cobra"
)
func init() {
configCmd.AddCommand(configRemoveCmd)
}
var configRemoveCmd = &cobra.Command{
Use: "remove",
Short: "Remove a Jenkins config",
Long: `Remove a Jenkins config`,
Run: func(cmd *cobra.Command, args []string) {
if len(args) == 0 {
log.Fatal("You need to give a name")
}
target := args[0]
if err := removeJenkins(target); err != nil {
log.Fatal(err)
}
},
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册