github.com/saucelabs/saucectl@v0.175.1/internal/cmd/storage/delete.go (about)

     1  package storage
     2  
     3  import (
     4  	"errors"
     5  	"fmt"
     6  
     7  	cmds "github.com/saucelabs/saucectl/internal/cmd"
     8  	"github.com/saucelabs/saucectl/internal/segment"
     9  	"github.com/saucelabs/saucectl/internal/usage"
    10  	"github.com/spf13/cobra"
    11  	"golang.org/x/text/cases"
    12  	"golang.org/x/text/language"
    13  )
    14  
    15  func DeleteCommand() *cobra.Command {
    16  	cmd := &cobra.Command{
    17  		Use:          "delete <fileID>",
    18  		Short:        "Delete a file from Sauce Storage.",
    19  		SilenceUsage: true,
    20  		Args: func(cmd *cobra.Command, args []string) error {
    21  			if len(args) == 0 || args[0] == "" {
    22  				return errors.New("no ID specified")
    23  			}
    24  
    25  			return nil
    26  		},
    27  		PreRun: func(cmd *cobra.Command, args []string) {
    28  			tracker := segment.DefaultTracker
    29  
    30  			go func() {
    31  				tracker.Collect(
    32  					cases.Title(language.English).String(cmds.FullName(cmd)),
    33  					usage.Properties{}.SetFlags(cmd.Flags()),
    34  				)
    35  				_ = tracker.Close()
    36  			}()
    37  		},
    38  		RunE: func(cmd *cobra.Command, args []string) error {
    39  			if err := appsClient.Delete(args[0]); err != nil {
    40  				return fmt.Errorf("failed to delete file: %v", err)
    41  			}
    42  
    43  			fmt.Println("File deleted successfully!")
    44  
    45  			return nil
    46  		},
    47  	}
    48  
    49  	return cmd
    50  }