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