internal/ui/aztfexportclient/client.go (147 lines of code) (raw):
package aztfexportclient
import (
"context"
"github.com/Azure/aztfexport/pkg/meta"
tea "github.com/charmbracelet/bubbletea"
)
type NewClientMsg meta.Meta
type ErrMsg error
type InitProviderDoneMsg struct{}
type ListResourceDoneMsg struct {
List meta.ImportList
}
type ShowImportErrorMsg struct {
Item meta.ImportItem
Index int
List meta.ImportList
}
type StartImportMsg struct {
List meta.ImportList
}
type ImportItemsDoneMsg struct {
Items []meta.ImportItem
}
type ImportDoneMsg struct {
List meta.ImportList
}
type PushStateDoneMsg struct {
List meta.ImportList
}
type ExportResourceMappingDoneMsg struct {
List meta.ImportList
}
type ExportSkippedResourcesDoneMsg struct {
List meta.ImportList
}
type GenerateCfgDoneMsg struct{}
type WorkspaceCleanupDoneMsg struct{}
type QuitMsg struct{}
type CleanTFStateMsg struct {
Addr string
}
func NewClient(meta meta.Meta) tea.Cmd {
return func() tea.Msg {
return NewClientMsg(meta)
}
}
func Init(ctx context.Context, c meta.Meta) tea.Cmd {
return func() tea.Msg {
err := c.Init(ctx)
if err != nil {
return ErrMsg(err)
}
return InitProviderDoneMsg{}
}
}
func ListResource(ctx context.Context, c meta.Meta) tea.Cmd {
return func() tea.Msg {
list, err := c.ListResource(ctx)
if err != nil {
return ErrMsg(err)
}
return ListResourceDoneMsg{List: list}
}
}
func ShowImportError(item meta.ImportItem, idx int, l meta.ImportList) tea.Cmd {
return func() tea.Msg {
return ShowImportErrorMsg{Item: item, Index: idx, List: l}
}
}
func StartImport(l meta.ImportList) tea.Cmd {
return func() tea.Msg {
return StartImportMsg{List: l}
}
}
func ImportItems(ctx context.Context, c meta.Meta, items []meta.ImportItem) tea.Cmd {
return func() tea.Msg {
var l []*meta.ImportItem
for i := range items {
if items[i].Skip() || items[i].Imported {
continue
}
l = append(l, &items[i])
}
if err := c.ParallelImport(ctx, l); err != nil {
return ErrMsg(err)
}
return ImportItemsDoneMsg{Items: items}
}
}
func FinishImport(l meta.ImportList) tea.Cmd {
return func() tea.Msg {
return ImportDoneMsg{List: l}
}
}
func GenerateCfg(ctx context.Context, c meta.Meta, l meta.ImportList) tea.Cmd {
return func() tea.Msg {
if err := c.GenerateCfg(ctx, l); err != nil {
return ErrMsg(err)
}
return GenerateCfgDoneMsg{}
}
}
func CleanUpWorkspace(ctx context.Context, c meta.Meta) tea.Cmd {
return func() tea.Msg {
if err := c.CleanUpWorkspace(ctx); err != nil {
return ErrMsg(err)
}
return WorkspaceCleanupDoneMsg{}
}
}
func PushState(ctx context.Context, c meta.Meta, l meta.ImportList) tea.Cmd {
return func() tea.Msg {
if err := c.PushState(ctx); err != nil {
return ErrMsg(err)
}
return PushStateDoneMsg{List: l}
}
}
func ExportResourceMapping(ctx context.Context, c meta.Meta, l meta.ImportList) tea.Cmd {
return func() tea.Msg {
if err := c.ExportResourceMapping(ctx, l); err != nil {
return ErrMsg(err)
}
return ExportResourceMappingDoneMsg{List: l}
}
}
func ExportSkippedResources(ctx context.Context, c meta.Meta, l meta.ImportList) tea.Cmd {
return func() tea.Msg {
if err := c.ExportSkippedResources(ctx, l); err != nil {
return ErrMsg(err)
}
return ExportSkippedResourcesDoneMsg{List: l}
}
}
func CleanTFState(addr string) tea.Cmd {
return func() tea.Msg {
return CleanTFStateMsg{addr}
}
}
func Quit(ctx context.Context, c meta.Meta) tea.Cmd {
return func() tea.Msg {
if err := c.DeInit(ctx); err != nil {
return ErrMsg(err)
}
return QuitMsg{}
}
}