microsoft/vscode-react-native

Public

mirrored from https://github.com/microsoft/vscode-react-nativeAvailable

CodeCommitsIssuesPull requestsActionsInsightsSecurity
7cbc24ac51cff9c2ab41a1fae94835aed9156c79

Branches

Tags

  • No tags available.
0Branches0Tags
Go to file
Add file
Code

Clone

HTTPS

Download ZIP

src/utils/node/fileSystem.ts

73lines · modeblame

3fb37ad5unknown10 years ago1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the MIT license. See LICENSE file in the project root for details.
3
4import * as fs from "fs";
bc7a32ceJimmy Thomson10 years ago5import * as path from "path";
3fb37ad5unknown10 years ago6import * as Q from "q";
7
8export class FileSystem {
9
10public ensureDirectory(dir: string): Q.Promise<void> {
11return Q.nfcall(fs.stat, dir).then((stat: fs.Stats): void => {
12if (stat.isDirectory()) {
13return;
14} else {
15throw new Error(`Expected ${dir} to be a directory`);
16}
17}, (err: Error & {code?: string}): Q.Promise<any> => {
18if (err && err.code === "ENOENT") {
19return Q.nfcall(fs.mkdir, dir);
20} else {
21throw err;
22}
23});
24}
25
26public ensureFileWithContents(file: string, contents: string): Q.Promise<void> {
27return Q.nfcall(fs.stat, file).then((stat: fs.Stats): void => {
28if (!stat.isFile()) {
29throw new Error(`Expected ${file} to be a file`);
30}
31// The file already exists, assume the contents are good and do not touch it.
32}, (err: Error & {code?: string}): Q.Promise<any> => {
33if (err && err.code === "ENOENT") {
34return Q.nfcall(fs.writeFile, file, contents);
35} else {
36throw err;
37}
38});
39}
40
41public fileExistsSync(filename: string) {
42try {
43fs.lstatSync(filename);
44return true;
45} catch (error) {
46return false;
47}
48}
49
50public deleteFileIfExistsSync(filename: string) {
51if (this.fileExistsSync(filename)) {
52fs.unlinkSync(filename);
53}
54}
55
5d4d4de0digeff10 years ago56public readFile(filename: string, encoding: string = "utf8"): Q.Promise<string> {
0555a744digeff10 years ago57return Q.nfcall<string>(fs.readFile, filename, encoding);
3fb37ad5unknown10 years ago58}
4677921cdigeff10 years ago59
60public writeFile(filename: string, data: any): Q.Promise<void> {
0555a744digeff10 years ago61return Q.nfcall<void>(fs.writeFile, filename, data);
4677921cdigeff10 years ago62}
bc7a32ceJimmy Thomson10 years ago63
afc46a73Jimmy Thomson10 years ago64public findFilesByExtension(folder: string, extension: string): Q.Promise<string[]> {
bc7a32ceJimmy Thomson10 years ago65return Q.nfcall(fs.readdir, folder).then((files: string[]) => {
66const extFiles = files.filter((file: string) => path.extname(file) === `.${extension}`);
67if (extFiles.length === 0) {
68throw new Error(`Unable to find any ${extension} files.`);
69}
afc46a73Jimmy Thomson10 years ago70return extFiles;
bc7a32ceJimmy Thomson10 years ago71});
72}
3fb37ad5unknown10 years ago73}