get.porter.sh/porter@v1.3.0/pkg/pkgmgmt/client/delete.go (about)

     1  package client
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  	"path/filepath"
     7  
     8  	"get.porter.sh/porter/pkg/pkgmgmt"
     9  	"get.porter.sh/porter/pkg/tracing"
    10  )
    11  
    12  func (fs *FileSystem) Uninstall(ctx context.Context, opts pkgmgmt.UninstallOptions) error {
    13  	ctx, span := tracing.StartSpan(ctx)
    14  	defer span.EndSpan()
    15  
    16  	if opts.Name != "" {
    17  		return fs.uninstallByName(ctx, opts.Name)
    18  	}
    19  
    20  	return span.Error(fmt.Errorf("No %s name was provided to uninstall", fs.PackageType))
    21  }
    22  
    23  func (fs *FileSystem) uninstallByName(ctx context.Context, name string) error {
    24  	log := tracing.LoggerFromContext(ctx)
    25  
    26  	parentDir, err := fs.GetPackagesDir()
    27  	if err != nil {
    28  		return log.Error(err)
    29  	}
    30  	pkgDir := filepath.Join(parentDir, name)
    31  	exists, _ := fs.FileSystem.Exists(pkgDir)
    32  	if exists {
    33  		err = fs.FileSystem.RemoveAll(pkgDir)
    34  		if err != nil {
    35  			return log.Error(fmt.Errorf("could not remove %s directory %q: %w", fs.PackageType, pkgDir, err))
    36  		}
    37  
    38  		return nil
    39  	}
    40  
    41  	log.Debugf("Unable to find requested %s %s\n", fs.PackageType, name)
    42  
    43  	return nil
    44  }