nx/packages/bazel/src/utils/fileutils.ts
Nitin Vericherla 49525efe3e feat(nx): support to generate visualization graph
`npm run dep-graph` outputs a visual dependency graph
2018-04-06 20:51:02 -04:00

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);
}
}