mirror of
https://github.com/Alfresco/alfresco-ng2-components.git
synced 2025-05-12 17:04:57 +00:00
112 lines
3.5 KiB
JavaScript
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();
|