Browse Source

npm install fixes + logs folder

pull/33/head
NGPixel 7 years ago
parent
commit
f311d74a08
5 changed files with 71 additions and 50 deletions
  1. 1
      .gitignore
  2. 2
      README.md
  3. 4
      npm/README.md
  4. 81
      npm/install.js
  5. 33
      wiki.js

1
.gitignore

@ -2,6 +2,7 @@
logs
*.log
npm-debug.log*
/logs
# Runtime data
pids

2
README.md

@ -7,7 +7,7 @@
[![Release](https://img.shields.io/github/release/Requarks/wiki.svg?style=flat-square&maxAge=3600)](https://github.com/Requarks/wiki/releases)
[![License](https://img.shields.io/badge/license-AGPLv3-blue.svg?style=flat-square)](https://github.com/requarks/wiki/blob/master/LICENSE)
[![npm](https://img.shields.io/badge/npm-wiki.js-blue.svg?style=flat-square)](https://www.npmjs.com/package/wiki.js)
[![Github All Releases](https://img.shields.io/github/downloads/Requarks/wiki/total.svg?style=flat-square)](https://github.com/Requarks/wiki/releases/latest)
[![npm Downloads](https://img.shields.io/npm/dt/wiki.js.svg?style=flat-square)](https://www.npmjs.com/package/wiki.js)
[![Build Status](https://img.shields.io/travis/Requarks/wiki/master.svg?style=flat-square)](https://travis-ci.org/Requarks/wiki)
[![Codacy Badge](https://img.shields.io/codacy/grade/1d0217a3153c4595bdedb322263e55c8/master.svg?style=flat-square)](https://www.codacy.com/app/Requarks/wiki)
[![Dependency Status](https://img.shields.io/gemnasium/Requarks/wiki.svg?style=flat-square)](https://gemnasium.com/github.com/Requarks/wiki)

4
npm/README.md

@ -8,9 +8,7 @@
[![Release](https://img.shields.io/github/release/Requarks/wiki.svg?style=flat-square&maxAge=3600)](https://github.com/Requarks/wiki/releases)
[![License](https://img.shields.io/badge/license-AGPLv3-blue.svg?style=flat-square)](https://github.com/requarks/wiki/blob/master/LICENSE)
##### A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown
This npm package is an installer for Wiki.js. For information about Wiki.js, use the following links:
This npm package is an installer for Wiki.js. For information about Wiki.js, including detailed installation steps, read the following links:
- [Official Website](https://wiki.requarks.io/)
- [Installation Guide](https://wiki.requarks.io/get-started.html)

81
npm/install.js

@ -13,32 +13,43 @@ const _ = require('lodash')
let installDir = path.resolve(__dirname, '../..')
/**
* Fetch version from npm package
*/
fs.readJsonAsync('package.json').then((packageObj) => {
let remoteURL = _.replace('https://github.com/Requarks/wiki/releases/download/v{0}/wiki-js.tar.gz', '{0}', packageObj.version)
return new Promise((resolve, reject) => {
/**
* Fetch tarball
*/
ora.text = 'Looking for latest release...'
https.get(remoteURL, resp => {
if (resp.statusCode !== 200) {
return reject(new Error('Remote file not found'))
}
ora.text = 'Install tarball found. Downloading...'
ora.text = 'Looking for running instances...'
pm2.connectAsync().then(() => {
return pm2.describeAsync('wiki').then(() => {
ora.text = 'Stopping and deleting from pm2...'
return pm2.deleteAsync('wiki')
}).catch(err => { // eslint-disable-line handle-callback-err
return true
})
}).then(() => {
/**
* Fetch version from npm package
*/
return fs.readJsonAsync('package.json').then((packageObj) => {
let versionGet = _.chain(packageObj.version).split('.').take(4).join('.')
let remoteURL = _.replace('https://github.com/Requarks/wiki/releases/download/v{0}/wiki-js.tar.gz', '{0}', versionGet)
return new Promise((resolve, reject) => {
/**
* Extract tarball
* Fetch tarball
*/
resp.pipe(zlib.createGunzip())
.pipe(tar.Extract({ path: installDir }))
.on('error', err => reject(err))
.on('end', () => {
ora.text = 'Tarball extracted successfully.'
resolve(true)
ora.text = 'Looking for latest release...'
https.get(remoteURL, resp => {
if (resp.statusCode !== 200) {
return reject(new Error('Remote file not found'))
}
ora.text = 'Install tarball found. Downloading...'
/**
* Extract tarball
*/
resp.pipe(zlib.createGunzip())
.pipe(tar.Extract({ path: installDir }))
.on('error', err => reject(err))
.on('end', () => {
ora.text = 'Tarball extracted successfully.'
resolve(true)
})
})
})
})
@ -62,17 +73,19 @@ fs.readJsonAsync('package.json').then((packageObj) => {
/**
* Upgrade mode
*/
ora.text = 'Upgrade succeeded. Reloading Wiki.js...'
return pm2.connectAsync().then(() => {
return pm2.restartAsync('wiki').catch(err => { // eslint-disable-line handle-callback-err
return new Error('Unable to restart Wiki.js via pm2... Do a manual restart!')
}).then(() => {
ora.succeed('Wiki.js has restarted. Upgrade completed.')
return new Promise((resolve, reject) => {
ora.text = 'Upgrade succeeded. Starting Wiki.js...'
let npmInstallProc = exec('wiki start', {
cwd: installDir
})
npmInstallProc.stdout.pipe(process.stdout)
npmInstallProc.on('error', err => {
reject(err)
})
.on('exit', () => {
ora.succeed('Wiki.js has started. Upgrade completed.')
resolve(true)
})
}).catch(err => {
ora.fail(err)
}).finally(() => {
pm2.disconnect()
})
}).catch(err => {
/**
@ -89,4 +102,6 @@ fs.readJsonAsync('package.json').then((packageObj) => {
})
}).catch(err => {
ora.fail(err)
}).finally(() => {
pm2.disconnect()
})

33
wiki.js

@ -1,11 +1,12 @@
#!/usr/bin/env node
'use strict'
const fs = require('fs-extra')
const ora = require('ora')
const Promise = require('bluebird')
const fs = Promise.promisifyAll(require('fs-extra'))
const ora = require('ora')
const pm2 = Promise.promisifyAll(require('pm2'))
const cmdr = require('commander')
const path = require('path')
const packageObj = fs.readJsonSync('package.json')
@ -15,18 +16,24 @@ cmdr.command('start')
.description('Start Wiki.js process')
.action(() => {
let spinner = ora('Initializing...').start()
pm2.connectAsync().then(() => {
return pm2.startAsync({
name: 'wiki',
script: 'server.js',
cwd: __dirname
}).then(() => {
spinner.succeed('Wiki.js has started successfully.')
}).finally(() => {
pm2.disconnect()
fs.emptyDirAsync(path.join(__dirname, './logs')).then(() => {
return pm2.connectAsync().then(() => {
return pm2.startAsync({
name: 'wiki',
script: 'server.js',
cwd: __dirname,
output: path.join(__dirname, './logs/wiki-output.log'),
error: path.join(__dirname, './logs/wiki-error.log'),
minUptime: 5000,
maxRestarts: 5
}).then(() => {
spinner.succeed('Wiki.js has started successfully.')
}).finally(() => {
pm2.disconnect()
})
})
}).catch(err => {
console.error(err)
spinner.fail(err)
process.exit(1)
})
})
@ -42,7 +49,7 @@ cmdr.command('stop')
pm2.disconnect()
})
}).catch(err => {
console.error(err)
spinner.fail(err)
process.exit(1)
})
})

Loading…
Cancel
Save