@@ -33,11 +33,11 @@ import {
3333} from "../config" ;
3434import { showAndLogInformationMessage } from "../common/logging" ;
3535import { AppOctokit } from "../common/octokit" ;
36- import { getLanguageDisplayName } from "../common/query-language" ;
3736import type { DatabaseOrigin } from "./local-databases/database-origin" ;
3837import { createTimeoutSignal } from "../common/fetch-stream" ;
3938import type { App } from "../common/app" ;
4039import { findDirWithFile } from "../common/files" ;
40+ import { convertGithubNwoToDatabaseUrl } from "./github-databases/api" ;
4141
4242/**
4343 * Prompts a user to fetch a database from a remote location. Database is assumed to be an archive file.
@@ -587,95 +587,6 @@ function isFile(databaseUrl: string) {
587587 return Uri . parse ( databaseUrl ) . scheme === "file" ;
588588}
589589
590- export async function convertGithubNwoToDatabaseUrl (
591- nwo : string ,
592- octokit : Octokit ,
593- progress : ProgressCallback ,
594- language ?: string ,
595- ) : Promise <
596- | {
597- databaseUrl : string ;
598- owner : string ;
599- name : string ;
600- databaseId : number ;
601- databaseCreatedAt : string ;
602- commitOid : string | null ;
603- }
604- | undefined
605- > {
606- try {
607- const [ owner , repo ] = nwo . split ( "/" ) ;
608-
609- const response = await octokit . rest . codeScanning . listCodeqlDatabases ( {
610- owner,
611- repo,
612- } ) ;
613-
614- const languages = response . data . map ( ( db ) => db . language ) ;
615-
616- if ( ! language || ! languages . includes ( language ) ) {
617- language = await promptForLanguage ( languages , progress ) ;
618- if ( ! language ) {
619- return ;
620- }
621- }
622-
623- const databaseForLanguage = response . data . find (
624- ( db ) => db . language === language ,
625- ) ;
626- if ( ! databaseForLanguage ) {
627- throw new Error ( `No database found for language '${ language } '` ) ;
628- }
629-
630- return {
631- databaseUrl : databaseForLanguage . url ,
632- owner,
633- name : repo ,
634- databaseId : databaseForLanguage . id ,
635- databaseCreatedAt : databaseForLanguage . created_at ,
636- commitOid : databaseForLanguage . commit_oid ?? null ,
637- } ;
638- } catch ( e ) {
639- void extLogger . log ( `Error: ${ getErrorMessage ( e ) } ` ) ;
640- throw new Error ( `Unable to get database for '${ nwo } '` ) ;
641- }
642- }
643-
644- export async function promptForLanguage (
645- languages : string [ ] ,
646- progress : ProgressCallback | undefined ,
647- ) : Promise < string | undefined > {
648- progress ?.( {
649- message : "Choose language" ,
650- step : 2 ,
651- maxStep : 2 ,
652- } ) ;
653- if ( ! languages . length ) {
654- throw new Error ( "No databases found" ) ;
655- }
656- if ( languages . length === 1 ) {
657- return languages [ 0 ] ;
658- }
659-
660- const items = languages
661- . map ( ( language ) => ( {
662- label : getLanguageDisplayName ( language ) ,
663- description : language ,
664- language,
665- } ) )
666- . sort ( ( a , b ) => a . label . localeCompare ( b . label ) ) ;
667-
668- const selectedItem = await window . showQuickPick ( items , {
669- placeHolder : "Select the database language to download:" ,
670- ignoreFocusOut : true ,
671- } ) ;
672- if ( ! selectedItem ) {
673- return undefined ;
674- }
675-
676- return selectedItem . language ;
677- }
678-
679590/**
680591 * Databases created by the old odasa tool will not have a zipped
681592 * source location. However, this extension works better if sources
0 commit comments