github.com/scaleway/scaleway-cli@v1.11.1/pkg/cli/x_ips.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 cli
     6  
     7  var cmdIPS = &Command{
     8  	Exec:      runIPS,
     9  	UsageLine: "_ips [OPTIONS] [IP_ID [SERVER_ID]]",
    10  
    11  	Description: "Interacts with your IPs",
    12  	Hidden:      true,
    13  	Help:        "Interacts with your IPs",
    14  	Examples: `
    15      $ scw _ips
    16      $ scw _ips IP_ID
    17      $ scw _ips --new
    18      $ scw _ips --attach IP_ID SERVER_ID
    19      $ scw _ips --delete IP_ID
    20      $ scw _ips --detach IP_ID
    21  `,
    22  }
    23  
    24  func init() {
    25  	cmdIPS.Flag.BoolVar(&ipHelp, []string{"h", "-help"}, false, "Print usage")
    26  	cmdIPS.Flag.BoolVar(&ipNew, []string{"n", "-new"}, false, "Add a new IP")
    27  	cmdIPS.Flag.BoolVar(&ipAttach, []string{"a", "-attach"}, false, "Attach an IP to a server")
    28  	cmdIPS.Flag.BoolVar(&ipDetach, []string{"-detach"}, false, "Detach an IP from a server")
    29  	cmdIPS.Flag.StringVar(&ipDelete, []string{"d", "-delete"}, "", "Detele an IP")
    30  }
    31  
    32  var ipHelp bool     // -h, --help flag
    33  var ipNew bool      // -n, --new flag
    34  var ipAttach bool   // -a, --attach flag
    35  var ipDetach bool   // --detach flag
    36  var ipDelete string // -d, --delete flag
    37  
    38  func runIPS(cmd *Command, args []string) error {
    39  	if ipHelp {
    40  		return cmd.PrintUsage()
    41  	}
    42  	if ipNew {
    43  		ip, err := cmd.API.NewIP()
    44  		if err != nil {
    45  			return err
    46  		}
    47  		printRawMode(cmd.Streams().Stdout, ip)
    48  		return nil
    49  	}
    50  	if ipDelete != "" {
    51  		return cmd.API.DeleteIP(ipDelete)
    52  	}
    53  	if ipAttach {
    54  		if len(args) != 2 {
    55  			return cmd.PrintShortUsage()
    56  		}
    57  		return cmd.API.AttachIP(args[0], args[1])
    58  	}
    59  	if ipDetach {
    60  		return cmd.API.DetachIP(args[0])
    61  	}
    62  	if len(args) == 1 {
    63  		ip, err := cmd.API.GetIP(args[0])
    64  		if err != nil {
    65  			return err
    66  		}
    67  		printRawMode(cmd.Streams().Stdout, *ip)
    68  		return nil
    69  	}
    70  	ips, err := cmd.API.GetIPS()
    71  	if err != nil {
    72  		return err
    73  	}
    74  	printRawMode(cmd.Streams().Stdout, *ips)
    75  	return nil
    76  }