1
0
mirror of https://gitea.com/jolheiser/sip synced 2024-11-23 04:12:00 +01:00
sip/cmd/token_remove.go

54 lines
1.2 KiB
Go
Raw Normal View History

package cmd
import (
"fmt"
"gitea.com/jolheiser/beaver"
"gitea.com/jolheiser/sip/modules/config"
"github.com/AlecAivazis/survey/v2"
"github.com/urfave/cli/v2"
)
var TokensRemove = cli.Command{
Name: "remove",
Usage: "Remove access tokens",
Action: doTokenRemove,
}
func doTokenRemove(ctx *cli.Context) error {
opts := make([]string, len(config.Tokens))
for idx, token := range config.Tokens {
opts[idx] = fmt.Sprintf("%s (%s)", token.Name, token.URL)
}
question := &survey.MultiSelect{
Message: "Which would you like to remove?",
Options: opts,
PageSize: 10,
}
answers := make([]string, 0)
if err := survey.AskOne(question, &answers); err != nil {
return err
}
idxs := make([]int, len(answers))
for idx, answer := range answers {
for idy, token := range config.Tokens {
if answer == fmt.Sprintf("%s (%s)", token.Name, token.URL) {
idxs[len(answers)-idx-1] = idy
}
}
}
for _, idx := range idxs {
config.Tokens = append(config.Tokens[:idx], config.Tokens[idx+1:]...)
}
if err := config.Save(); err != nil {
return err
}
beaver.Infof("Removed %d token(s)! Remember to clean up in Gitea if necessary!", len(answers))
return nil
}