mirror of
https://github.com/int128/kubelogin.git
synced 2026-02-14 16:39:51 +00:00
48 lines
1.4 KiB
Go
48 lines
1.4 KiB
Go
package clean
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
|
|
"github.com/google/wire"
|
|
"github.com/int128/kubelogin/pkg/infrastructure/logger"
|
|
"github.com/int128/kubelogin/pkg/tokencache"
|
|
"github.com/int128/kubelogin/pkg/tokencache/repository"
|
|
)
|
|
|
|
var Set = wire.NewSet(
|
|
wire.Struct(new(Clean), "*"),
|
|
wire.Bind(new(Interface), new(*Clean)),
|
|
)
|
|
|
|
type Interface interface {
|
|
Do(ctx context.Context, in Input) error
|
|
}
|
|
|
|
// Input represents an input of the Clean use-case.
|
|
type Input struct {
|
|
TokenCacheDir string
|
|
}
|
|
|
|
type Clean struct {
|
|
TokenCacheRepository repository.Interface
|
|
Logger logger.Interface
|
|
}
|
|
|
|
func (u *Clean) Do(ctx context.Context, in Input) error {
|
|
u.Logger.V(1).Infof("Deleting the token cache")
|
|
|
|
if err := u.TokenCacheRepository.DeleteAll(tokencache.Config{Directory: in.TokenCacheDir, Storage: tokencache.StorageDisk}); err != nil {
|
|
return fmt.Errorf("delete the token cache from %s: %w", in.TokenCacheDir, err)
|
|
}
|
|
u.Logger.Printf("Deleted the token cache from %s", in.TokenCacheDir)
|
|
|
|
if err := u.TokenCacheRepository.DeleteAll(tokencache.Config{Directory: in.TokenCacheDir, Storage: tokencache.StorageKeyring}); err != nil {
|
|
// Do not return an error because the keyring may not be available.
|
|
u.Logger.Printf("Could not delete the token cache from the keyring: %s", err)
|
|
} else {
|
|
u.Logger.Printf("Deleted the token cache from the keyring")
|
|
}
|
|
return nil
|
|
}
|