improve retry

This commit is contained in:
Eugenio Romano
2018-09-11 15:59:26 +01:00
parent 376de94c16
commit e99273139a
2 changed files with 43 additions and 38 deletions

View File

@@ -21,37 +21,43 @@ replaceHrefInIndex = (folder) => {
}); });
} }
unzipRetry = (tentativeNumber, outputFolder) => { unzipRetry = (tentativeNumber, outputFolder, url) => {
var file = fs.createWriteStream('demo.zip');
http.get(`http://${url}`, (response) => {
response.pipe(file);
file.on('finish', async () => {
console.log('Unzip Demo ' + path.join(__dirname, '../demo.zip')); console.log('Unzip Demo ' + path.join(__dirname, '../demo.zip'));
setTimeout(() => { setTimeout(() => {
fs.createReadStream(path.join(__dirname, '../demo.zip')) fs.createReadStream(path.join(__dirname, '../demo.zip'))
.pipe(unzip.Extract({path: path.join(__dirname, '../demo-shell')})) .pipe(unzip.Extract({path: path.join(__dirname, '../demo-shell')}))
.on('error', () => { .on('error', () => {
if (tentativeNumber <= 4) {
setTimeout(() => { if (tentativeNumber <= 4) {
unzipRetry(tentativeNumber++, outputFolder); tentativeNumber++;
}, 10000); unzipRetry(tentativeNumber, outputFolder);
} }
}) })
.on('finish', () => { .on('finish', () => {
setTimeout(() => { setTimeout(() => {
let oldFolder = path.join(__dirname, `../demo-shell/demo.zip`) let oldFolder = path.join(__dirname, `../demo-shell/demo.zip`)
let newFolder = path.join(__dirname, `../demo-shell/${outputFolder}`) let newFolder = path.join(__dirname, `../demo-shell/${outputFolder}`)
fs.rename(oldFolder, newFolder, (err) => { fs.rename(oldFolder, newFolder, (err) => {
console.log('renamed complete'); console.log('renamed complete');
}); });
if (program.baseHref) { if (program.baseHref) {
replaceHrefInIndex(outputFolder); replaceHrefInIndex(outputFolder);
} }
}, 10000); }, 10000);
}) })
}, 10000); }, 10000);
});
});
} }
async function main() { async function main() {
@@ -88,13 +94,7 @@ async function main() {
let outputFolder = program.baseHref ? program.baseHref : 'dist'; let outputFolder = program.baseHref ? program.baseHref : 'dist';
var file = fs.createWriteStream('demo.zip'); unzipRetry(0, outputFolder, url);
http.get(`http://${url}`, (response) => {
response.pipe(file);
file.on('finish', async () => {
unzipRetry(1, outputFolder);
});
});
} }
main(); main();

View File

@@ -11,14 +11,14 @@ var exec = require('child_process').exec;
var alfrescoJsApi; var alfrescoJsApi;
unzipRetry = (tentativeNumber, pacakge, outputFolder) => { unzipRetry = (url, outputFolder, pacakge, tentativeNumber) => {
console.log(`Unzip ${pacakge}` + path.join(__dirname, `../${pacakge}.zip`)); console.log(`Unzip ${pacakge}` + path.join(__dirname, `../${pacakge}.zip`));
fs.createReadStream(path.join(__dirname, `../${pacakge}.zip`)) fs.createReadStream(path.join(__dirname, `../${pacakge}.zip`))
.pipe(unzip.Extract({path: path.join(__dirname, `../${outputFolder}/@alfresco/`)})) .pipe(unzip.Extract({path: path.join(__dirname, `../${outputFolder}/@alfresco/`)}))
.on('error', () => { .on('error', () => {
if (tentativeNumber <= 4) { if (tentativeNumber <= 4) {
setTimeout(() => { setTimeout(() => {
unzipRetry(tentativeNumber++, pacakge, outputFolder); downloadZip(tentativeNumber, url, outputFolder, pacakge);
}, 10000); }, 10000);
} }
}) })
@@ -35,15 +35,20 @@ unzipRetry = (tentativeNumber, pacakge, outputFolder) => {
}) })
} }
downloadZip = async (url, outputFolder, pacakge) => { downloadZip = async (url, outputFolder, pacakge, tentativeNumber) => {
if (!tentativeNumber) {
tentativeNumber = 0;
}
tentativeNumber++;
console.log(`Download ${pacakge} in OutputFolder ${outputFolder}`)
console.log(`Download ${pacakge}`)
console.log(`OutputFolder ${outputFolder}`)
var file = fs.createWriteStream(`${pacakge}.zip`); var file = fs.createWriteStream(`${pacakge}.zip`);
return await http.get(`http://${url}`, (response) => { return await http.get(`http://${url}`, (response) => {
response.pipe(file); response.pipe(file);
file.on('finish', async () => { file.on('finish', async () => {
unzipRetry(1, pacakge, outputFolder); unzipRetry(url, outputFolder, pacakge, tentativeNumber);
}); });
}); });
} }