diff options
Diffstat (limited to '.config/coc/extensions/node_modules/coc-go/lib/utils/tools.js')
| -rw-r--r-- | .config/coc/extensions/node_modules/coc-go/lib/utils/tools.js | 149 |
1 files changed, 0 insertions, 149 deletions
diff --git a/.config/coc/extensions/node_modules/coc-go/lib/utils/tools.js b/.config/coc/extensions/node_modules/coc-go/lib/utils/tools.js deleted file mode 100644 index 375db4a..0000000 --- a/.config/coc/extensions/node_modules/coc-go/lib/utils/tools.js +++ /dev/null @@ -1,149 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.execTool = exports.commandExists = exports.runBin = exports.runGoTool = exports.goBinPath = exports.installGoBin = void 0; -const tslib_1 = require("tslib"); -const path_1 = tslib_1.__importDefault(require("path")); -const fs_1 = tslib_1.__importDefault(require("fs")); -const util_1 = tslib_1.__importDefault(require("util")); -const child_process_1 = require("child_process"); -const coc_nvim_1 = require("coc.nvim"); -const which_1 = tslib_1.__importDefault(require("which")); -const config_1 = require("./config"); -const versions_1 = require("./versions"); -const runExec = util_1.default.promisify(child_process_1.exec); -const isWin = process.platform === 'win32'; -async function installGoBin(source, force = false, getVersion) { - const name = goBinName(source); - if (!force && await goBinExists(name)) { - return true; - } - const statusItem = coc_nvim_1.window.createStatusBarItem(90, { progress: true }); - statusItem.text = `Installing '${name}'`; - statusItem.show(); - const success = await goInstall(source) && await goBinExists(name); - if (success) { - const vname = getVersion ? `${name}@${await getVersion()}` : name; - coc_nvim_1.window.showMessage(`Installed '${vname}'`); - } - else { - coc_nvim_1.window.showMessage(`Failed to install '${name}'`, 'error'); - } - statusItem.hide(); - return success; -} -exports.installGoBin = installGoBin; -async function goInstall(source) { - return await goVersionOrLater('1.17.0') - ? goRun(`install ${source}@latest`) - : goRun(`get ${source}@latest`); -} -async function goVersionOrLater(version) { - try { - return (0, versions_1.compareVersions)(version, await getGoVersion()) < 0; - } - catch (err) { - // mute - } - return false; -} -async function getGoVersion() { - try { - const [, out] = await runBin('go', ['version']); - return out.trim().match(/^go version go(\S+) .*$/)[1]; - } - catch (err) { - // mute - } - return ''; -} -async function goBinPath(source) { - const name = goBinName(source); - return path_1.default.join(await (0, config_1.configDir)('bin'), name + (isWin ? ".exe" : "")); -} -exports.goBinPath = goBinPath; -async function runGoTool(name, args = []) { - return runBin(await goBinPath(name), args); -} -exports.runGoTool = runGoTool; -async function runBin(bin, args = []) { - return new Promise((resolve) => { - const p = (0, child_process_1.spawn)(bin, args); - let out = ""; - p.stdout.on('data', (data) => out += data); - p.on("close", code => resolve([code, out])); - }); -} -exports.runBin = runBin; -async function commandExists(command) { - if (path_1.default.isAbsolute(command)) { - return fileExists(command); - } - return new Promise((resolve) => { (0, which_1.default)(command, (err) => resolve(err == null)); }); -} -exports.commandExists = commandExists; -//////////////////////////////////////////////////////////////////////////////// -async function goBinExists(source) { - const name = goBinName(source); - const bin = await goBinPath(name); - return fileExists(bin); -} -async function fileExists(path) { - return new Promise((resolve) => fs_1.default.open(path, 'r', (err) => resolve(err === null))); -} -async function goRun(args) { - const gopath = await (0, config_1.configDir)('tools'); - const gobin = await (0, config_1.configDir)('bin'); - const env = { - GO111MODULE: 'on', - GOBIN: gobin, - GOPATH: gopath, - GOROOT: '', - GOTOOLDIR: '', - }; - const cmd = isWin - ? `go ${args}` - : `env GOBIN="${gobin}" go ${args}`; - const opts = { - env: Object.assign({}, process.env, env), - cwd: gopath, - shell: isWin ? undefined : process.env.SHELL, - windowsHide: true, - }; - try { - await runExec(cmd, opts); - } - catch (ex) { - coc_nvim_1.window.showMessage(ex, 'error'); - return false; - } - return true; -} -async function execTool(source, args, input) { - const [bin, name] = await Promise.all([ - goBinPath(source), - goBinName(source), - ]); - if (!await commandExists(bin)) { - await installGoBin(source); - } - return new Promise((resolve, reject) => { - const p = (0, child_process_1.execFile)(bin, args, { cwd: coc_nvim_1.workspace.cwd }, async (err, stdout, stderr) => { - if (err && err.code === "ENOENT") { - return reject(`Error: Command ${name} not found! Run "CocCommand go.install.${name}" to install it and try again.`); - } - if (err) { - return reject(stderr.toString()); - } - return resolve(stdout.toString()); - }); - if (p.pid) { - p.stdin.end(input); - } - }); -} -exports.execTool = execTool; -//////////////////////////////////////////////////////////////////////////////// -function goBinName(source) { - return source.replace(/\/\.\.\.$/, '').split('/').pop(); -} -//# sourceMappingURL=tools.js.map
\ No newline at end of file |
