Я пытаюсь создать часть скрипта сборки, который создает файл, содержащий информацию о git repo. Как получить результат команд 2+ в виде строки.using bash/node для извлечения командного вывода
var fs = require('fs');
var exec = require('child_process').exec;
var cmd = 'echo $(git rev-parse --abbrev-ref HEAD)|$(git log -1 --format=%cd)|$(git rev-parse HEAD)';
exec(cmd, function(error, stdout, stderr) {
fs.writeFile("src/test.js", stdout, function(err) {
if(err) return console.log(err);
console.log(stdout);
});
});
Я знаю, проблема в моем cmd
. Я просто не знаю, как должно выглядеть строка, например <branch>|<date>|<commit-hash>
эта команда работает, если я запускаю ее непосредственно в терминале. Это не работает, если я поместил его в свой скрипт и запустил его, 'node write_git_info.js'. Он буквально помещает '' $ (git rev-parse -abbrev-ref HEAD) | $ (git log -1 --format =% cd) | $ (git rev-parse HEAD) "в файл. Нет никаких изменений. – David
, делая это как @chepner, выводит только последнюю команду. Я ищу некоторую конкатенацию строк. – David
Да, вы правы, я поспешил принять подход @ chepner. Я вернул эту часть своего ответа. Я попробовал это прямо сейчас в REPL, и он работает точно так, как указано. –