diff --git a/app/cmd/config.go b/app/cmd/config.go index 66219a1cbcc1dbb9cdb4d1e17e12fa920e1cad85..c14cd532c76513bc97a3e4216a7248503b1a8af6 100644 --- a/app/cmd/config.go +++ b/app/cmd/config.go @@ -111,12 +111,18 @@ func getConfig() Config { return config } -func getCurrentJenkins() (jenkinsServer JenkinsServer) { +func getCurrentJenkins() (jenkinsServer *JenkinsServer) { config := getConfig() current := config.Current + jenkinsServer = findJenkinsByName(current) + + return +} + +func findJenkinsByName(name string) (jenkinsServer *JenkinsServer) { for _, cfg := range config.JenkinsServers { - if cfg.Name == current { - jenkinsServer = cfg + if cfg.Name == name { + jenkinsServer = &cfg break } } diff --git a/app/cmd/crumbIssuer.go b/app/cmd/crumbIssuer.go index fb053ad5dcfbcbe8134b9fab7430782ef0d54f1c..690fbb26c6f6b2242619cf022ceccce690b0e267 100644 --- a/app/cmd/crumbIssuer.go +++ b/app/cmd/crumbIssuer.go @@ -35,7 +35,7 @@ type CrumbIssuer struct { CrumbRequestField string `json:"crumbRequestField"` } -func getCrumb() (CrumbIssuer, JenkinsServer) { +func getCrumb() (CrumbIssuer, *JenkinsServer) { config := getCurrentJenkins() jenkinsRoot := config.URL diff --git a/app/cmd/open.go b/app/cmd/open.go index 6e1f4dcc40b557bbe7cfa8b5c2e271f89e4b6618..6898d59f4227c7ad3a4554cfafb801fb4b37440c 100644 --- a/app/cmd/open.go +++ b/app/cmd/open.go @@ -1,6 +1,7 @@ package cmd import ( + "fmt" "log" "os/exec" "runtime" @@ -8,20 +9,40 @@ import ( "github.com/spf13/cobra" ) +type OpenOption struct { + Name string + Config bool +} + +var openOption OpenOption + func init() { rootCmd.AddCommand(openCmd) + openCmd.PersistentFlags().StringVarP(&openOption.Name, "name", "n", "", "Open a specific Jenkins by name") + openCmd.PersistentFlags().BoolVarP(&openOption.Config, "config", "c", false, "Open the configuration page of Jenkins") } var openCmd = &cobra.Command{ Use: "open", - Short: "Open your Jenkins in the browse", - Long: `Open your Jenkins in the browse`, + Short: "Open your Jenkins with a browse", + Long: `Open your Jenkins with a browse`, Run: func(cmd *cobra.Command, args []string) { - jenkins := getCurrentJenkins() - if jenkins.URL != "" { - open(jenkins.URL) + var jenkins *JenkinsServer + + if openOption.Name == "" { + jenkins = getCurrentJenkins() + } else { + jenkins = findJenkinsByName(openOption.Name) + } + + if jenkins != nil && jenkins.URL != "" { + url := jenkins.URL + if openOption.Config { + url = fmt.Sprintf("%s/configure", url) + } + open(url) } else { - log.Fatalf("No URL found with Jenkins %s", jenkins.Name) + log.Fatalf("No URL found with Jenkins %s", openOption.Name) } }, }