Skip to content

Commit edec774

Browse files
fix: address format and lint issues
1 parent 61eef99 commit edec774

4 files changed

Lines changed: 33 additions & 12 deletions

File tree

internal/cmd/auth.go

Lines changed: 21 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,24 @@ import (
1919
)
2020

2121
var (
22-
openSecretsStore = secrets.OpenDefault
23-
authorizeGoogle = googleauth.Authorize
24-
startManageServer = googleauth.StartManageServer
25-
checkRefreshToken = googleauth.CheckRefreshToken
22+
openSecretsStore = secrets.OpenDefault
23+
authorizeGoogle = googleauth.Authorize
24+
startManageServer = googleauth.StartManageServer
25+
checkRefreshToken = googleauth.CheckRefreshToken
26+
ensureKeychainAccess = defaultEnsureKeychainAccess
2627
)
2728

29+
// defaultEnsureKeychainAccess verifies keychain is accessible before starting OAuth flow.
30+
func defaultEnsureKeychainAccess() error {
31+
store, err := secrets.OpenDefault()
32+
if err != nil {
33+
return fmt.Errorf("keychain access: %w", err)
34+
}
35+
// Trigger a read to verify keychain access
36+
_, _ = store.Keys()
37+
return nil
38+
}
39+
2840
type AuthCmd struct {
2941
Credentials AuthCredentialsCmd `cmd:"" name:"credentials" help:"Store OAuth client credentials"`
3042
Add AuthAddCmd `cmd:"" name:"add" help:"Authorize and store a refresh token"`
@@ -300,6 +312,11 @@ type AuthAddCmd struct {
300312
func (c *AuthAddCmd) Run(ctx context.Context) error {
301313
u := ui.FromContext(ctx)
302314

315+
// Verify keychain access before starting the OAuth flow
316+
if err := ensureKeychainAccess(); err != nil {
317+
return err
318+
}
319+
303320
var services []googleauth.Service
304321
if strings.EqualFold(strings.TrimSpace(c.ServicesCSV), "") || strings.EqualFold(strings.TrimSpace(c.ServicesCSV), "all") {
305322
services = googleauth.AllServices()

internal/cmd/calendar.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -335,7 +335,8 @@ func (c *CalendarUpdateCmd) Run(ctx context.Context, kctx *kong.Context, flags *
335335

336336
// For --add-attendee, fetch current event to preserve existing attendees with metadata.
337337
if flagProvided(kctx, "add-attendee") {
338-
existing, err := svc.Events.Get(calendarID, eventID).Do()
338+
var existing *calendar.Event
339+
existing, err = svc.Events.Get(calendarID, eventID).Do()
339340
if err != nil {
340341
return fmt.Errorf("failed to fetch current event: %w", err)
341342
}

internal/cmd/gmail_send.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ func (c *GmailSendCmd) Run(ctx context.Context, flags *RootFlags) error {
5454
if err != nil {
5555
return fmt.Errorf("invalid --from address %q: %w", c.From, err)
5656
}
57-
if sa.VerificationStatus != "accepted" {
57+
if sa.VerificationStatus != gmailVerificationAccepted {
5858
return fmt.Errorf("--from address %q is not verified (status: %s)", c.From, sa.VerificationStatus)
5959
}
6060
fromAddr = c.From

internal/secrets/store.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -37,13 +37,16 @@ type Token struct {
3737
RefreshToken string `json:"-"`
3838
}
3939

40-
const keyringPasswordEnv = "GOG_KEYRING_PASSWORD" //nolint:gosec // env var name, not a credential
41-
const keyringBackendEnv = "GOG_KEYRING_BACKEND" //nolint:gosec // env var name, not a credential
40+
const (
41+
keyringPasswordEnv = "GOG_KEYRING_PASSWORD" //nolint:gosec // env var name, not a credential
42+
keyringBackendEnv = "GOG_KEYRING_BACKEND" //nolint:gosec // env var name, not a credential
43+
)
4244

4345
var (
44-
errMissingEmail = errors.New("missing email")
45-
errMissingRefreshToken = errors.New("missing refresh token")
46-
errNoTTY = errors.New("no TTY available for keyring file backend password prompt")
46+
errMissingEmail = errors.New("missing email")
47+
errMissingRefreshToken = errors.New("missing refresh token")
48+
errNoTTY = errors.New("no TTY available for keyring file backend password prompt")
49+
errInvalidKeyringBackend = errors.New("invalid keyring backend")
4750
)
4851

4952
func allowedBackendsFromEnv() ([]keyring.BackendType, error) {
@@ -55,7 +58,7 @@ func allowedBackendsFromEnv() ([]keyring.BackendType, error) {
5558
case "file":
5659
return []keyring.BackendType{keyring.FileBackend}, nil
5760
default:
58-
return nil, fmt.Errorf("invalid %s (expected auto, keychain, or file)", keyringBackendEnv)
61+
return nil, fmt.Errorf("%w: %s (expected auto, keychain, or file)", errInvalidKeyringBackend, keyringBackendEnv)
5962
}
6063
}
6164

0 commit comments

Comments
 (0)