Skip to content

Commit c5a6d87

Browse files
committed
Refactor codegen minor
1 parent 43a13f6 commit c5a6d87

File tree

2 files changed

+34
-24
lines changed

2 files changed

+34
-24
lines changed

src/resxProvider.ts

Lines changed: 5 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import { getNonce } from './utilities/getNonce';
55
import { printChannelOutput } from './extension';
66
import { newResourceInput } from './addNewResource';
77
import { AppConstants } from './utilities/constants';
8-
import { generateDesignerCode } from './utilities/designerGenerator';
8+
import { generateAndUpdateDesignerFile } from './utilities/generateCode';
99

1010
export class ResxProvider implements vscode.CustomTextEditorProvider {
1111

@@ -134,32 +134,13 @@ export class ResxProvider implements vscode.CustomTextEditorProvider {
134134
resxContent
135135
);
136136

137-
// Check if code generation is enabled
138-
const config = vscode.workspace.getConfiguration('resx-editor');
139-
const generateCode = config.get<boolean>('generateCode', true);
140-
141-
if (generateCode) {
142-
// Generate and update the Designer.cs file
143-
const designerPath = document.uri.fsPath.replace('.resx', '.Designer.cs');
144-
const designerUri = vscode.Uri.file(designerPath);
145-
const designerCode = generateDesignerCode(document.uri.fsPath, parsedJson);
146-
147-
try {
148-
await vscode.workspace.fs.stat(designerUri);
149-
// File exists, write contents directly
150-
printChannelOutput(`Updating existing Designer file at ${designerPath}`, true);
151-
await vscode.workspace.fs.writeFile(designerUri, Buffer.from(designerCode, 'utf8'));
152-
} catch {
153-
// File doesn't exist, create it
154-
printChannelOutput(`Creating new Designer file at ${designerPath}`, true);
155-
await vscode.workspace.fs.writeFile(designerUri, Buffer.from(designerCode, 'utf8'));
156-
}
157-
} else {
158-
printChannelOutput('Code generation is disabled, skipping Designer.cs file update', true);
159-
}
137+
// Generate Designer.cs file if enabled
138+
await generateAndUpdateDesignerFile(document, parsedJson);
160139

161140
const success = await vscode.workspace.applyEdit(edit);
162141
if (success) {
142+
const config = vscode.workspace.getConfiguration('resx-editor');
143+
const generateCode = config.get<boolean>('generateCode', true);
163144
printChannelOutput(`Successfully updated RESX${generateCode ? ' and Designer' : ''} files`, true);
164145
} else {
165146
printChannelOutput(`Failed to apply workspace edits`, true);

src/utilities/generateCode.ts

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
import * as vscode from 'vscode';
2+
import { generateDesignerCode } from './designerGenerator';
3+
import { printChannelOutput } from '../extension';
4+
5+
export async function generateAndUpdateDesignerFile(document: vscode.TextDocument, parsedJson: any): Promise<void> {
6+
// Check if code generation is enabled
7+
const config = vscode.workspace.getConfiguration('resx-editor');
8+
const generateCode = config.get<boolean>('generateCode', false);
9+
10+
if (generateCode) {
11+
// Generate and update the Designer.cs file
12+
const designerPath = document.uri.fsPath.replace('.resx', '.Designer.cs');
13+
const designerUri = vscode.Uri.file(designerPath);
14+
const designerCode = generateDesignerCode(document.uri.fsPath, parsedJson);
15+
16+
try {
17+
await vscode.workspace.fs.stat(designerUri);
18+
// File exists, write contents directly
19+
printChannelOutput(`Updating existing Designer file at ${designerPath}`, true);
20+
await vscode.workspace.fs.writeFile(designerUri, Buffer.from(designerCode, 'utf8'));
21+
} catch {
22+
// File doesn't exist, create it
23+
printChannelOutput(`Creating new Designer file at ${designerPath}`, true);
24+
await vscode.workspace.fs.writeFile(designerUri, Buffer.from(designerCode, 'utf8'));
25+
}
26+
} else {
27+
printChannelOutput('Code generation is disabled, skipping Designer.cs file update', true);
28+
}
29+
}

0 commit comments

Comments
 (0)