.gitignore added
[dotfiles/.git] / .config / coc / extensions / node_modules / coc-go / lib / commands.js
diff --git a/.config/coc/extensions/node_modules/coc-go/lib/commands.js b/.config/coc/extensions/node_modules/coc-go/lib/commands.js
new file mode 100644 (file)
index 0000000..193ec80
--- /dev/null
@@ -0,0 +1,104 @@
+"use strict";
+Object.defineProperty(exports, "__esModule", { value: true });
+exports.installTools = exports.installImpl = exports.installGoplay = exports.installGotests = exports.installGomodifytags = exports.checkGopls = exports.installGopls = exports.version = void 0;
+const tslib_1 = require("tslib");
+const path_1 = tslib_1.__importDefault(require("path"));
+const fs_1 = tslib_1.__importDefault(require("fs"));
+const coc_nvim_1 = require("coc.nvim");
+const tools_1 = require("./utils/tools");
+const checktag_1 = tslib_1.__importDefault(require("./utils/checktag"));
+const binaries_1 = require("./binaries");
+const versions_1 = require("./utils/versions");
+async function version() {
+    const v1 = await pkgVersion();
+    const v2 = await goplsVersion() || 'unknown';
+    coc_nvim_1.window.showMessage(`Version: coc-go ${v1}; gopls ${v2}`, 'more');
+}
+exports.version = version;
+async function installGopls(client) {
+    await tools_1.installGoBin(binaries_1.GOPLS, true, goplsVersion);
+    if (client.needsStop()) {
+        await client.stop();
+        client.restart();
+    }
+}
+exports.installGopls = installGopls;
+async function checkGopls(client, mode) {
+    const [current, latest] = await Promise.all([
+        goplsVersion(),
+        checktag_1.default("golang/tools", /^gopls\//),
+    ]);
+    try {
+        let install = false;
+        switch (versions_1.compareVersions(latest, current)) {
+            case 0:
+                coc_nvim_1.window.showMessage(`[gopls] up-to-date: ${current}`, 'more');
+                break;
+            case 1:
+                switch (mode) {
+                    case 'install':
+                        install = true;
+                        break;
+                    case 'ask':
+                        install = await coc_nvim_1.window.showPrompt(`[gopls] Install update? ${current} => ${latest}`);
+                        break;
+                    case 'inform':
+                        coc_nvim_1.window.showMessage(`[gopls] update available: ${current} => ${latest}`);
+                        break;
+                }
+                break;
+            case -1:
+                coc_nvim_1.window.showMessage(`[gopls] current: ${current} | latest: ${latest}`, 'more');
+                break;
+        }
+        if (install) {
+            await installGopls(client);
+        }
+    }
+    catch (e) {
+        coc_nvim_1.window.showMessage(e.toString(), 'error');
+    }
+}
+exports.checkGopls = checkGopls;
+async function pkgVersion() {
+    try {
+        const pkgPath = path_1.default.resolve(__dirname, '..', 'package.json');
+        const pkgContent = await fs_1.default.promises.readFile(pkgPath, 'utf8');
+        return JSON.parse(pkgContent).version;
+    }
+    catch (err) {
+        console.error(err);
+    }
+    return '';
+}
+async function goplsVersion() {
+    const [, versionOut] = await tools_1.runGoTool("gopls", ["version"]);
+    const m = versionOut.trim().match(/\s{4}golang\.org\/x\/tools\/gopls@(v?\d+\.\d+\.\d+) .*/);
+    if (m && versions_1.isValidVersion(m[1])) {
+        return m[1].replace(/^v/, '');
+    }
+    return '';
+}
+async function installGomodifytags() {
+    await tools_1.installGoBin(binaries_1.GOMODIFYTAGS, true);
+}
+exports.installGomodifytags = installGomodifytags;
+async function installGotests() {
+    await tools_1.installGoBin(binaries_1.GOTESTS, true);
+}
+exports.installGotests = installGotests;
+async function installGoplay() {
+    await tools_1.installGoBin(binaries_1.GOPLAY, true);
+}
+exports.installGoplay = installGoplay;
+async function installImpl() {
+    await tools_1.installGoBin(binaries_1.IMPL, true);
+}
+exports.installImpl = installImpl;
+async function installTools() {
+    for (const tool of binaries_1.TOOLS) {
+        await tools_1.installGoBin(tool, true);
+    }
+}
+exports.installTools = installTools;
+//# sourceMappingURL=commands.js.map
\ No newline at end of file