func()

in internal/command/personalaccesstoken/personalaccesstoken.go [64:99]


func (c *Command) parseTokenArgs() error {
	if len(c.Args.SSHArgs) < 3 || len(c.Args.SSHArgs) > 4 {
		return errors.New(usageText) // nolint:stylecheck // usageText is customer facing
	}

	var rectfiedScopes []string
	requestedScopes := strings.Split(c.Args.SSHArgs[2], ",")
	if len(c.Config.PATConfig.AllowedScopes) > 0 {
		for _, requestedScope := range requestedScopes {
			if slices.Contains(c.Config.PATConfig.AllowedScopes, requestedScope) {
				rectfiedScopes = append(rectfiedScopes, requestedScope)
			}
		}
	} else {
		rectfiedScopes = requestedScopes
	}
	c.TokenArgs = &tokenArgs{
		Name:   c.Args.SSHArgs[1],
		Scopes: rectfiedScopes,
	}

	if len(c.Args.SSHArgs) < 4 {
		c.TokenArgs.ExpiresDate = time.Now().AddDate(0, 0, 30).Format(expiresDateFormat)
		return nil
	}
	rawTTL := c.Args.SSHArgs[3]

	TTL, err := strconv.Atoi(rawTTL)
	if err != nil || TTL < 0 {
		return fmt.Errorf("Invalid value for days_ttl: '%s'", rawTTL) //nolint:stylecheck //message is customer facing
	}

	c.TokenArgs.ExpiresDate = time.Now().AddDate(0, 0, TTL+1).Format(expiresDateFormat)

	return nil
}