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

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

7 8
	"github.com/jenkins-zh/jenkins-cli/app/i18n"

9 10 11
	"github.com/spf13/cobra"
)

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

var configAddOptions ConfigAddOptions

func init() {
	configCmd.AddCommand(configAddCmd)
21 22 23 24 25 26 27 28 29 30 31 32 33 34
	configAddCmd.Flags().StringVarP(&configAddOptions.Name, "name", "n", "",
		i18n.T("Name of the Jenkins"))
	configAddCmd.Flags().StringVarP(&configAddOptions.URL, "url", "", "",
		i18n.T("URL of the Jenkins"))
	configAddCmd.Flags().StringVarP(&configAddOptions.UserName, "username", "u", "",
		i18n.T("UserName of the Jenkins"))
	configAddCmd.Flags().StringVarP(&configAddOptions.Token, "token", "t", "",
		i18n.T("Token of the Jenkins"))
	configAddCmd.Flags().StringVarP(&configAddOptions.Proxy, "proxy", "p", "",
		i18n.T("Proxy of the Jenkins"))
	configAddCmd.Flags().StringVarP(&configAddOptions.ProxyAuth, "proxyAuth", "a", "",
		i18n.T("ProxyAuth of the Jenkins"))
	configAddCmd.Flags().StringVarP(&configAddOptions.Description, "description", "d", "",
		i18n.T("Description of the Jenkins"))
35 36 37 38
}

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