Как написать условие JavaScript, которое сообщает, если команды git успешны или терпят неудачу в терминале? - PullRequest
1 голос
/ 05 июля 2019

Я новичок

Я пытаюсь создать расширение VS Code, которое будет выполнять для меня 4 команды git (checkout, pull, merge и push).Моя проблема в моем состоянии ... Я хочу, чтобы расширение остановилось, если одна из команд git завершилась неудачно в терминале, поэтому я пытаюсь создать условие JavaScript if / else, которое сообщит, если команда git выполнена успешно или нет в терминалепоэтому расширение остановится, если команды git не пройдут, и продолжит работу, если нет.

Я посмотрел всюду в Google и не нашел ничего, что мне помогло бы.В моем коде я сейчас написал условие terminal.error() == true, даже если знаю, что эта команда не имеет смысла.Может кто-нибудь помочь мне или если вы знаете другой способ сделать это, пожалуйста, скажите мне.

context.subscriptions.push(vscode.commands.registerCommand('terminalTest.TS', () => {
    const terminal = vscode.window.createTerminal(`TS Terminal #${NEXT_TERM_ID++}`);
    vscode.window.showInformationMessage('Terminal is now open');

    terminal.sendText("git checkout master");
    if (terminal.error() == true) {
        vscode.window.showInformationMessage('Failed to checkout');
    }
    else {
        terminal.sendText('git pull');

1 Ответ

1 голос
/ 05 июля 2019

Вы хотели бы посмотреть код ответа для этой команды оболочки git checkout master. В API терминала VS Code я не могу найти способ сделать это (хотя я не уверен, что это невозможно).

Так что, насколько я могу судить по результатам поиска, в расширении VSCode у вас будет доступ к библиотекам Node.js. Это означает, что вы можете выполнить команду, используя библиотеку child_process. При необходимости эта библиотека может использовать коды ответов для команд.

const child_process = require("child_process")
child_process.exec("git checkout master", (error, stdout, stderr) => {
    if (error == 0) {
        // Sucess, now onto 'git pull'
    } else {
        // Failure, abort
    }
});

Надеюсь, для вашего проекта будет возможна другая библиотека.

И обратите внимание, если вам нужна дополнительная информация о том, почему git checkout master не удалось, команда использует разные коды ответа для разных вещей (например, 128 для git-репо) или вы можете посмотреть stdout / stderr.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...