80 lines
2.0 KiB
TypeScript
80 lines
2.0 KiB
TypeScript
import * as fs from 'fs';
|
|
import * as path from 'path';
|
|
|
|
export function writeToFile(path: string, str: string) {
|
|
fs.writeFileSync(path, str);
|
|
}
|
|
|
|
/**
|
|
* This method is specifically for updating a JSON file using the filesystem
|
|
*
|
|
* @remarks
|
|
* If you are looking to update a JSON file in a tree, look for ./ast-utils#updateJsonInTree
|
|
* @param path Path of the JSON file on the filesystem
|
|
* @param callback Manipulation of the JSON data
|
|
*/
|
|
export function updateJsonFile(path: string, callback: (a: any) => any) {
|
|
const json = readJsonFile(path);
|
|
callback(json);
|
|
writeToFile(path, JSON.stringify(json, null, 2));
|
|
}
|
|
|
|
export function addApp(apps: any[] | undefined, newApp: any): any[] {
|
|
if (!apps) {
|
|
apps = [];
|
|
}
|
|
apps.push(newApp);
|
|
|
|
apps.sort((a: any, b: any) => {
|
|
if (a.name === '$workspaceRoot') return 1;
|
|
if (b.name === '$workspaceRoot') return -1;
|
|
if (a.main && !b.main) return -1;
|
|
if (!a.main && b.main) return 1;
|
|
if (a.name > b.name) return 1;
|
|
return -1;
|
|
});
|
|
|
|
return apps;
|
|
}
|
|
|
|
export function serializeJson(json: any): string {
|
|
return `${JSON.stringify(json, null, 2)}\n`;
|
|
}
|
|
|
|
/**
|
|
* This method is specifically for reading a JSON file from the filesystem
|
|
*
|
|
* @remarks
|
|
* If you are looking to read a JSON file in a Tree, use ./ast-utils#readJsonInTree
|
|
* @param path Path of the JSON file on the filesystem
|
|
*/
|
|
export function readJsonFile(path: string): any {
|
|
return JSON.parse(fs.readFileSync(path, 'utf-8'));
|
|
}
|
|
|
|
export function readCliConfigFile(): any {
|
|
return readJsonFile('.angular-cli.json');
|
|
}
|
|
|
|
export function copyFile(file: string, target: string) {
|
|
const f = path.basename(file);
|
|
const source = fs.createReadStream(file);
|
|
const dest = fs.createWriteStream(path.resolve(target, f));
|
|
source.pipe(dest);
|
|
source.on('error', e => console.error(e));
|
|
}
|
|
|
|
function directoryExists(name) {
|
|
try {
|
|
return fs.statSync(name).isDirectory();
|
|
} catch (e) {
|
|
return false;
|
|
}
|
|
}
|
|
|
|
export function createDirectory(name: string) {
|
|
if (!directoryExists(name)) {
|
|
fs.mkdirSync(name);
|
|
}
|
|
}
|