ssh-deploy/src/rsyncCli.js

51 lines
1.4 KiB
JavaScript
Raw Normal View History

2022-12-30 17:23:23 +03:00
const { sync: commandExists } = require("command-exists");
const { exec, execSync } = require("child_process");
const validateRsync = (callback = () => {}) => {
2022-12-30 17:23:23 +03:00
const rsyncCli = commandExists("rsync");
2022-12-31 12:00:32 +03:00
if (rsyncCli) {
console.log('⚠️ [CLI] Rsync exists', execSync("rsync --version"));
return callback();
}
2022-12-30 16:29:31 +03:00
console.log('⚠️ [CLI] Rsync doesn\'t exists. Start installation with "apt-get" \n');
2022-12-31 12:00:32 +03:00
try {
2022-12-30 17:23:23 +03:00
execSync("sudo apt-get update");
2022-12-31 12:00:32 +03:00
} catch (e) {
console.log( "⚠️ [CLI] Cant run . apt-get update. Skipping ...". e.message);
}
2022-12-31 12:00:32 +03:00
exec("sudo apt-get --no-install-recommends install rsync", (err, data, stderr) => {
if (err) {
console.log("⚠️ [CLI] Rsync installation failed. Aborting ... ", err.message);
process.abort();
} else {
console.log("✅ [CLI] Rsync installed. \n", data, stderr);
callback();
}
});
};
const validateInputs = (inputs) => {
const inputKeys = Object.keys(inputs);
const validInputs = inputKeys.filter((inputKey) => {
const inputValue = inputs[inputKey];
if (!inputValue) {
console.error(`⚠️ [INPUTS] ${inputKey} is mandatory`);
}
return inputValue;
});
if (validInputs.length !== inputKeys.length) {
2022-12-30 17:23:23 +03:00
console.error("⚠️ [INPUTS] Inputs not valid, aborting ...");
process.abort();
}
};
module.exports = {
validateRsync,
2022-12-30 17:23:23 +03:00
validateInputs,
2020-09-19 00:26:31 +03:00
};