Создать Zip-файл с именем переменной строки Nodejs - PullRequest
0 голосов
/ 09 апреля 2020

Я создаю zip-файл, имя которого будет основано на значении GIT repo ha sh и дате / времени. До сих пор мне удавалось успешно создать zip-файл, но присвоение имени zip-файлу на основе переменной, похоже, не работает, поскольку child_process.execFile, похоже, использует только строковый литерал для имени. Смотрите ниже:

const child_process = require('child_process').execFile;

const repoHash = (`git -C ./repository/myRepository show-ref --hash refs/heads/master`);
const timestamp = Date.now() - 14400000;
const date = new Date(timestamp);
const iso = date.toISOString().match(/(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})/);
const revision = child_process(repoHash).toString().trim();
const myTStamp = '_' + iso[1] + '_' + iso[2] + ".zip";

//Below zipName Resolves to "05baf31c20d15edb2c477fa4e7bd2427504d3dba_2020-04-09_13:27:26.zip"
const zipName = revision+myTStamp;  
const sourceDir = "./repository/myRepository";

//Works using a string literal and specifying name "./newZip.zip"
const newFile = () => {
    child_process('zip', ['-r', "./newZip.zip", sourceDir], function (err) {
        console.log(err);
    });
};

newFile();

//Does Not Work using "zipName" variable
const newFile = () => {
    child_process('zip', ['-r', zipName, sourceDir], function (err) {
        console.log(err);
    });
};

newFile();

Буду признателен за любые идеи о том, как я могу получить этот zip-файл с соответствующим названием.

1 Ответ

0 голосов
/ 09 апреля 2020

Как сказал Dr_Derp в их комментарии, мне пришлось убрать «:» из времени. В итоге я заменил «:» на «_», см. Ниже:

const repoHash = (`git -C ./repository/myRepository show-ref --hash refs/heads/master`);
const timestamp = Date.now() - 14400000;
const date = new Date(timestamp);
const iso = date.toISOString().match(/(\d{4}\-\d{2}\-\d{2})T(\d{2}:\d{2}:\d{2})/);
const revision = child_process(repoHash).toString().trim(); 
const sourceDir = "./repository/myRepository";

//Added 2 more variables to make it easier to read though new variables were not necessary
const time = iso[2].replace(/:/g, "_");
const date = iso[1];
//Output of "myTStamp" below:  05baf31c20d15edb2c477fa4e7bd2427504d3dba_DATE_2020-04-09_TIME_14_54_15.zip
const myTStamp = '_DATE_' + date + '_TIME_' + time + ".zip";
const zipName = revision+myTStamp;

const newFile = () => {
    child_process('zip', ['-r', zipName, sourceDir], function (err) {
        console.log(err);
    });
};

newFile();

Еще раз спасибо Dr_Derp!

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