@@ -69,6 +69,43 @@ export async function activate(context: vscode.ExtensionContext) {
6969 resultsProvider . clearResults ( ) ;
7070 vscode . window . showInformationMessage ( 'CodeQL diagnostics cleared.' ) ;
7171 } ) ,
72+ vscode . commands . registerCommand ( 'codeql-scanner.showCodeQLInfo' , async ( ) => {
73+ try {
74+ const version = await codeqlService . getVersion ( ) ;
75+ const config = vscode . workspace . getConfiguration ( "codeql-scanner" ) ;
76+ const codeqlPath = config . get < string > ( "codeqlPath" , "codeql" ) ;
77+
78+ vscode . window . showInformationMessage (
79+ `CodeQL CLI Info:\nVersion: ${ version } \nPath: ${ codeqlPath } ` ,
80+ { modal : true }
81+ ) ;
82+ } catch ( error ) {
83+ const errorMessage = error instanceof Error ? error . message : String ( error ) ;
84+ vscode . window . showErrorMessage ( `CodeQL CLI Info: ${ errorMessage } ` ) ;
85+ }
86+ } ) ,
87+ vscode . commands . registerCommand ( 'codeql-scanner.installCodeQL' , async ( ) => {
88+ try {
89+ await vscode . window . withProgress ( {
90+ location : vscode . ProgressLocation . Notification ,
91+ title : "Installing CodeQL CLI" ,
92+ cancellable : true
93+ } , async ( progress , token ) => {
94+ // Force installation
95+ const releaseInfo = await codeqlService . getLatestCodeQLRelease ( ) ;
96+ const installedPath = await codeqlService . downloadAndInstallCodeQL ( releaseInfo , progress , token ) ;
97+
98+ if ( installedPath ) {
99+ const config = vscode . workspace . getConfiguration ( "codeql-scanner" ) ;
100+ await config . update ( "codeqlPath" , installedPath , vscode . ConfigurationTarget . Global ) ;
101+ vscode . window . showInformationMessage ( `CodeQL CLI installed successfully at: ${ installedPath } ` ) ;
102+ }
103+ } ) ;
104+ } catch ( error ) {
105+ const errorMessage = error instanceof Error ? error . message : String ( error ) ;
106+ vscode . window . showErrorMessage ( `Failed to install CodeQL CLI: ${ errorMessage } ` ) ;
107+ }
108+ } ) ,
72109 vscode . commands . registerCommand ( 'codeql-scanner.copyFlowPath' , async ( item ) => {
73110 if ( item && item . result && item . result . flowSteps ) {
74111 const flowPath = item . result . flowSteps . map ( ( step : any , index : number ) => {
0 commit comments