@reactionable/cli
Version:
97 lines • 3.64 kB
JavaScript
;
var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
return c > 3 && r && Object.defineProperty(target, key, r), r;
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.FileService = void 0;
const fs_1 = require("fs");
const path_1 = require("path");
const inversify_1 = require("inversify");
const shelljs_1 = require("shelljs");
let FileService = class FileService {
touchFileSync(path) {
const time = new Date();
try {
(0, fs_1.utimesSync)(path, time, time);
}
catch (err) {
(0, fs_1.closeSync)((0, fs_1.openSync)(path, 'w'));
}
}
fileExistsSync(path) {
if (!(0, fs_1.existsSync)(path)) {
return false;
}
return (0, fs_1.statSync)(path).isFile();
}
dirExistsSync(path) {
if (!(0, fs_1.existsSync)(path)) {
return false;
}
return (0, fs_1.statSync)(path).isDirectory();
}
fileDirExistsSync(path) {
return this.dirExistsSync((0, path_1.dirname)(path));
}
assertDirExists(path) {
if (!this.dirExistsSync(path)) {
throw new Error(`Directory "${path}" does not exist`);
}
return (0, fs_1.realpathSync)(path);
}
assertFileExists(path) {
if (!this.fileExistsSync(path)) {
throw new Error(`File "${path}" does not exist`);
}
return (0, fs_1.realpathSync)(path);
}
replaceFileExtension(filePath, newExtension, mustExist = false) {
if (!this.fileExistsSync(filePath)) {
if (mustExist) {
throw new Error(`File "${filePath}" does not exist`);
}
return;
}
const newFilePath = (0, path_1.resolve)((0, path_1.dirname)(filePath), `${(0, path_1.basename)(filePath, (0, path_1.extname)(filePath))}.${newExtension.replace(/^[\s.]+/, '')}`);
(0, shelljs_1.mv)(filePath, newFilePath);
}
mkdirSync(dirpath, recursive) {
if (this.dirExistsSync(dirpath)) {
return;
}
if (!this.fileDirExistsSync(dirpath)) {
const parentDirectory = (0, path_1.dirname)(dirpath);
if (!recursive) {
throw new Error(`Unable to create directory "${dirpath}" in unexisting directory "${parentDirectory}"`);
}
}
(0, fs_1.mkdirSync)(dirpath, { recursive });
}
rmdirSync(dirpath) {
if (!this.dirExistsSync(dirpath)) {
return;
}
const list = (0, fs_1.readdirSync)(dirpath);
for (const filepath of list) {
const filename = (0, path_1.resolve)(dirpath, filepath);
const stat = (0, fs_1.statSync)(filename);
if (filename == '.' || filename == '..') {
}
else if (stat.isDirectory()) {
this.rmdirSync(filename);
}
else {
(0, fs_1.unlinkSync)(filename);
}
}
(0, fs_1.rmdirSync)(dirpath);
}
};
FileService = __decorate([
(0, inversify_1.injectable)()
], FileService);
exports.FileService = FileService;
//# sourceMappingURL=FileService.js.map