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

import (
LinuxSuRen's avatar
LinuxSuRen 已提交
4
	"fmt"
5 6 7 8 9 10 11 12 13 14 15 16 17
	"log"

	"github.com/spf13/cobra"
)

type ConfigAddOptions struct {
	JenkinsServer
}

var configAddOptions ConfigAddOptions

func init() {
	configCmd.AddCommand(configAddCmd)
LinuxSuRen's avatar
LinuxSuRen 已提交
18 19 20 21 22 23
	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")
24 25 26 27
}

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