11import { CancellationToken , Uri , window } from "vscode" ;
22import { relative , join , sep , dirname , parse , basename } from "path" ;
33import { dump , load } from "js-yaml" ;
4- import { pathExists , copy , writeFile , readFile , mkdirp } from "fs-extra" ;
4+ import { copy , writeFile , readFile , mkdirp } from "fs-extra" ;
55import { dir , tmpName } from "tmp-promise" ;
66import {
77 askForLanguage ,
@@ -30,6 +30,11 @@ import {
3030} from "./repository-selection" ;
3131import { Repository } from "./shared/repository" ;
3232import { DbManager } from "../databases/db-manager" ;
33+ import {
34+ getQlPackPath ,
35+ FALLBACK_QLPACK_FILENAME ,
36+ QLPACK_FILENAMES ,
37+ } from "../pure/ql" ;
3338
3439export interface QlPack {
3540 name : string ;
@@ -67,7 +72,7 @@ async function generateQueryPack(
6772 const targetQueryFileName = join ( queryPackDir , packRelativePath ) ;
6873
6974 let language : string | undefined ;
70- if ( await getExistingPackFile ( originalPackRoot ) ) {
75+ if ( await getQlPackPath ( originalPackRoot ) ) {
7176 // don't include ql files. We only want the queryFile to be copied.
7277 const toCopy = await cliServer . packPacklist ( originalPackRoot , false ) ;
7378
@@ -120,7 +125,10 @@ async function generateQueryPack(
120125 } ,
121126 defaultSuite : generateDefaultSuite ( packRelativePath ) ,
122127 } ;
123- await writeFile ( join ( queryPackDir , "qlpack.yml" ) , dump ( syntheticQueryPack ) ) ;
128+ await writeFile (
129+ join ( queryPackDir , FALLBACK_QLPACK_FILENAME ) ,
130+ dump ( syntheticQueryPack ) ,
131+ ) ;
124132 }
125133 if ( ! language ) {
126134 throw new UserCancellationException ( "Could not determine language." ) ;
@@ -163,7 +171,7 @@ async function generateQueryPack(
163171async function findPackRoot ( queryFile : string ) : Promise < string > {
164172 // recursively find the directory containing qlpack.yml
165173 let dir = dirname ( queryFile ) ;
166- while ( ! ( await getExistingPackFile ( dir ) ) ) {
174+ while ( ! ( await getQlPackPath ( dir ) ) ) {
167175 dir = dirname ( dir ) ;
168176 if ( isFileSystemRoot ( dir ) ) {
169177 // there is no qlpack.yml in this directory or any parent directory.
@@ -175,16 +183,6 @@ async function findPackRoot(queryFile: string): Promise<string> {
175183 return dir ;
176184}
177185
178- async function getExistingPackFile ( dir : string ) {
179- if ( await pathExists ( join ( dir , "qlpack.yml" ) ) ) {
180- return join ( dir , "qlpack.yml" ) ;
181- }
182- if ( await pathExists ( join ( dir , "codeql-pack.yml" ) ) ) {
183- return join ( dir , "codeql-pack.yml" ) ;
184- }
185- return undefined ;
186- }
187-
188186function isFileSystemRoot ( dir : string ) : boolean {
189187 const pathObj = parse ( dir ) ;
190188 return pathObj . root === dir && pathObj . base === "" ;
@@ -319,12 +317,14 @@ async function fixPackFile(
319317 queryPackDir : string ,
320318 packRelativePath : string ,
321319) : Promise < void > {
322- const packPath = await getExistingPackFile ( queryPackDir ) ;
320+ const packPath = await getQlPackPath ( queryPackDir ) ;
323321
324322 // This should not happen since we create the pack ourselves.
325323 if ( ! packPath ) {
326324 throw new Error (
327- `Could not find qlpack.yml or codeql-pack.yml file in '${ queryPackDir } '` ,
325+ `Could not find ${ QLPACK_FILENAMES . join (
326+ " or " ,
327+ ) } file in '${ queryPackDir } '`,
328328 ) ;
329329 }
330330 const qlpack = load ( await readFile ( packPath , "utf8" ) ) as QlPack ;
0 commit comments