mirror of https://github.com/Requarks/wiki.git
7 changed files with 156 additions and 81 deletions
Unified View
Diff Options
-
3configure.js
-
3fuse.js
-
101init.js
-
16npm/install.js
-
4package.json
-
4views/configure/index.pug
-
106wiki.js
@ -0,0 +1,101 @@ |
|||||
|
'use strict' |
||||
|
|
||||
|
const Promise = require('bluebird') |
||||
|
const fs = Promise.promisifyAll(require('fs-extra')) |
||||
|
const pm2 = Promise.promisifyAll(require('pm2')) |
||||
|
const ora = require('ora') |
||||
|
const path = require('path') |
||||
|
|
||||
|
module.exports = { |
||||
|
/** |
||||
|
* Detect the most appropriate start mode |
||||
|
*/ |
||||
|
startDetect: function () { |
||||
|
if (!process.env.IS_HEROKU) { |
||||
|
return this.startInHerokuMode() |
||||
|
} else { |
||||
|
return this.startInBackgroundMode() |
||||
|
} |
||||
|
}, |
||||
|
/** |
||||
|
* Start in background mode |
||||
|
*/ |
||||
|
startInBackgroundMode: function () { |
||||
|
let spinner = ora('Initializing...').start() |
||||
|
return 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 => { |
||||
|
spinner.fail(err) |
||||
|
process.exit(1) |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* Start in Heroku mode |
||||
|
*/ |
||||
|
startInHerokuMode: function () { |
||||
|
let self = this |
||||
|
|
||||
|
console.info('Initializing Wiki.js for Heroku...') |
||||
|
let herokuStatePath = path.join(__dirname, './app/heroku.json') |
||||
|
return fs.accessAsync(herokuStatePath).then(() => { |
||||
|
require('./server.js') |
||||
|
}).catch(err => { |
||||
|
if (err.code === 'ENOENT') { |
||||
|
console.info('Wiki.js is not configured yet. Launching configuration wizard...') |
||||
|
self.configure(process.env.PORT) |
||||
|
} else { |
||||
|
console.error(err) |
||||
|
process.exit(1) |
||||
|
} |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* Stop Wiki.js process(es) |
||||
|
*/ |
||||
|
stop () { |
||||
|
let spinner = ora('Shutting down Wiki.js...').start() |
||||
|
return pm2.connectAsync().then(() => { |
||||
|
return pm2.stopAsync('wiki').then(() => { |
||||
|
spinner.succeed('Wiki.js has stopped successfully.') |
||||
|
}).finally(() => { |
||||
|
pm2.disconnect() |
||||
|
}) |
||||
|
}).catch(err => { |
||||
|
spinner.fail(err) |
||||
|
process.exit(1) |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* Restart Wiki.js process(es) |
||||
|
*/ |
||||
|
restart: function () { |
||||
|
let self = this |
||||
|
return self.stop().delay(1000).then(() => { |
||||
|
self.startDetect() |
||||
|
}) |
||||
|
}, |
||||
|
/** |
||||
|
* Start the web-based configuration wizard |
||||
|
* |
||||
|
* @param {Number} port Port to bind the HTTP server on |
||||
|
*/ |
||||
|
configure (port) { |
||||
|
port = port || 3000 |
||||
|
let spinner = ora('Initializing interactive setup...').start() |
||||
|
require('./configure')(port, spinner) |
||||
|
} |
||||
|
} |
Write
Preview
Loading…
Cancel
Save