diff --git a/internal/cmd/calendar_users.go b/internal/cmd/calendar_users.go index 2bbbe2e..2dce45c 100644 --- a/internal/cmd/calendar_users.go +++ b/internal/cmd/calendar_users.go @@ -50,13 +50,13 @@ func (c *CalendarUsersCmd) Run(ctx context.Context, flags *RootFlags) error { if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - if strings.Contains(err.Error(), "accessNotConfigured") || - strings.Contains(err.Error(), "People API has not been used") { - return nil, "", fmt.Errorf("people API is not enabled; enable it at: https://console.developers.google.com/apis/api/people.googleapis.com/overview (%w)", err) + resp, callErr := call.Do() + if callErr != nil { + if strings.Contains(callErr.Error(), "accessNotConfigured") || + strings.Contains(callErr.Error(), "People API has not been used") { + return nil, "", fmt.Errorf("people API is not enabled; enable it at: https://console.developers.google.com/apis/api/people.googleapis.com/overview (%w)", callErr) } - return nil, "", err + return nil, "", callErr } return resp.People, resp.NextPageToken, nil } diff --git a/internal/cmd/chat_messages.go b/internal/cmd/chat_messages.go index dd89450..a768e7d 100644 --- a/internal/cmd/chat_messages.go +++ b/internal/cmd/chat_messages.go @@ -83,9 +83,9 @@ func (c *ChatMessagesListCmd) Run(ctx context.Context, flags *RootFlags) error { if filter != "" { call = call.Filter(filter) } - resp, err := call.Do() - if err != nil { - return nil, "", err + resp, callErr := call.Do() + if callErr != nil { + return nil, "", callErr } return resp.Messages, resp.NextPageToken, nil } diff --git a/internal/cmd/chat_reactions.go b/internal/cmd/chat_reactions.go index 12b8574..6fe6b8b 100644 --- a/internal/cmd/chat_reactions.go +++ b/internal/cmd/chat_reactions.go @@ -120,9 +120,9 @@ func (c *ChatMessagesReactionsListCmd) Run(ctx context.Context, flags *RootFlags if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", err + resp, callErr := call.Do() + if callErr != nil { + return nil, "", callErr } return resp.Reactions, resp.NextPageToken, nil } diff --git a/internal/cmd/chat_threads.go b/internal/cmd/chat_threads.go index 7497f79..79d51a3 100644 --- a/internal/cmd/chat_threads.go +++ b/internal/cmd/chat_threads.go @@ -52,9 +52,9 @@ func (c *ChatThreadsListCmd) Run(ctx context.Context, flags *RootFlags) error { if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", err + resp, callErr := call.Do() + if callErr != nil { + return nil, "", callErr } return resp.Messages, resp.NextPageToken, nil } diff --git a/internal/cmd/classroom_courses.go b/internal/cmd/classroom_courses.go index abe93ef..37f20fe 100644 --- a/internal/cmd/classroom_courses.go +++ b/internal/cmd/classroom_courses.go @@ -65,9 +65,9 @@ func (c *ClassroomCoursesListCmd) Run(ctx context.Context, flags *RootFlags) err if v := strings.TrimSpace(c.StudentID); v != "" { call.StudentId(v) } - resp, err := call.Do() - if err != nil { - return nil, "", wrapClassroomError(err) + resp, callErr := call.Do() + if callErr != nil { + return nil, "", wrapClassroomError(callErr) } return resp.Courses, resp.NextPageToken, nil } diff --git a/internal/cmd/classroom_guardians.go b/internal/cmd/classroom_guardians.go index 448ad15..caed3b7 100644 --- a/internal/cmd/classroom_guardians.go +++ b/internal/cmd/classroom_guardians.go @@ -51,9 +51,9 @@ func (c *ClassroomGuardiansListCmd) Run(ctx context.Context, flags *RootFlags) e if v := strings.TrimSpace(c.Email); v != "" { call.InvitedEmailAddress(v) } - resp, err := call.Do() - if err != nil { - return nil, "", wrapClassroomError(err) + resp, callErr := call.Do() + if callErr != nil { + return nil, "", wrapClassroomError(callErr) } return resp.Guardians, resp.NextPageToken, nil } @@ -227,9 +227,9 @@ func (c *ClassroomGuardianInvitesListCmd) Run(ctx context.Context, flags *RootFl } call.States(upper...) } - resp, err := call.Do() - if err != nil { - return nil, "", wrapClassroomError(err) + resp, callErr := call.Do() + if callErr != nil { + return nil, "", wrapClassroomError(callErr) } return resp.GuardianInvitations, resp.NextPageToken, nil } diff --git a/internal/cmd/classroom_invitations.go b/internal/cmd/classroom_invitations.go index 83b2b8b..f1c249e 100644 --- a/internal/cmd/classroom_invitations.go +++ b/internal/cmd/classroom_invitations.go @@ -53,9 +53,9 @@ func (c *ClassroomInvitationsListCmd) Run(ctx context.Context, flags *RootFlags) call.UserId(v) } - resp, err := call.Do() - if err != nil { - return nil, "", wrapClassroomError(err) + resp, callErr := call.Do() + if callErr != nil { + return nil, "", wrapClassroomError(callErr) } return resp.Invitations, resp.NextPageToken, nil } diff --git a/internal/cmd/classroom_rosters.go b/internal/cmd/classroom_rosters.go index 40057c7..1830b1e 100644 --- a/internal/cmd/classroom_rosters.go +++ b/internal/cmd/classroom_rosters.go @@ -48,9 +48,9 @@ func (c *ClassroomStudentsListCmd) Run(ctx context.Context, flags *RootFlags) er if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", wrapClassroomError(err) + resp, callErr := call.Do() + if callErr != nil { + return nil, "", wrapClassroomError(callErr) } return resp.Students, resp.NextPageToken, nil } @@ -269,9 +269,9 @@ func (c *ClassroomTeachersListCmd) Run(ctx context.Context, flags *RootFlags) er if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", wrapClassroomError(err) + resp, callErr := call.Do() + if callErr != nil { + return nil, "", wrapClassroomError(callErr) } return resp.Teachers, resp.NextPageToken, nil } @@ -455,7 +455,7 @@ type ClassroomRosterCmd struct { FailEmpty bool `name:"fail-empty" aliases:"non-empty,require-results" help:"Exit with code 3 if no results"` } -//nolint:gocyclo,cyclop // command orchestration across two role paths +//nolint:cyclop // command orchestration across two role paths func (c *ClassroomRosterCmd) Run(ctx context.Context, flags *RootFlags) error { u := ui.FromContext(ctx) account, err := requireAccount(flags) diff --git a/internal/cmd/classroom_submissions.go b/internal/cmd/classroom_submissions.go index 8c0cda7..467e539 100644 --- a/internal/cmd/classroom_submissions.go +++ b/internal/cmd/classroom_submissions.go @@ -79,9 +79,9 @@ func (c *ClassroomSubmissionsListCmd) Run(ctx context.Context, flags *RootFlags) } } - resp, err := call.Do() - if err != nil { - return nil, "", wrapClassroomError(err) + resp, callErr := call.Do() + if callErr != nil { + return nil, "", wrapClassroomError(callErr) } return resp.StudentSubmissions, resp.NextPageToken, nil } diff --git a/internal/cmd/contacts_directory.go b/internal/cmd/contacts_directory.go index c84d01a..145ba26 100644 --- a/internal/cmd/contacts_directory.go +++ b/internal/cmd/contacts_directory.go @@ -55,9 +55,9 @@ func (c *ContactsDirectoryListCmd) Run(ctx context.Context, flags *RootFlags) er call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", err + resp, callErr := call.Do() + if callErr != nil { + return nil, "", callErr } return resp.People, resp.NextPageToken, nil } @@ -151,9 +151,9 @@ func (c *ContactsDirectorySearchCmd) Run(ctx context.Context, flags *RootFlags) if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", err + resp, callErr := call.Do() + if callErr != nil { + return nil, "", callErr } return resp.People, resp.NextPageToken, nil } @@ -246,9 +246,9 @@ func (c *ContactsOtherListCmd) Run(ctx context.Context, flags *RootFlags) error if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", err + resp, callErr := call.Do() + if callErr != nil { + return nil, "", callErr } return resp.OtherContacts, resp.NextPageToken, nil } diff --git a/internal/cmd/gmail_history.go b/internal/cmd/gmail_history.go index 978d7f1..af22029 100644 --- a/internal/cmd/gmail_history.go +++ b/internal/cmd/gmail_history.go @@ -43,9 +43,9 @@ func (c *GmailHistoryCmd) Run(ctx context.Context, flags *RootFlags) error { if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Context(ctx).Do() - if err != nil { - return nil, "", err + resp, callErr := call.Context(ctx).Do() + if callErr != nil { + return nil, "", callErr } historyID = formatHistoryID(resp.HistoryId) historyIDs := collectHistoryMessageIDs(resp) diff --git a/internal/cmd/google_service_testutil_test.go b/internal/cmd/google_service_testutil_test.go index 19cca3a..d312d4e 100644 --- a/internal/cmd/google_service_testutil_test.go +++ b/internal/cmd/google_service_testutil_test.go @@ -43,5 +43,6 @@ func stubGoogleTestService[T any](t *testing.T, target *func(context.Context, st orig := *target t.Cleanup(func() { *target = orig }) + //nolint:unparam // test stub must match production service constructor signature. *target = func(context.Context, string) (*T, error) { return svc, nil } } diff --git a/internal/cmd/groups.go b/internal/cmd/groups.go index 5e93a2a..e3b8dba 100644 --- a/internal/cmd/groups.go +++ b/internal/cmd/groups.go @@ -60,9 +60,9 @@ func (c *GroupsListCmd) Run(ctx context.Context, flags *RootFlags) error { if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", wrapCloudIdentityError(err, account) + resp, callErr := call.Do() + if callErr != nil { + return nil, "", wrapCloudIdentityError(callErr, account) } return resp.Memberships, resp.NextPageToken, nil } @@ -201,9 +201,9 @@ func (c *GroupsMembersCmd) Run(ctx context.Context, flags *RootFlags) error { if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", fmt.Errorf("failed to list members: %w", err) + resp, callErr := call.Do() + if callErr != nil { + return nil, "", fmt.Errorf("failed to list members: %w", callErr) } return resp.Memberships, resp.NextPageToken, nil } diff --git a/internal/cmd/people_profile.go b/internal/cmd/people_profile.go index 96a25eb..ebd7cb8 100644 --- a/internal/cmd/people_profile.go +++ b/internal/cmd/people_profile.go @@ -102,9 +102,9 @@ func (c *PeopleSearchCmd) Run(ctx context.Context, flags *RootFlags) error { if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", wrapPeopleAPIError(err) + resp, callErr := call.Do() + if callErr != nil { + return nil, "", wrapPeopleAPIError(callErr) } return resp.People, resp.NextPageToken, nil } diff --git a/internal/cmd/tasks_items.go b/internal/cmd/tasks_items.go index efae39f..f7b17ba 100644 --- a/internal/cmd/tasks_items.go +++ b/internal/cmd/tasks_items.go @@ -82,9 +82,9 @@ func (c *TasksListCmd) Run(ctx context.Context, flags *RootFlags) error { call = call.UpdatedMin(strings.TrimSpace(c.UpdatedMin)) } - resp, err := call.Context(ctx).Do() - if err != nil { - return nil, "", err + resp, callErr := call.Context(ctx).Do() + if callErr != nil { + return nil, "", callErr } return resp.Items, resp.NextPageToken, nil } diff --git a/internal/cmd/tasks_lists.go b/internal/cmd/tasks_lists.go index c28f235..8a20874 100644 --- a/internal/cmd/tasks_lists.go +++ b/internal/cmd/tasks_lists.go @@ -41,9 +41,9 @@ func (c *TasksListsListCmd) Run(ctx context.Context, flags *RootFlags) error { if strings.TrimSpace(pageToken) != "" { call = call.PageToken(pageToken) } - resp, err := call.Do() - if err != nil { - return nil, "", err + resp, callErr := call.Do() + if callErr != nil { + return nil, "", callErr } return resp.Items, resp.NextPageToken, nil } diff --git a/internal/googleapi/client.go b/internal/googleapi/client.go index dea048c..602c55a 100644 --- a/internal/googleapi/client.go +++ b/internal/googleapi/client.go @@ -54,6 +54,7 @@ func newGoogleServiceForAccount[T any]( if err != nil { return nil, fmt.Errorf("%s options: %w", label, err) } + return newGoogleService(ctx, label, opts, factory) } @@ -69,6 +70,7 @@ func newGoogleServiceForScopes[T any]( if err != nil { return nil, fmt.Errorf("%s options: %w", errorLabel, err) } + return newGoogleService(ctx, errorLabel, opts, factory) } @@ -82,6 +84,7 @@ func newGoogleService[T any]( if err != nil { return nil, fmt.Errorf("create %s service: %w", label, err) } + return svc, nil }