@@ -737,79 +737,6 @@ async function activateWithInstalledDistribution(
737737 void extLogger . log ( "Initializing source archive filesystem provider." ) ;
738738 archiveFilesystemProvider_activate ( ctx ) ;
739739
740- async function compileAndRunQueryOnMultipleDatabases (
741- progress : ProgressCallback ,
742- token : CancellationToken ,
743- uri : Uri | undefined ,
744- ) : Promise < void > {
745- let filteredDBs = dbm . databaseItems ;
746- if ( filteredDBs . length === 0 ) {
747- void showAndLogErrorMessage (
748- "No databases found. Please add a suitable database to your workspace." ,
749- ) ;
750- return ;
751- }
752- // If possible, only show databases with the right language (otherwise show all databases).
753- const queryLanguage = await findLanguage ( cliServer , uri ) ;
754- if ( queryLanguage ) {
755- filteredDBs = dbm . databaseItems . filter (
756- ( db ) => db . language === queryLanguage ,
757- ) ;
758- if ( filteredDBs . length === 0 ) {
759- void showAndLogErrorMessage (
760- `No databases found for language ${ queryLanguage } . Please add a suitable database to your workspace.` ,
761- ) ;
762- return ;
763- }
764- }
765- const quickPickItems = filteredDBs . map < DatabaseQuickPickItem > ( ( dbItem ) => ( {
766- databaseItem : dbItem ,
767- label : dbItem . name ,
768- description : dbItem . language ,
769- } ) ) ;
770- /**
771- * Databases that were selected in the quick pick menu.
772- */
773- const quickpick = await window . showQuickPick < DatabaseQuickPickItem > (
774- quickPickItems ,
775- { canPickMany : true , ignoreFocusOut : true } ,
776- ) ;
777- if ( quickpick !== undefined ) {
778- // Collect all skipped databases and display them at the end (instead of popping up individual errors)
779- const skippedDatabases = [ ] ;
780- const errors = [ ] ;
781- for ( const item of quickpick ) {
782- try {
783- await compileAndRunQuery (
784- qs ,
785- qhm ,
786- databaseUI ,
787- localQueryResultsView ,
788- queryStorageDir ,
789- false ,
790- uri ,
791- progress ,
792- token ,
793- item . databaseItem ,
794- ) ;
795- } catch ( e ) {
796- skippedDatabases . push ( item . label ) ;
797- errors . push ( getErrorMessage ( e ) ) ;
798- }
799- }
800- if ( skippedDatabases . length > 0 ) {
801- void extLogger . log ( `Errors:\n${ errors . join ( "\n" ) } ` ) ;
802- void showAndLogWarningMessage (
803- `The following databases were skipped:\n${ skippedDatabases . join (
804- "\n" ,
805- ) } .\nFor details about the errors, see the logs.`,
806- ) ;
807- }
808- } else {
809- void showAndLogErrorMessage ( "No databases selected." ) ;
810- }
811- }
812-
813740 const qhelpTmpDir = dirSync ( {
814741 prefix : "qhelp_" ,
815742 keep : false ,
@@ -961,7 +888,19 @@ async function activateWithInstalledDistribution(
961888 progress : ProgressCallback ,
962889 token : CancellationToken ,
963890 uri : Uri | undefined ,
964- ) => await compileAndRunQueryOnMultipleDatabases ( progress , token , uri ) ,
891+ ) =>
892+ await compileAndRunQueryOnMultipleDatabases (
893+ cliServer ,
894+ qs ,
895+ qhm ,
896+ dbm ,
897+ databaseUI ,
898+ localQueryResultsView ,
899+ queryStorageDir ,
900+ progress ,
901+ token ,
902+ uri ,
903+ ) ,
965904 {
966905 title : "Running query on selected databases" ,
967906 cancellable : true ,
@@ -976,7 +915,19 @@ async function activateWithInstalledDistribution(
976915 progress : ProgressCallback ,
977916 token : CancellationToken ,
978917 uri : Uri | undefined ,
979- ) => await compileAndRunQueryOnMultipleDatabases ( progress , token , uri ) ,
918+ ) =>
919+ await compileAndRunQueryOnMultipleDatabases (
920+ cliServer ,
921+ qs ,
922+ qhm ,
923+ dbm ,
924+ databaseUI ,
925+ localQueryResultsView ,
926+ queryStorageDir ,
927+ progress ,
928+ token ,
929+ uri ,
930+ ) ,
980931 {
981932 title : "Running query on selected databases" ,
982933 cancellable : true ,
@@ -1844,6 +1795,86 @@ async function compileAndRunQuery(
18441795 }
18451796}
18461797
1798+ async function compileAndRunQueryOnMultipleDatabases (
1799+ cliServer : CodeQLCliServer ,
1800+ qs : QueryRunner ,
1801+ qhm : QueryHistoryManager ,
1802+ dbm : DatabaseManager ,
1803+ databaseUI : DatabaseUI ,
1804+ localQueryResultsView : ResultsView ,
1805+ queryStorageDir : string ,
1806+ progress : ProgressCallback ,
1807+ token : CancellationToken ,
1808+ uri : Uri | undefined ,
1809+ ) : Promise < void > {
1810+ let filteredDBs = dbm . databaseItems ;
1811+ if ( filteredDBs . length === 0 ) {
1812+ void showAndLogErrorMessage (
1813+ "No databases found. Please add a suitable database to your workspace." ,
1814+ ) ;
1815+ return ;
1816+ }
1817+ // If possible, only show databases with the right language (otherwise show all databases).
1818+ const queryLanguage = await findLanguage ( cliServer , uri ) ;
1819+ if ( queryLanguage ) {
1820+ filteredDBs = dbm . databaseItems . filter (
1821+ ( db ) => db . language === queryLanguage ,
1822+ ) ;
1823+ if ( filteredDBs . length === 0 ) {
1824+ void showAndLogErrorMessage (
1825+ `No databases found for language ${ queryLanguage } . Please add a suitable database to your workspace.` ,
1826+ ) ;
1827+ return ;
1828+ }
1829+ }
1830+ const quickPickItems = filteredDBs . map < DatabaseQuickPickItem > ( ( dbItem ) => ( {
1831+ databaseItem : dbItem ,
1832+ label : dbItem . name ,
1833+ description : dbItem . language ,
1834+ } ) ) ;
1835+ /**
1836+ * Databases that were selected in the quick pick menu.
1837+ */
1838+ const quickpick = await window . showQuickPick < DatabaseQuickPickItem > (
1839+ quickPickItems ,
1840+ { canPickMany : true , ignoreFocusOut : true } ,
1841+ ) ;
1842+ if ( quickpick !== undefined ) {
1843+ // Collect all skipped databases and display them at the end (instead of popping up individual errors)
1844+ const skippedDatabases = [ ] ;
1845+ const errors = [ ] ;
1846+ for ( const item of quickpick ) {
1847+ try {
1848+ await compileAndRunQuery (
1849+ qs ,
1850+ qhm ,
1851+ databaseUI ,
1852+ localQueryResultsView ,
1853+ queryStorageDir ,
1854+ false ,
1855+ uri ,
1856+ progress ,
1857+ token ,
1858+ item . databaseItem ,
1859+ ) ;
1860+ } catch ( e ) {
1861+ skippedDatabases . push ( item . label ) ;
1862+ errors . push ( getErrorMessage ( e ) ) ;
1863+ }
1864+ }
1865+ if ( skippedDatabases . length > 0 ) {
1866+ void extLogger . log ( `Errors:\n${ errors . join ( "\n" ) } ` ) ;
1867+ void showAndLogWarningMessage (
1868+ `The following databases were skipped:\n${ skippedDatabases . join (
1869+ "\n" ,
1870+ ) } .\nFor details about the errors, see the logs.`,
1871+ ) ;
1872+ }
1873+ } else {
1874+ void showAndLogErrorMessage ( "No databases selected." ) ;
1875+ }
1876+ }
1877+
18471878function addUnhandledRejectionListener ( ) {
18481879 const handler = ( error : unknown ) => {
18491880 // This listener will be triggered for errors from other extensions as
0 commit comments