github.com/scaleway/scaleway-cli@v1.11.1/pkg/commands/rm.go (about)

     1  // Copyright (C) 2015 Scaleway. All rights reserved.
     2  // Use of this source code is governed by a MIT-style
     3  // license that can be found in the LICENSE.md file.
     4  
     5  package commands
     6  
     7  import (
     8  	"fmt"
     9  
    10  	"github.com/Sirupsen/logrus"
    11  )
    12  
    13  // RmArgs are flags for the `RunRm` function
    14  type RmArgs struct {
    15  	Servers []string
    16  	Force   bool
    17  }
    18  
    19  // RunRm is the handler for 'scw rm'
    20  func RunRm(ctx CommandContext, args RmArgs) error {
    21  	hasError := false
    22  	for _, needle := range args.Servers {
    23  		server, err := ctx.API.GetServerID(needle)
    24  		if err != nil {
    25  			return err
    26  		}
    27  		if args.Force {
    28  			err = ctx.API.DeleteServerForce(server)
    29  		} else {
    30  			err = ctx.API.DeleteServer(server)
    31  		}
    32  		if err != nil {
    33  			logrus.Errorf("failed to delete server %s: %s", server, err)
    34  			hasError = true
    35  		} else {
    36  			fmt.Fprintln(ctx.Stdout, needle)
    37  		}
    38  	}
    39  	if hasError {
    40  		return fmt.Errorf("at least 1 server failed to be removed")
    41  	}
    42  	return nil
    43  }