sortier
Version:
An opinionated code sorter
54 lines (53 loc) • 2.47 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.formatFile = formatFile;
const tslib_1 = require("tslib");
const find_up_1 = require("find-up");
const path_1 = tslib_1.__importDefault(require("path"));
const index_js_1 = require("../../config/index.js");
const ignored_file_error_js_1 = require("../../error/ignored-file-error.js");
const unsupported_extension_error_js_1 = require("../../error/unsupported-extension-error.js");
const language_js_1 = require("../../language.js");
const file_utils_js_1 = require("../../utilities/file-utils.js");
const log_utils_js_1 = require("../../utilities/log-utils.js");
const index_js_2 = require("../is-ignored/index.js");
function formatFile(filename, options = (0, index_js_1.resolveOptions)(filename)) {
const language = (0, language_js_1.getReprinterForFile)(filename);
if (language == null) {
throw new unsupported_extension_error_js_1.UnsupportedExtensionError(filename);
}
const isFileIgnored = isIgnoredFile(filename);
if (isFileIgnored) {
throw new ignored_file_error_js_1.IgnoredFileError(filename);
}
const originalFileContents = file_utils_js_1.FileUtils.readFileContents(filename);
const newFileContents = language.getRewrittenContents(filename, originalFileContents, options);
if (options.isTestRun == null || !options.isTestRun) {
try {
file_utils_js_1.FileUtils.writeFileContents(filename, newFileContents);
}
catch (writeError) {
log_utils_js_1.LogUtils.log(log_utils_js_1.LoggerVerboseOption.Diagnostic, `Error writing file ${filename}`, writeError);
throw writeError;
}
}
}
function isIgnoredFile(filename) {
// Find the nearest sortier ignore file
const ignoreFilePath = (0, find_up_1.findUpSync)(".sortierignore", {
cwd: filename,
});
if (ignoreFilePath != null) {
try {
const ignoreText = file_utils_js_1.FileUtils.readFileContents(ignoreFilePath).trim();
const relativeFilePath = path_1.default.relative(path_1.default.resolve("."), filename);
const result = (0, index_js_2.isIgnored)(ignoreText, relativeFilePath);
return result;
}
catch (readError) {
log_utils_js_1.LogUtils.log(log_utils_js_1.LoggerVerboseOption.Diagnostic, `Error reading file ${filename}`, readError);
throw readError;
}
}
return false;
}