You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

43 lines
1.3 KiB

"use strict";
const fs = require("fs");
const utils_1 = require("./utils");
const guessEditor_1 = require("./guessEditor");
const openEditor_1 = require("./openEditor");
const error_1 = require("./error");
const enum_1 = require("./enum");
const launchEditor = async (file, options = {}) => {
const { editor } = options;
const { fileName, lineNumber, colNumber } = utils_1.parseFile(file);
if (!fs.existsSync(fileName)) {
return {
success: false,
message: `fileName: ${fileName} not existed`,
};
}
const aliasEditor = enum_1.SUPPORTED_EDITTORS[editor];
const guessedEditor = guessEditor_1.default(aliasEditor);
if (!guessedEditor) {
throw new error_1.default({
editor: editor || 'UNKNOW',
success: false,
code: enum_1.ERROR_CODE.UNKNOWN,
});
}
const { name, commands } = guessedEditor;
utils_1.log('guessedEditor name', name);
utils_1.log('guessedEditor commands', commands);
const params = {
fileName,
lineNumber,
colNumber,
};
const res = await openEditor_1.default({
name,
commands,
...params,
});
utils_1.log('launchEditor result', res);
return res;
};
module.exports = launchEditor;