Skip to content

Commit 2e1b835

Browse files
committed
Put error handling into separate "validateRepositories" function
1 parent ab441ef commit 2e1b835

File tree

1 file changed

+29
-24
lines changed

1 file changed

+29
-24
lines changed

extensions/ql-vscode/src/run-remote-query.ts

Lines changed: 29 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -130,33 +130,38 @@ async function runRemoteQueriesApiRequest(credentials: Credentials, ref: string,
130130
void showAndLogInformationMessage(`Successfully scheduled runs. [Click here to see the progress](https://github.com/${OWNER}/${REPO}/actions).`);
131131

132132
} catch (error) {
133-
if (typeof error.message === 'string' && error.message.includes('Some repositories were invalid')) {
134-
const invalidRepos = error?.response?.data?.invalid_repos || [];
135-
const reposWithoutDbUploads = error?.response?.data?.repos_without_db_uploads || [];
136-
void logger.log('Unable to run query on some of the specified repositories');
137-
if (invalidRepos.length > 0) {
138-
void logger.log(`Invalid repos: ${invalidRepos.join(', ')}`);
139-
}
140-
if (reposWithoutDbUploads.length > 0) {
141-
void logger.log(`Repos without DB uploads: ${reposWithoutDbUploads.join(', ')}`);
142-
}
133+
await validateRepositories(error, credentials, ref, language, repositories, query);
134+
}
135+
}
143136

144-
if (invalidRepos.length + reposWithoutDbUploads.length === repositories.length) {
145-
// Every repo is invalid in some way
146-
void showAndLogErrorMessage('Unable to run query on any of the specified repositories.');
147-
return;
148-
}
137+
async function validateRepositories(error: any, credentials: Credentials, ref: string, language: string, repositories: string[], query: string) {
138+
if (typeof error.message === 'string' && error.message.includes('Some repositories were invalid')) {
139+
const invalidRepos = error?.response?.data?.invalid_repos || [];
140+
const reposWithoutDbUploads = error?.response?.data?.repos_without_db_uploads || [];
141+
void logger.log('Unable to run query on some of the specified repositories');
142+
if (invalidRepos.length > 0) {
143+
void logger.log(`Invalid repos: ${invalidRepos.join(', ')}`);
144+
}
145+
if (reposWithoutDbUploads.length > 0) {
146+
void logger.log(`Repos without DB uploads: ${reposWithoutDbUploads.join(', ')}`);
147+
}
149148

150-
const popupMessage = 'Unable to run query on some of the specified repositories. [See logs for more details](command:codeQL.showLogs).';
151-
const rerunQuery = await showInformationMessageWithAction(popupMessage, 'Rerun on the valid repositories only');
152-
if (rerunQuery) {
153-
const validRepositories = repositories.filter(r => !invalidRepos.includes(r) && !reposWithoutDbUploads.includes(r));
154-
void logger.log(`Rerunning query on set of valid repositories: ${JSON.stringify(validRepositories)}`);
155-
await runRemoteQueriesApiRequest(credentials, ref, language, validRepositories, query);
156-
}
149+
if (invalidRepos.length + reposWithoutDbUploads.length === repositories.length) {
150+
// Every repo is invalid in some way
151+
void showAndLogErrorMessage('Unable to run query on any of the specified repositories.');
152+
return;
153+
}
157154

158-
} else {
159-
void showAndLogErrorMessage(error);
155+
const popupMessage = 'Unable to run query on some of the specified repositories. [See logs for more details](command:codeQL.showLogs).';
156+
const rerunQuery = await showInformationMessageWithAction(popupMessage, 'Rerun on the valid repositories only');
157+
if (rerunQuery) {
158+
const validRepositories = repositories.filter(r => !invalidRepos.includes(r) && !reposWithoutDbUploads.includes(r));
159+
void logger.log(`Rerunning query on set of valid repositories: ${JSON.stringify(validRepositories)}`);
160+
await runRemoteQueriesApiRequest(credentials, ref, language, validRepositories, query);
160161
}
162+
163+
} else {
164+
void showAndLogErrorMessage(error);
161165
}
166+
162167
}

0 commit comments

Comments
 (0)