-
Notifications
You must be signed in to change notification settings - Fork 1
/
SourceFileWriter.ts
39 lines (32 loc) · 1.32 KB
/
SourceFileWriter.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// tslint:disable: non-literal-fs-path
import * as fs from 'fs';
import * as path from 'path';
// tslint:disable-next-line: no-require-imports
import mkdirp = require('mkdirp');
import { TargetFileDescriptor } from './descriptors/TargetFileDescriptor';
import { SourceFileGenerator } from './generators/SourceFileGenerator';
export class SourceFileWriter {
write(targetDescriptor: TargetFileDescriptor): void {
if (!fs.existsSync(targetDescriptor.targetFilePath)) {
// Create new interface file
fs.closeSync(fs.openSync(targetDescriptor.targetFilePath, 'w'));
}
// Create file
const sourceFileGenerator = new SourceFileGenerator();
const targetSourceFile = sourceFileGenerator.createFile(targetDescriptor);
fs.writeFileSync(targetDescriptor.targetFilePath, targetSourceFile.text);
}
writeString(targetDescriptor: TargetFileDescriptor, fileContent: string): void {
if (!fs.existsSync(targetDescriptor.targetFilePath)) {
// Create directory if missing
const dir = path.dirname(targetDescriptor.targetFilePath);
if (!fs.existsSync(dir)) {
mkdirp.sync(dir);
}
// Create new interface file
fs.closeSync(fs.openSync(targetDescriptor.targetFilePath, 'w'));
}
// Create file
fs.writeFileSync(targetDescriptor.targetFilePath, fileContent);
}
}