@@ -10,16 +10,21 @@ import { CachingKind, getCachingKind } from "./caching-utils";
1010import { CodeQL } from "./codeql" ;
1111import { shouldPerformDiffInformedAnalysis } from "./diff-informed-analysis-utils" ;
1212import { Feature , FeatureEnablement } from "./feature-flags" ;
13+ import { getGitRoot } from "./git-utils" ;
1314import { Language , parseLanguage } from "./languages" ;
1415import { Logger } from "./logging" ;
15- import { OverlayDatabaseMode } from "./overlay-database-utils" ;
16+ import {
17+ CODEQL_OVERLAY_MINIMUM_VERSION ,
18+ OverlayDatabaseMode ,
19+ } from "./overlay-database-utils" ;
1620import { RepositoryNwo } from "./repository" ;
1721import { downloadTrapCaches } from "./trap-caching" ;
1822import {
1923 GitHubVersion ,
2024 prettyPrintPack ,
2125 ConfigurationError ,
2226 BuildMode ,
27+ codeQlVersionAtLeast ,
2328} from "./util" ;
2429
2530// Property names from the user-supplied config file.
@@ -742,6 +747,38 @@ async function getOverlayDatabaseMode(
742747 buildMode : BuildMode | undefined ,
743748 logger : Logger ,
744749) : Promise < OverlayDatabaseMode > {
750+ const overlayDatabaseMode = process . env . CODEQL_OVERLAY_DATABASE_MODE ;
751+
752+ if (
753+ overlayDatabaseMode === OverlayDatabaseMode . Overlay ||
754+ overlayDatabaseMode === OverlayDatabaseMode . OverlayBase
755+ ) {
756+ if ( buildMode !== BuildMode . None ) {
757+ logger . warning (
758+ `Cannot build an ${ overlayDatabaseMode } database because ` +
759+ `build-mode is set to "${ buildMode } " instead of "none". ` +
760+ "Falling back to creating a normal full database instead." ,
761+ ) ;
762+ return OverlayDatabaseMode . None ;
763+ }
764+ if ( ! ( await codeQlVersionAtLeast ( codeql , CODEQL_OVERLAY_MINIMUM_VERSION ) ) ) {
765+ logger . warning (
766+ `Cannot build an ${ overlayDatabaseMode } database because ` +
767+ `the CodeQL CLI is older than ${ CODEQL_OVERLAY_MINIMUM_VERSION } . ` +
768+ "Falling back to creating a normal full database instead." ,
769+ ) ;
770+ return OverlayDatabaseMode . None ;
771+ }
772+ if ( ( await getGitRoot ( sourceRoot ) ) === undefined ) {
773+ logger . warning (
774+ `Cannot build an ${ overlayDatabaseMode } database because ` +
775+ `the source root "${ sourceRoot } " is not inside a git repository. ` +
776+ "Falling back to creating a normal full database instead." ,
777+ ) ;
778+ return OverlayDatabaseMode . None ;
779+ }
780+ return overlayDatabaseMode as OverlayDatabaseMode ;
781+ }
745782 return OverlayDatabaseMode . None ;
746783}
747784
0 commit comments