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  }