github.com/jenspinney/cli@v6.42.1-0.20190207184520-7450c600020e+incompatible/command/flag/network_port.go (about)

     1  package flag
     2  
     3  import (
     4  	"strconv"
     5  	"strings"
     6  
     7  	flags "github.com/jessevdk/go-flags"
     8  )
     9  
    10  type NetworkPort struct {
    11  	StartPort int
    12  	EndPort   int
    13  }
    14  
    15  func (np *NetworkPort) UnmarshalFlag(val string) error {
    16  	ports := strings.Split(val, "-")
    17  
    18  	var err error
    19  	np.StartPort, err = strconv.Atoi(ports[0])
    20  	if err != nil {
    21  		return &flags.Error{
    22  			Type:    flags.ErrRequired,
    23  			Message: `PORT must be a positive integer`,
    24  		}
    25  	}
    26  
    27  	switch len(ports) {
    28  	case 1:
    29  		np.EndPort = np.StartPort
    30  	case 2:
    31  		np.EndPort, err = strconv.Atoi(ports[1])
    32  		if err != nil {
    33  			return &flags.Error{
    34  				Type:    flags.ErrRequired,
    35  				Message: `PORT must be a positive integer`,
    36  			}
    37  		}
    38  	default:
    39  		return &flags.Error{
    40  			Type:    flags.ErrRequired,
    41  			Message: `PORT syntax must match integer[-integer]`,
    42  		}
    43  	}
    44  
    45  	return nil
    46  }