UNPKG

angular-ide

Version:

Provides a seamless integration with the Angular IDE from the command-line for developers looking for an enhanced development experience with Angular.

87 lines (62 loc) 1.86 kB
const fs = require('fs'); const path = require('path'); const Rx = require('rxjs'); const ProgressBar = require('./progress-bar'); const chalk = require('chalk'); const url = require('url'); const { DownloaderHelper } = require('node-downloader-helper'); const IDE_COMPRESSED_FILE = 'angular_ide'; function urlBuilder(osType, arch) { const ideURLBase = 'https://www.genuitec.com/products/webclipse/download/angularide'; const downloadURL = url.parse(ideURLBase); let osArch = null; switch (osType) { case 'Linux': if (arch === 'x64') { osArch = 'linux.gtk.x86_64'; } else { osArch = 'linux.gtk.x86'; } break; case 'Darwin': osArch = 'macosx.cocoa.x86_64'; break; case 'Windows_NT': if (arch === 'x64') { osArch = 'win32.win32.x86_64'; } else { osArch = 'win32.win32.x86'; } break; default: } downloadURL.query = { os: osArch }; return url.format(downloadURL); } module.exports = function (osType, arch) { const SIMULTANEOUS_DOWNLOADS = 3; const fStat = Rx.Observable.bindNodeCallback(fs.stat); const downloadOptions = { url: urlBuilder(osType, arch), path: path.resolve(IDE_COMPRESSED_FILE), range: SIMULTANEOUS_DOWNLOADS, }; return Rx.Observable.create((obs) => { const bar = new ProgressBar('Downloading...:bar :completed%'); const dl = new DownloaderHelper(downloadOptions.url, process.cwd(), { fileName: IDE_COMPRESSED_FILE, override: true, }); dl.on('download', () => bar.update(0, 100)); dl.on('error', (e) => console.log(e)); dl.on('progress', (stats) => { bar.update(stats.progress, 100); }); dl.on('end', () => { bar.complete(); obs.next(downloadOptions.path); obs.complete(); }); dl.resume(); }); };