Skip to content

Commit

Permalink
feat(service-registry): Added new setting command
Browse files Browse the repository at this point in the history
Service registry setting command with subcommands: get, set, list
  • Loading branch information
SafarMirek committed Jul 25, 2022
1 parent 4d14b71 commit 43a6019
Show file tree
Hide file tree
Showing 11 changed files with 682 additions and 0 deletions.
1 change: 1 addition & 0 deletions docs/commands/rhoas_service-registry.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

34 changes: 34 additions & 0 deletions docs/commands/rhoas_service-registry_setting.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

42 changes: 42 additions & 0 deletions docs/commands/rhoas_service-registry_setting_get.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

40 changes: 40 additions & 0 deletions docs/commands/rhoas_service-registry_setting_list.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

43 changes: 43 additions & 0 deletions docs/commands/rhoas_service-registry_setting_set.md

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions pkg/cmd/registry/registry.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (
"github.com/redhat-developer/app-services-cli/pkg/cmd/registry/describe"
"github.com/redhat-developer/app-services-cli/pkg/cmd/registry/list"
"github.com/redhat-developer/app-services-cli/pkg/cmd/registry/rule"
"github.com/redhat-developer/app-services-cli/pkg/cmd/registry/setting"
"github.com/redhat-developer/app-services-cli/pkg/cmd/registry/use"
"github.com/redhat-developer/app-services-cli/pkg/shared/factory"
"github.com/spf13/cobra"
Expand All @@ -36,6 +37,7 @@ func NewServiceRegistryCommand(f *factory.Factory) *cobra.Command {
artifact.NewArtifactsCommand(f),
role.NewRoleCommand(f),
rule.NewRuleCommand(f),
setting.NewSettingCommand(f),
)

return cmd
Expand Down
120 changes: 120 additions & 0 deletions pkg/cmd/registry/setting/get/get.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,120 @@
package get

import (
"context"
"github.com/AlecAivazis/survey/v2"
"github.com/redhat-developer/app-services-cli/pkg/cmd/registry/registrycmdutil"
"github.com/redhat-developer/app-services-cli/pkg/cmd/registry/rule/rulecmdutil"
"github.com/redhat-developer/app-services-cli/pkg/core/cmdutil/flagutil"
"github.com/redhat-developer/app-services-cli/pkg/core/ioutil/dump"
"github.com/redhat-developer/app-services-cli/pkg/core/ioutil/iostreams"
"github.com/redhat-developer/app-services-cli/pkg/core/localize"
"github.com/redhat-developer/app-services-cli/pkg/core/logging"
"github.com/redhat-developer/app-services-cli/pkg/core/servicecontext"
"github.com/redhat-developer/app-services-cli/pkg/shared/factory"
"github.com/spf13/cobra"

"github.com/redhat-developer/app-services-cli/pkg/shared/contextutil"
)

type options struct {
IO *iostreams.IOStreams
Connection factory.ConnectionFunc
Logger logging.Logger
localizer localize.Localizer
Context context.Context
ServiceContext servicecontext.IContext

registryID string
settingName string
output string
}

// NewGetCommand creates a new command to get a service registry setting
func NewGetCommand(f *factory.Factory) *cobra.Command {

opts := &options{
IO: f.IOStreams,
Connection: f.Connection,
Logger: f.Logger,
localizer: f.Localizer,
Context: f.Context,
ServiceContext: f.ServiceContext,
}

cmd := &cobra.Command{
Use: "get",
Short: f.Localizer.MustLocalize("setting.get.cmd.description.short"),
Long: f.Localizer.MustLocalize("setting.get.cmd.description.long"),
Example: f.Localizer.MustLocalize("setting.get.cmd.example"),
Args: cobra.NoArgs,
RunE: func(cmd *cobra.Command, _ []string) (err error) {

if opts.settingName == "" {
if !opts.IO.CanPrompt() {
return flagutil.RequiredWhenNonInteractiveError("setting-name")
}
err = runInteractivePrompt(opts)
if err != nil {
return err
}
}

registryInstance, err := contextutil.GetCurrentRegistryInstance(f)
if err != nil {
return err
}

opts.registryID = registryInstance.GetId()

return runGet(opts)
},
}

flags := rulecmdutil.NewFlagSet(cmd, f)

flags.AddRegistryInstance(&opts.registryID)

flags.StringVarP(&opts.settingName, "setting-name", "n", "", f.Localizer.MustLocalize("setting.get.cmd.flag.settingName.description"))

flags.AddOutput(&opts.output)

return cmd
}

func runGet(opts *options) error {
conn, err := opts.Connection()
if err != nil {
return err
}

api := conn.API()

a, _, err := api.ServiceRegistryInstance(opts.registryID)
if err != nil {
return err
}

request := a.AdminApi.GetConfigProperty(opts.Context, opts.settingName)

configProperty, _, err := request.Execute()
if err != nil {
return registrycmdutil.TransformInstanceError(err)
}

return dump.Formatted(opts.IO.Out, opts.output, configProperty)
}

func runInteractivePrompt(opts *options) (err error) {

settingNamePrompt := &survey.Input{
Message: opts.localizer.MustLocalize("setting.get.input.settingName.message"),
}

err = survey.AskOne(settingNamePrompt, &opts.settingName)
if err != nil {
return err
}

return nil
}
Loading

0 comments on commit 43a6019

Please sign in to comment.