in script/download_lib.js [75:131]
co(function *() {
let urls;
try {
urls = yield getUrlArray();
} catch(e) {
console.error(`[rocketmq sdk] [error] ${e.message}`);
process.exit(4);
}
yield mkdirp(LIB_DIR);
let writeTimes = 0;
for(const url of urls) {
console.log(`[rocketmq sdk] [info] downloading [${url}]...`);
const resp = yield urllib.request(url, {
timeout: 60000 * 5,
followRedirect: true,
streaming: true
});
if(resp.status !== 200) {
destroy(resp.res);
console.error(`[rocketmq sdk] [error] error status ${resp.status} while downloading [${url}].`);
process.exit(4);
}
const readStream = resp.res;
const filename = path.join(LIB_DIR, path.basename(url));
const writeStream = fs.createWriteStream(filename, {
encoding: "binary"
});
// eslint-disable-next-line
function handleDownladCallback(err) {
if(err) {
console.error(`[rocketmq sdk] [error] error occurred while downloading [${url}] to [${filename}].`);
console.error(err.stack);
process.exit(4);
}
writeTimes++;
destroy(resp.res);
console.log(`[rocketmq sdk] [info] downloaded library [${url}].`);
if(writeTimes === urls.length) {
console.log("[rocketmq sdk] [info] all libraries have been written to disk.");
process.exit(0);
}
}
readStream.on("error", handleDownladCallback);
writeStream.on("error", handleDownladCallback);
writeStream.on("finish", handleDownladCallback);
readStream.pipe(writeStream);
}
});