config_add.go 1.6 KB
Newer Older
1 2 3
package cmd

import (
LinuxSuRen's avatar
LinuxSuRen 已提交
4
	"fmt"
5 6 7 8 9
	"log"

	"github.com/spf13/cobra"
)

LinuxSuRen's avatar
LinuxSuRen 已提交
10
// ConfigAddOptions is the config ad option
11 12 13 14 15 16 17 18
type ConfigAddOptions struct {
	JenkinsServer
}

var configAddOptions ConfigAddOptions

func init() {
	configCmd.AddCommand(configAddCmd)
LinuxSuRen's avatar
LinuxSuRen 已提交
19 20 21 22 23 24
	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")
25
	configAddCmd.Flags().StringVarP(&configAddOptions.Description, "description", "d", "", "Description of the Jenkins")
26 27 28 29
}

var configAddCmd = &cobra.Command{
	Use:   "add",
LinuxSuRen's avatar
LinuxSuRen 已提交
30 31
	Short: "Add a Jenkins config item",
	Long:  `Add a Jenkins config item`,
yJunS's avatar
yJunS 已提交
32
	Run: func(_ *cobra.Command, _ []string) {
33 34 35 36
		if err := addJenkins(configAddOptions.JenkinsServer); err != nil {
			log.Fatal(err)
		}
	},
LinuxSuRen's avatar
LinuxSuRen 已提交
37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
	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
55
}