func (c *portCommand) Init(args []string) error { if args == nil { return errors.New("no port specified") } parts := strings.Split(args[0], "/") if len(parts) > 2 { return fmt.Errorf("expected %s; got %q", portFormat, args[0]) } port, err := strconv.Atoi(parts[0]) if err != nil { return badPort(parts[0]) } if port < 1 || port > 65535 { return badPort(port) } protocol := "tcp" if len(parts) == 2 { protocol = strings.ToLower(parts[1]) if protocol != "tcp" && protocol != "udp" { return fmt.Errorf(`protocol must be "tcp" or "udp"; got %q`, protocol) } } c.Port = port c.Protocol = protocol return cmd.CheckEmpty(args[1:]) }
func (c *BootstrapCommand) Init(args []string) (err error) { if len(c.Series) > 0 && !c.UploadTools { return fmt.Errorf("--upload-series requires --upload-tools") } if len(c.seriesOld) > 0 && !c.UploadTools { return fmt.Errorf("--series requires --upload-tools") } if len(c.Series) > 0 && len(c.seriesOld) > 0 { return fmt.Errorf("--upload-series and --series can't be used together") } if len(c.seriesOld) > 0 { c.Series = c.seriesOld } // Parse the placement directive. Bootstrap currently only // supports provider-specific placement directives. if c.Placement != "" { _, err = instance.ParsePlacement(c.Placement) if err != instance.ErrPlacementScopeMissing { // We only support unscoped placement directives for bootstrap. return fmt.Errorf("unsupported bootstrap placement directive %q", c.Placement) } } return cmd.CheckEmpty(args) }
func (c *GetCommand) Init(args []string) error { // TODO(dfc) add --schema-only if len(args) == 0 { return errors.New("no service name specified") } c.ServiceName = args[0] return cmd.CheckEmpty(args[1:]) }
func (c *GetConstraintsCommand) Init(args []string) error { if len(args) > 0 { if !names.IsService(args[0]) { return fmt.Errorf("invalid service name %q", args[0]) } c.ServiceName, args = args[0], args[1:] } return cmd.CheckEmpty(args) }
func (c *UnitGetCommand) Init(args []string) error { if args == nil { return errors.New("no setting specified") } if args[0] != "private-address" && args[0] != "public-address" { return fmt.Errorf("unknown setting %q", args[0]) } c.Key = args[0] return cmd.CheckEmpty(args[1:]) }
func (c *RemoveServiceCommand) Init(args []string) error { if len(args) == 0 { return fmt.Errorf("no service specified") } if !names.IsService(args[0]) { return fmt.Errorf("invalid service name %q", args[0]) } c.ServiceName, args = args[0], args[1:] return cmd.CheckEmpty(args) }
func (c *UserAddCommand) Init(args []string) error { switch len(args) { case 0: return fmt.Errorf("no username supplied") case 1: c.User = args[0] default: return cmd.CheckEmpty(args[1:]) } return nil }
func (c *AddUnitCommand) Init(args []string) error { switch len(args) { case 1: c.ServiceName = args[0] case 0: return errors.New("no service specified") } if err := cmd.CheckEmpty(args[1:]); err != nil { return err } return c.UnitCommandBase.Init(args) }
func (c *ResolvedCommand) Init(args []string) error { if len(args) > 0 { c.UnitName = args[0] if !names.IsUnit(c.UnitName) { return fmt.Errorf("invalid unit name %q", c.UnitName) } args = args[1:] } else { return fmt.Errorf("no unit specified") } return cmd.CheckEmpty(args) }
func (c *ValidateImageMetadataCommand) Init(args []string) error { if c.providerType != "" { if c.series == "" { return fmt.Errorf("series required if provider type is specified") } if c.region == "" { return fmt.Errorf("region required if provider type is specified") } if c.metadataDir == "" { return fmt.Errorf("metadata directory required if provider type is specified") } } return cmd.CheckEmpty(args) }
func (c *DeployCommand) Init(args []string) error { switch len(args) { case 2: if !names.IsService(args[1]) { return fmt.Errorf("invalid service name %q", args[1]) } c.ServiceName = args[1] fallthrough case 1: if _, err := charm.InferURL(args[0], "fake"); err != nil { return fmt.Errorf("invalid charm name %q", args[0]) } c.CharmName = args[0] case 0: return errors.New("no charm specified") default: return cmd.CheckEmpty(args[2:]) } return c.UnitCommandBase.Init(args) }
func (c *DestroyEnvironmentCommand) Init(args []string) error { if c.envName != "" { logger.Warningf("-e/--environment flag is deprecated in 1.18, " + "please supply environment as a positional parameter") // They supplied the -e flag if len(args) == 0 { // We're happy, we have enough information return nil } // You can't supply -e ENV and ENV as a positional argument return DoubleEnvironmentError } // No -e flag means they must supply the environment positionally switch len(args) { case 0: return NoEnvironmentError case 1: c.envName = args[0] return nil default: return cmd.CheckEmpty(args[1:]) } }
func (c *RpcCommand) Init(args []string) error { return cmd.CheckEmpty(args) }