system.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. 'use strict'
  2. const Promise = require('bluebird')
  3. const https = require('follow-redirects').https
  4. const fs = Promise.promisifyAll(require('fs-extra'))
  5. const path = require('path')
  6. const tar = require('tar')
  7. const zlib = require('zlib')
  8. const _ = require('lodash')
  9. module.exports = {
  10. _remoteFile: 'https://github.com/Requarks/wiki/releases/download/{0}/wiki-js.tar.gz',
  11. _installDir: '',
  12. install (targetTag) {
  13. let self = this
  14. self._installDir = path.resolve(ROOTPATH, appconfig.paths.data, 'install')
  15. return fs.ensureDirAsync(self._installDir).then(() => {
  16. let remoteURL = _.replace(self._remoteFile, '{0}', targetTag)
  17. return new Promise((resolve, reject) => {
  18. https.get(remoteURL, resp => {
  19. if (resp.statusCode !== 200) {
  20. return reject(new Error('Remote file not found'))
  21. }
  22. resp.pipe(zlib.createGunzip())
  23. .pipe(tar.Extract({ path: self._installDir }))
  24. .on('error', err => reject(err))
  25. .on('end', () => {
  26. resolve(true)
  27. })
  28. })
  29. }).then(() => {
  30. })
  31. })
  32. }
  33. }