Skip to content

Commit 9aaa4b3

Browse files
fix(profile): support custom search hosts in profile list (#200)
* fix(profile): support custom search hosts in profile list * feat(hosts): add DefaultSearchHosts var * fix: rely on devbox * chore: add .env.example
1 parent 786df7d commit 9aaa4b3

5 files changed

Lines changed: 33 additions & 1 deletion

File tree

.env.example

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
# Local
2+
ALGOLIA_DASHBOARD_URL=
3+
ALGOLIA_API_URL=
4+
ALGOLIA_SEARCH_HOSTS=
5+
ALGOLIA_OAUTH_CLIENT_ID=
6+
ALGOLIA_OAUTH_SCOPE=

Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@ build:
6666
-X=github.com/algolia/cli/pkg/version.Version=$(VERSION) \
6767
-X=github.com/algolia/cli/api/dashboard.DefaultDashboardURL=$(ALGOLIA_DASHBOARD_URL) \
6868
-X=github.com/algolia/cli/api/dashboard.DefaultAPIURL=$(ALGOLIA_API_URL) \
69+
-X=github.com/algolia/cli/pkg/config.DefaultSearchHosts=$(ALGOLIA_SEARCH_HOSTS) \
6970
-X=github.com/algolia/cli/pkg/auth.DefaultOAuthClientID=$(ALGOLIA_OAUTH_CLIENT_ID) \
7071
-X 'github.com/algolia/cli/api/dashboard.DefaultOAuthScope=$(ALGOLIA_OAUTH_SCOPE)'" \
7172
-o algolia cmd/algolia/main.go

Taskfile.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ tasks:
1818
-X github.com/algolia/cli/pkg/version.Version={{ .VERSION }}
1919
-X github.com/algolia/cli/api/dashboard.DefaultDashboardURL=$ALGOLIA_DASHBOARD_URL
2020
-X github.com/algolia/cli/api/dashboard.DefaultAPIURL=$ALGOLIA_API_URL
21+
-X github.com/algolia/cli/pkg/config.DefaultSearchHosts=$ALGOLIA_SEARCH_HOSTS
2122
-X github.com/algolia/cli/pkg/auth.DefaultOAuthClientID=$ALGOLIA_OAUTH_CLIENT_ID
2223
-X 'github.com/algolia/cli/api/dashboard.DefaultOAuthScope=$ALGOLIA_OAUTH_SCOPE'"
2324
-o algolia cmd/algolia/main.go

pkg/cmd/profile/list/list.go

Lines changed: 17 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@ import (
77
"github.com/spf13/cobra"
88

99
"github.com/algolia/algoliasearch-client-go/v4/algolia/search"
10+
"github.com/algolia/algoliasearch-client-go/v4/algolia/transport"
11+
"github.com/algolia/cli/pkg/cmd/factory"
1012
"github.com/algolia/cli/pkg/cmdutil"
1113
"github.com/algolia/cli/pkg/config"
1214
"github.com/algolia/cli/pkg/iostreams"
@@ -80,7 +82,7 @@ func runListCmd(opts *ListOptions) error {
8082
if apiKey == "" || profile.ApplicationID == "" {
8183
table.AddField("N/A", nil, nil)
8284
} else {
83-
client, err := search.NewClient(profile.ApplicationID, apiKey)
85+
client, err := newSearchClient(profile, apiKey)
8486
if err != nil {
8587
table.AddField(err.Error(), nil, nil)
8688
} else {
@@ -103,3 +105,17 @@ func runListCmd(opts *ListOptions) error {
103105
opts.IO.StopProgressIndicator()
104106
return table.Render()
105107
}
108+
109+
func newSearchClient(profile *config.Profile, apiKey string) (*search.APIClient, error) {
110+
hosts := factory.GetStatefulHosts(profile.GetSearchHosts())
111+
if len(hosts) > 0 {
112+
return search.NewClientWithConfig(search.SearchConfiguration{
113+
Configuration: transport.Configuration{
114+
AppID: profile.ApplicationID,
115+
ApiKey: apiKey,
116+
Hosts: hosts,
117+
},
118+
})
119+
}
120+
return search.NewClient(profile.ApplicationID, apiKey)
121+
}

pkg/config/profile.go

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,10 @@ import (
99
"github.com/spf13/viper"
1010
)
1111

12+
// DefaultSearchHosts can be set at build time via ldflags, e.g.
13+
// -X github.com/algolia/cli/pkg/config.DefaultSearchHosts=host1,host2
14+
var DefaultSearchHosts string
15+
1216
type Profile struct {
1317
Name string
1418

@@ -124,6 +128,10 @@ func (p *Profile) GetSearchHosts() []string {
124128
}
125129
}
126130

131+
if DefaultSearchHosts != "" {
132+
return strings.Split(DefaultSearchHosts, ",")
133+
}
134+
127135
return nil
128136
}
129137

0 commit comments

Comments
 (0)