diff --git a/cmd/flipt/export.go b/cmd/flipt/export.go index 723dff2a4b..4105fd6809 100644 --- a/cmd/flipt/export.go +++ b/cmd/flipt/export.go @@ -85,7 +85,11 @@ func (c *exportCommand) run(cmd *cobra.Command, _ []string) error { // Use client when remote address is configured. if c.address != "" { - return c.export(cmd.Context(), out, fliptClient(logger, c.address, c.token)) + client, err := fliptClient(c.address, c.token) + if err != nil { + return err + } + return c.export(cmd.Context(), out, client) } // Otherwise, go direct to the DB using Flipt configuration file. diff --git a/cmd/flipt/import.go b/cmd/flipt/import.go index 0a04680f35..4b07e9625e 100644 --- a/cmd/flipt/import.go +++ b/cmd/flipt/import.go @@ -120,10 +120,11 @@ func (c *importCommand) run(cmd *cobra.Command, args []string) error { // Use client when remote address is configured. if c.address != "" { - return ext.NewImporter( - fliptClient(logger, c.address, c.token), - opts..., - ).Import(cmd.Context(), in) + client, err := fliptClient(c.address, c.token) + if err != nil { + return err + } + return ext.NewImporter(client, opts...).Import(cmd.Context(), in) } logger, cfg := buildConfig() diff --git a/cmd/flipt/server.go b/cmd/flipt/server.go index c20f0ae93b..d4d1ef976d 100644 --- a/cmd/flipt/server.go +++ b/cmd/flipt/server.go @@ -43,26 +43,26 @@ func fliptServer(logger *zap.Logger, cfg *config.Config) (*server.Server, func() return server.New(logger, store), func() { _ = db.Close() }, nil } -func fliptClient(logger *zap.Logger, address, token string) *sdk.Flipt { +func fliptClient(address, token string) (*sdk.Flipt, error) { addr, err := url.Parse(address) if err != nil { - logger.Fatal("export address is invalid", zap.Error(err)) + return nil, fmt.Errorf("export address is invalid %w", err) } var transport sdk.Transport switch addr.Scheme { - case "http": + case "http", "https": transport = sdkhttp.NewTransport(address) case "grpc": conn, err := grpc.Dial(addr.Host, grpc.WithTransportCredentials(insecure.NewCredentials())) if err != nil { - logger.Fatal("failed to dial Flipt", zap.Error(err)) + return nil, fmt.Errorf("failed to dial Flipt %w", err) } transport = sdkgrpc.NewTransport(conn) default: - logger.Fatal("unexpected protocol", zap.String("address", address)) + return nil, fmt.Errorf("unexpected protocol %s", addr.Scheme) } var opts []sdk.Option @@ -72,5 +72,5 @@ func fliptClient(logger *zap.Logger, address, token string) *sdk.Flipt { )) } - return sdk.New(transport, opts...).Flipt() + return sdk.New(transport, opts...).Flipt(), nil }