Added the clone command in SSM

This commit is contained in:
Leon Mika 2022-04-05 13:39:14 +10:00
parent ee6011bc3e
commit 306640abdb
9 changed files with 102 additions and 10 deletions

View file

@ -4,6 +4,7 @@ import (
"context"
tea "github.com/charmbracelet/bubbletea"
"github.com/lmika/awstools/internal/common/ui/events"
"github.com/lmika/awstools/internal/ssm-browse/models"
"github.com/lmika/awstools/internal/ssm-browse/services/ssmparameters"
"sync"
)
@ -12,15 +13,15 @@ type SSMController struct {
service *ssmparameters.Service
// state
mutex *sync.Mutex
mutex *sync.Mutex
prefix string
}
func New(service *ssmparameters.Service) *SSMController {
return &SSMController{
service: service,
prefix: "/",
mutex: new(sync.Mutex),
prefix: "/",
mutex: new(sync.Mutex),
}
}
@ -32,7 +33,7 @@ func (c *SSMController) Fetch() tea.Cmd {
}
return NewParameterListMsg{
Prefix: c.prefix,
Prefix: c.prefix,
Parameters: res,
}
}
@ -50,8 +51,29 @@ func (c *SSMController) ChangePrefix(newPrefix string) tea.Cmd {
c.prefix = newPrefix
return NewParameterListMsg{
Prefix: c.prefix,
Prefix: c.prefix,
Parameters: res,
}
}
}
}
func (c *SSMController) Clone(param models.SSMParameter) tea.Cmd {
return events.PromptForInput("New key: ", func(value string) tea.Cmd {
return func() tea.Msg {
ctx := context.Background()
if err := c.service.Clone(ctx, param, value); err != nil {
return events.Error(err)
}
res, err := c.service.List(context.Background(), c.prefix)
if err != nil {
return events.Error(err)
}
return NewParameterListMsg{
Prefix: c.prefix,
Parameters: res,
}
}
})
}