| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- package config
- import (
- "cmp"
- "context"
- "log/slog"
- "testing"
- "charm.land/catwalk/pkg/catwalk"
- "github.com/charmbracelet/crush/internal/oauth"
- "github.com/charmbracelet/crush/internal/oauth/copilot"
- )
- func (c *Config) ImportCopilot() (*oauth.Token, bool) {
- if testing.Testing() {
- return nil, false
- }
- if c.HasConfigField("providers.copilot.api_key") || c.HasConfigField("providers.copilot.oauth") {
- return nil, false
- }
- diskToken, hasDiskToken := copilot.RefreshTokenFromDisk()
- if !hasDiskToken {
- return nil, false
- }
- slog.Info("Found existing GitHub Copilot token on disk. Authenticating...")
- token, err := copilot.RefreshToken(context.TODO(), diskToken)
- if err != nil {
- slog.Error("Unable to import GitHub Copilot token", "error", err)
- return nil, false
- }
- if err := c.SetProviderAPIKey(string(catwalk.InferenceProviderCopilot), token); err != nil {
- return token, false
- }
- if err := cmp.Or(
- c.SetConfigField("providers.copilot.api_key", token.AccessToken),
- c.SetConfigField("providers.copilot.oauth", token),
- ); err != nil {
- slog.Error("Unable to save GitHub Copilot token to disk", "error", err)
- }
- slog.Info("GitHub Copilot successfully imported")
- return token, true
- }
|