Skip to content

Commit b023431

Browse files
committed
Add feature flag for Ruby in the model editor
This only makes Ruby available in the model editor when the following is set in the settings.json (workspace or user) file: ```json5 { "codeQL.model.enableRuby": true, } ```
1 parent 9c5a963 commit b023431

File tree

2 files changed

+20
-11
lines changed

2 files changed

+20
-11
lines changed

extensions/ql-vscode/src/config.ts

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -707,12 +707,14 @@ const LLM_GENERATION_BATCH_SIZE = new Setting(
707707
MODEL_SETTING,
708708
);
709709
const EXTENSIONS_DIRECTORY = new Setting("extensionsDirectory", MODEL_SETTING);
710+
const ENABLE_RUBY = new Setting("enableRuby", MODEL_SETTING);
710711

711712
export interface ModelConfig {
712713
flowGeneration: boolean;
713714
llmGeneration: boolean;
714715
getExtensionsDirectory(languageId: string): string | undefined;
715716
showMultipleModels: boolean;
717+
enableRuby: boolean;
716718
}
717719

718720
export class ModelConfigListener extends ConfigListener implements ModelConfig {
@@ -745,4 +747,8 @@ export class ModelConfigListener extends ConfigListener implements ModelConfig {
745747
public get showMultipleModels(): boolean {
746748
return isCanary();
747749
}
750+
751+
public get enableRuby(): boolean {
752+
return !!ENABLE_RUBY.getValue<boolean>();
753+
}
748754
}

extensions/ql-vscode/src/model-editor/model-editor-module.ts

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import { pickExtensionPack } from "./extension-pack-picker";
1111
import { showAndLogErrorMessage } from "../common/logging";
1212
import { dir } from "tmp-promise";
1313

14-
import { isQueryLanguage } from "../common/query-language";
14+
import { isQueryLanguage, QueryLanguage } from "../common/query-language";
1515
import { DisposableObject } from "../common/disposable-object";
1616
import { MethodsUsagePanel } from "./methods-usage/methods-usage-panel";
1717
import { Method, Usage } from "./method";
@@ -23,7 +23,7 @@ import { ModelEditorViewTracker } from "./model-editor-view-tracker";
2323
import { ModelConfigListener } from "../config";
2424
import { ModelingEvents } from "./modeling-events";
2525

26-
const SUPPORTED_LANGUAGES: string[] = ["java", "csharp", "ruby"];
26+
const SUPPORTED_LANGUAGES: string[] = ["java", "csharp"];
2727

2828
export class ModelEditorModule extends DisposableObject {
2929
private readonly queryStorageDir: string;
@@ -32,6 +32,7 @@ export class ModelEditorModule extends DisposableObject {
3232
private readonly editorViewTracker: ModelEditorViewTracker<ModelEditorView>;
3333
private readonly methodsUsagePanel: MethodsUsagePanel;
3434
private readonly methodModelingPanel: MethodModelingPanel;
35+
private readonly modelConfig: ModelConfigListener;
3536

3637
private constructor(
3738
private readonly app: App,
@@ -56,6 +57,7 @@ export class ModelEditorModule extends DisposableObject {
5657
this.editorViewTracker,
5758
),
5859
);
60+
this.modelConfig = this.push(new ModelConfigListener());
5961

6062
this.registerToModelingEvents();
6163
}
@@ -125,10 +127,13 @@ export class ModelEditorModule extends DisposableObject {
125127
}
126128

127129
const language = db.language;
128-
if (
129-
!SUPPORTED_LANGUAGES.includes(language) ||
130-
!isQueryLanguage(language)
131-
) {
130+
131+
// Ruby is only enabled when the config setting is set
132+
const isSupportedLanguage =
133+
SUPPORTED_LANGUAGES.includes(language) ||
134+
(language === QueryLanguage.Ruby && this.modelConfig.enableRuby);
135+
136+
if (!isSupportedLanguage || !isQueryLanguage(language)) {
132137
void showAndLogErrorMessage(
133138
this.app.logger,
134139
`The CodeQL Model Editor is not supported for ${language} databases.`,
@@ -167,12 +172,10 @@ export class ModelEditorModule extends DisposableObject {
167172
return;
168173
}
169174

170-
const modelConfig = this.push(new ModelConfigListener());
171-
172175
const modelFile = await pickExtensionPack(
173176
this.cliServer,
174177
db,
175-
modelConfig,
178+
this.modelConfig,
176179
this.app.logger,
177180
progress,
178181
maxStep,
@@ -196,7 +199,7 @@ export class ModelEditorModule extends DisposableObject {
196199
this.cliServer,
197200
queryDir,
198201
language,
199-
modelConfig,
202+
this.modelConfig,
200203
);
201204
if (!success) {
202205
await cleanupQueryDir();
@@ -225,7 +228,7 @@ export class ModelEditorModule extends DisposableObject {
225228
this.modelingStore,
226229
this.modelingEvents,
227230
this.editorViewTracker,
228-
modelConfig,
231+
this.modelConfig,
229232
this.databaseManager,
230233
this.cliServer,
231234
this.queryRunner,

0 commit comments

Comments
 (0)