github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/prompts/storage/edit.go (about) 1 package storagePrompts 2 3 import ( 4 "fmt" 5 6 "github.com/taubyte/go-project-schema/common" 7 structureSpec "github.com/taubyte/go-specs/structure" 8 storageLib "github.com/taubyte/tau-cli/lib/storage" 9 "github.com/taubyte/tau-cli/prompts" 10 "github.com/urfave/cli/v2" 11 ) 12 13 func Edit(ctx *cli.Context, prev *structureSpec.Storage) error { 14 prev.Description = prompts.GetOrAskForADescription(ctx, prev.Description) 15 prev.Tags = prompts.GetOrAskForTags(ctx, prev.Tags) 16 17 prev.Regex = prompts.GetMatchRegex(ctx, prev.Regex) 18 prev.Match = GetOrRequireAMatch(ctx, prev.Match) 19 20 prev.Public = GetPublic(ctx, prev.Public) 21 22 size, err := common.StringToUnits(prompts.GetSizeAndType(ctx, common.UnitsToString(prev.Size), false)) 23 if err != nil { 24 // TODO verbose 25 return err 26 } 27 prev.Size = uint64(size) 28 29 // Streaming or Object 30 prev.Type = SelectABucket(ctx, prev.Type) 31 switch prev.Type { 32 case storageLib.BucketStreaming: 33 return editStreaming(ctx, prev) 34 case storageLib.BucketObject: 35 return editObject(ctx, prev) 36 default: 37 // Should not get here 38 return fmt.Errorf("invalid bucket: %s", prev.Type) 39 } 40 } 41 42 func editStreaming(ctx *cli.Context, prev *structureSpec.Storage) error { 43 var err error 44 prev.Ttl, err = prompts.GetOrRequireATimeout(ctx, prev.Ttl) 45 if err != nil { 46 // TODO verbose error i18n 47 return err 48 } 49 50 return nil 51 } 52 53 func editObject(ctx *cli.Context, prev *structureSpec.Storage) error { 54 prev.Versioning = GetVersioning(ctx, prev.Versioning) 55 return nil 56 }