alfresco-ng2-components/scripts/download-build-lib-in-cs.js
2018-10-17 17:01:28 +01:00

112 lines
3.5 KiB
JavaScript

var program = require('commander');
var AlfrescoApi = require('alfresco-js-api-node');
var http = require('http');
var fs = require('fs');
var path = require('path');
var unzip = require('unzip-stream');
var alfrescoJsApi;
unzipRetry = (url, outputFolder, pacakge, tentativeNumber) => {
console.log(`Unzip ${pacakge} in ` + path.join(__dirname, `../${pacakge}.zip`));
fs.createReadStream(path.join(__dirname, `../${pacakge}.zip`))
.pipe(unzip.Extract({path: path.join(__dirname, `../${outputFolder}/@alfresco/`)}))
.on('error', (error) => {
console.log('Error' + error)
if (tentativeNumber <= 4) {
fs.unlinkSync(path.join(__dirname, `../${pacakge}.zip`));
setTimeout(() => {
downloadZip(url, outputFolder, pacakge, tentativeNumber);
}, 10000);
}
})
.on('finish', () => {
setTimeout(() => {
let oldFolder = path.join(__dirname, `../${outputFolder}/@alfresco/${pacakge}`)
let newFolder = path.join(__dirname, `../${outputFolder}/@alfresco/adf-${pacakge}`)
fs.rename(oldFolder, newFolder, (err) => {
console.log('renamed complete');
});
}, 10000);
})
};
downloadZip = async (url, outputFolder, pacakge, tentativeNumber) => {
if (!tentativeNumber) {
tentativeNumber = 0;
}
tentativeNumber++;
console.log(`Download ${pacakge} in OutputFolder ${outputFolder}`)
let file = fs.createWriteStream(`${pacakge}.zip`);
return await http.get(`http://${url}`, (response) => {
response.pipe(file);
file.on('finish', async () => {
file.close(() => {
unzipRetry(url, outputFolder, pacakge, tentativeNumber);
});
});
});
};
getUrl = async (folder, pacakge) => {
let zipDemoNode;
try {
zipDemoNode = await alfrescoJsApi.nodes.getNode('-my-', {
'relativePath': `Builds/${folder}/${pacakge}.zip`
});
} catch (error) {
console.log('error: ' + error);
}
return await alfrescoJsApi.content.getContentUrl(zipDemoNode.entry.id, true);
};
async function main() {
program
.version('0.1.0')
.option('-p, --password [type]', 'password')
.option('-u, --username [type]', 'username')
.option('-o, --output [type]', 'output folder')
.option('--base-href [type]', '')
.option('-f, --folder [type]', 'Name of the folder')
.option('-host, --host [type]', 'URL of the CS')
.parse(process.argv);
alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: program.host
});
if (!program.output) {
program.output = 'node_modules'
}
await alfrescoJsApi.login(program.username, program.password);
let coreUrl = await getUrl(program.folder, 'core');
downloadZip(coreUrl, program.output, 'core');
let contentUrl = await getUrl(program.folder, 'content-services');
downloadZip(contentUrl, program.output, 'content-services');
let processUrl = await getUrl(program.folder, 'process-services');
downloadZip(processUrl, program.output, 'process-services');
let insightUrl = await getUrl(program.folder, 'insights');
downloadZip(insightUrl, program.output, 'insights');
let processCloudUrl = await getUrl(program.folder, 'process-services-cloud');
downloadZip(processCloudUrl, program.output, 'process-services-cloud');
}
main();