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