alfresco-ng2-components/scripts/download-build-in-cs.js
Eugenio Romano 489fbe69e2
[no-issue] Fix deploy PR (#3929)
* [ADF-3655] Fix layout issue on IE 11

* fix deploy PR
2018-10-29 17:21:10 +00:00

104 lines
3.3 KiB
JavaScript
Executable File

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');
replaceHrefInIndex = (folder, href) => {
fs.readFile(`demo-shell/${folder}/index.html`, 'utf8', function (err, data) {
if (err) {
return console.log(err);
}
let result = data.replace(`base href="/"`, `base href=\"/${href}/\"`);
fs.writeFile(`demo-shell/${folder}/index.html`, result, 'utf8', function (err) {
if (err) return console.log(err);
});
});
};
unzipRetry = (tentativeNumber, outputFolder, url) => {
let 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'));
setTimeout(() => {
fs.createReadStream(path.join(__dirname, '../demo.zip'))
.pipe(unzip.Extract({path: path.join(__dirname, '../demo-shell')}))
.on('error', () => {
if (tentativeNumber <= 4) {
tentativeNumber++;
unzipRetry(tentativeNumber, outputFolder);
}
})
.on('finish', () => {
setTimeout(() => {
let oldFolder = path.join(__dirname, `../demo-shell/demo.zip`);
let newFolder = path.join(__dirname, `../demo-shell/${outputFolder}`);
if (!fs.existsSync(path.join(__dirname, `../demo-shell/dist`))) {
fs.mkdirSync(path.join(__dirname, `../demo-shell/dist`));
}
fs.rename(oldFolder, newFolder, () => {
console.log('renamed complete ');
});
if (program.baseHref) {
replaceHrefInIndex(outputFolder, program.baseHref);
}
}, 10000);
})
}, 10000);
});
});
};
async function main() {
program
.version('0.1.0')
.option('-p, --password [type]', 'password')
.option('-u, --username [type]', 'username')
.option('--base-href [type]', '')
.option('-f, --folder [type]', 'Name of the folder')
.option('-host, --host [type]', 'URL of the CS')
.parse(process.argv);
let alfrescoJsApi = new AlfrescoApi({
provider: 'ECM',
hostEcm: program.host
});
await alfrescoJsApi.login(program.username, program.password);
let zipDemoNode;
try {
zipDemoNode = await alfrescoJsApi.nodes.getNode('-my-', {
'relativePath': `Builds/${program.folder}/demo.zip`
});
} catch (error) {
console.log('error: ' + error);
}
const url = await alfrescoJsApi.content.getContentUrl(zipDemoNode.entry.id, true);
console.log('Download zip');
let outputFolder = program.baseHref ? path.join('dist', program.baseHref) : 'dist';
unzipRetry(0, outputFolder, url);
}
main();