github.com/supabase/cli@v1.168.1/internal/stop/stop.go (about)

     1  package stop
     2  
     3  import (
     4  	"context"
     5  	_ "embed"
     6  	"fmt"
     7  	"io"
     8  
     9  	"github.com/docker/docker/api/types/volume"
    10  	"github.com/spf13/afero"
    11  	"github.com/supabase/cli/internal/utils"
    12  )
    13  
    14  func Run(ctx context.Context, backup bool, projectId string, fsys afero.Fs) error {
    15  	// Sanity checks.
    16  	if len(projectId) > 0 {
    17  		utils.Config.ProjectId = projectId
    18  		utils.UpdateDockerIds()
    19  	} else if err := utils.LoadConfigFS(fsys); err != nil {
    20  		return err
    21  	}
    22  
    23  	// Stop all services
    24  	if err := utils.RunProgram(ctx, func(p utils.Program, ctx context.Context) error {
    25  		w := utils.StatusWriter{Program: p}
    26  		return stop(ctx, backup, w)
    27  	}); err != nil {
    28  		return err
    29  	}
    30  
    31  	fmt.Println("Stopped " + utils.Aqua("supabase") + " local development setup.")
    32  	if resp, err := utils.Docker.VolumeList(ctx, volume.ListOptions{
    33  		Filters: utils.CliProjectFilter(),
    34  	}); err == nil && len(resp.Volumes) > 0 {
    35  		listVolume := fmt.Sprintf("docker volume ls --filter label=%s=%s", utils.CliProjectLabel, utils.Config.ProjectId)
    36  		utils.CmdSuggestion = "Local data are backed up to docker volume. Use docker to show them: " + utils.Aqua(listVolume)
    37  	}
    38  	return nil
    39  }
    40  
    41  func stop(ctx context.Context, backup bool, w io.Writer) error {
    42  	utils.NoBackupVolume = !backup
    43  	return utils.DockerRemoveAll(ctx, w)
    44  }