diff --git a/.gitignore b/.gitignore index 3906332..655cdf6 100644 --- a/.gitignore +++ b/.gitignore @@ -14,3 +14,4 @@ # Dependency directories (remove the comment below to include it) # vendor/ .envrc +test.go diff --git a/main.go b/main.go index db8f0e4..bca1523 100644 --- a/main.go +++ b/main.go @@ -2,6 +2,7 @@ package main import ( "os" + "strings" aw "github.com/deanishe/awgo" "github.com/deanishe/awgo/update" @@ -18,6 +19,13 @@ var ( wf *aw.Workflow ) +// Options contains options for connecting to the confluence API +type Options struct { + BaseURL string `env:"CONFLUENCE_BASEURL"` + Token string `env:"CONFLUENCE_TOKEN"` + Username string `env:"CONFLUENCE_USERNAME"` +} + func init() { wf = aw.New(update.GitHub(repo), aw.HelpURL(repo+"/issues")) } @@ -27,30 +35,14 @@ func main() { } func run() { - errors := []string{} - token, tFound := wf.Config.Env.Lookup("CONFLUENCE_TOKEN") - if !tFound { - errors = append(errors, "CONFLUENCE_TOKEN is not set!") - } - - baseurl, bFound := wf.Config.Env.Lookup("CONFLUENCE_BASEURL") - if !bFound { - errors = append(errors, "CONFLUENCE_BASEURL is not set!") - } - - username, uFound := wf.Config.Env.Lookup("CONFLUENCE_USERNAME") - if !uFound { - errors = append(errors, "CONFLUENCE_USERNAME is not set!") - } - - if len(errors) > 0 { - for _, err := range errors { - wf.WarnEmpty(err, "") - } - wf.SendFeedback() + opts := &Options{} + cfg := aw.NewConfig() + if err := cfg.To(opts); err != nil { + wf.Fatalf("Error loading variables: %v", err) return } - search(token, baseurl, username, os.Args[1]) + query := strings.Join(os.Args[1:], " ") + search(opts, query) wf.SendFeedback() } diff --git a/search.go b/search.go index ef69ada..8203f18 100644 --- a/search.go +++ b/search.go @@ -7,9 +7,9 @@ import ( confluence "github.com/virtomize/confluence-go-api" ) -func search(token string, baseurl string, username string, searchQuery string) { +func search(cfg *Options, searchQuery string) { showUpdateStatus() - api, err := confluence.NewAPI(fmt.Sprintf("%s/wiki/rest/api", baseurl), username, token) + api, err := confluence.NewAPI(fmt.Sprintf("%s/wiki/rest/api", cfg.BaseURL), cfg.Username, cfg.Token) if err != nil { log.Fatal(err) } @@ -27,6 +27,7 @@ func search(token string, baseurl string, username string, searchQuery string) { // loop over results for _, v := range result.Results { - wf.NewItem(v.Content.Title).Valid(true).Arg(fmt.Sprintf("%s/wiki%s", baseurl, v.URL)).Subtitle(v.Content.Space.Key) + url := fmt.Sprintf("%s/wiki%s", cfg.BaseURL, v.URL) + wf.NewItem(v.Content.Title).Valid(true).Arg(url).Subtitle(url) } } diff --git a/workflow/alfred-go-confluence b/workflow/alfred-go-confluence index 8ac2fc6..2ab63e2 100755 Binary files a/workflow/alfred-go-confluence and b/workflow/alfred-go-confluence differ diff --git a/workflow/info.plist b/workflow/info.plist index cdf27f2..6050949 100644 --- a/workflow/info.plist +++ b/workflow/info.plist @@ -134,7 +134,7 @@ CONFLUENCE_BASEURL version - 0.1.0 + 1.0.0 webaddress https://github.com/mjhuber/alfred-go-confluence