package modify import ( "context" "edge-infra.dev/pkg/edge/api/graph/model" "edge-infra.dev/pkg/edge/edgecli" "edge-infra.dev/pkg/edge/edgecli/constructors" "edge-infra.dev/pkg/edge/edgecli/flagutil" "edge-infra.dev/pkg/lib/cli/command" "edge-infra.dev/pkg/lib/cli/rags" ) func NewCmd(cfg *edgecli.Config) *command.Command { var cmd *command.Command flagsets := flagutil.GetConnectionFlags(cfg) cmd = &command.Command{ ShortUsage: "edge terminal disk modify", ShortHelp: "Modify a disk for a particular Terminal", Flags: append( flagsets, &rags.Rag{ Name: flagutil.StoreFlag, Value: &rags.String{}, Usage: "Name of the Store - Must be unique", Required: true, }, &rags.Rag{ Name: flagutil.BannerFlag, Value: &rags.String{}, Usage: "Banner name", Required: true, }, &rags.Rag{ Name: flagutil.DiskID, Value: &rags.String{}, Usage: "ID of a Terminal Disk", Required: true, }, &rags.Rag{ Name: flagutil.DiskDevicePath, Usage: "Path of the Terminal disk", Value: &rags.String{}, Required: false, }, &rags.Rag{ Name: flagutil.DiskInclude, Usage: "Include disk", Value: &rags.Bool{}, Required: false, }, &rags.Rag{ Name: flagutil.DiskExpectEmpty, Usage: "Expect Terminal disk to be empty", Value: &rags.Bool{}, Required: false, }, &rags.Rag{ Name: flagutil.UsePart, Usage: "Create a new partition on the terminal disk to install to", Value: &rags.Bool{}, Required: false, }, ), Exec: func(_ context.Context, _ []string) error { if err := flagutil.ValidateRequiredFlags(cmd.Rags); err != nil { return err } registrar, err := constructors.BuildRegistrar(cmd.Rags) if err != nil { return err } terminalDiskID := flagutil.GetStringFlag(cmd.Rags, flagutil.DiskID) reqCtx, cancelReq := context.WithTimeout(context.Background(), flagutil.BffReqTimeout) defer cancelReq() var expectEmpty *bool if flagutil.GetBoolFlag(cmd.Rags, flagutil.DiskExpectEmpty) { expectEmpty = func(b bool) *bool { return &b }(flagutil.GetBoolFlag(cmd.Rags, flagutil.DiskExpectEmpty)) } var includeDisk *bool if flagutil.GetBoolFlag(cmd.Rags, flagutil.DiskInclude) { includeDisk = func(b bool) *bool { return &b }(flagutil.GetBoolFlag(cmd.Rags, flagutil.DiskInclude)) } var usePart *bool if flagutil.GetBoolFlag(cmd.Rags, flagutil.UsePart) { usePart = func(b bool) *bool { return &b }(flagutil.GetBoolFlag(cmd.Rags, flagutil.UsePart)) } updateDiskInput := model.TerminalDiskUpdateInput{ DevicePath: flagutil.GetOptionalFlagValue[string](cmd.Rags, flagutil.DiskDevicePath), ExpectEmpty: expectEmpty, IncludeDisk: includeDisk, UsePart: usePart, } if _, err = registrar.ModifyTerminalDisk(reqCtx, terminalDiskID, &updateDiskInput); err != nil { return err } return nil }, } return cmd }