npm install feature

This commit is contained in:
NGPixel 2017-02-14 15:27:08 -05:00
parent ae7373b937
commit ab32c95233
10 changed files with 130 additions and 11 deletions

1
.gitignore vendored
View File

@ -31,6 +31,7 @@ dist
# Dependency directories # Dependency directories
node_modules node_modules
npm/node_modules
jspm_packages jspm_packages
# Optional npm cache directory # Optional npm cache directory

View File

@ -3,9 +3,12 @@ All notable changes to this project will be documented in this file.
This project adheres to [Semantic Versioning](http://semver.org/). This project adheres to [Semantic Versioning](http://semver.org/).
## [Unreleased] ## [Unreleased]
## [v1.0.0-beta.6] - 2017-02-14
### Added ### Added
- Automated Upgrade / Re-install feature - Automated Upgrade / Re-install feature
- Automated process manager - Automated process management
- npm automatic site installation
## [v1.0-beta.5] - 2017-02-12 ## [v1.0-beta.5] - 2017-02-12
### Added ### Added

View File

@ -3,7 +3,7 @@
# This is reserved for system use! # This is reserved for system use!
# --------------------------------- # ---------------------------------
name: Wiki.js name: Wiki.js
version: v1.0-beta.5 version: v1.0.0-beta.6
capabilities: capabilities:
guest: true guest: true
rights: true rights: true

View File

@ -71,16 +71,16 @@ const paths = {
], ],
deploy: [ deploy: [
'./**/*', './**/*',
'!node_modules', '!node_modules/**',
'!coverage', '!coverage/**',
'!client/js', '!client/js/**', '!client/js', '!client/js/**',
'!client/scss', '!client/scss/**', '!client/scss', '!client/scss/**',
'!dist', '!dist/**', '!coverage', '!coverage/**',
'!tests', '!tests/**',
'!data', '!data/**', '!data', '!data/**',
'!dist', '!dist/**',
'!node_modules', '!node_modules/**',
'!npm', '!npm/**',
'!repo', '!repo/**', '!repo', '!repo/**',
'!.babelrc', '!.gitattributes', '!.gitignore', '!.snyk', '!.travis.yml', '!test', '!test/**',
'!gulpfile.js', '!inch.json', '!config.yml', '!wiki.sublime-project' '!gulpfile.js', '!config.yml'
] ]
} }

1
npm/README.md Normal file
View File

@ -0,0 +1 @@
Under development

67
npm/install.js Normal file
View File

@ -0,0 +1,67 @@
'use strict'
const ora = require('ora')('Initializing...').start()
const Promise = require('bluebird')
const fs = Promise.promisifyAll(require('fs-extra'))
const https = require('follow-redirects').https
const path = require('path')
const pm2 = Promise.promisifyAll(require('pm2'))
const tar = require('tar')
const zlib = require('zlib')
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...'
/**
* 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)
})
})
})
}).then(() => {
fs.accessAsync(path.join(installDir, 'config.yml')).then(() => {
/**
* Upgrade mode
*/
ora.text = 'Upgrade succeeded. Reloading Wiki.js...'
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.')
})
}).catch(err => {
/**
* Install mode
*/
if (err.code === 'ENOENT') {
ora.succeed('Installation succeeded. You can now continue with the configuration steps. Check out https://docs.wiki.requarks.io/install for more info.')
} else {
return err
}
})
}).catch(err => {
ora.fail(err)
})

41
npm/package.json Normal file
View File

@ -0,0 +1,41 @@
{
"name": "wiki.js",
"version": "1.0.0-beta.6",
"description": "A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown",
"main": "install.js",
"scripts": {
"test": "exit 1",
"install": "node install.js",
"preuninstall": "node uninstall.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/Requarks/wiki.git"
},
"keywords": [
"wiki",
"wikis",
"wikijs",
"wiki.js",
"wiki-js",
"docs",
"documentation",
"markdown",
"guides"
],
"author": "Nicolas Giard",
"license": "AGPL-3.0",
"bugs": {
"url": "https://github.com/Requarks/wiki/issues"
},
"homepage": "https://github.com/Requarks/wiki#readme",
"dependencies": {
"bluebird": "^3.4.7",
"follow-redirects": "^1.2.1",
"fs-extra": "^2.0.0",
"lodash": "^4.17.4",
"ora": "^1.1.0",
"pm2": "^2.4.0",
"tar": "^2.2.1"
}
}

View File

@ -1,10 +1,11 @@
{ {
"name": "wiki", "name": "wiki",
"version": "1.0.0", "version": "1.0.0-beta.6",
"description": "A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown", "description": "A modern, lightweight and powerful wiki app built on NodeJS, Git and Markdown",
"main": "server.js", "main": "server.js",
"scripts": { "scripts": {
"start": "node wiki start", "start": "node wiki start",
"stop": "node wiki stop",
"dev": "gulp dev", "dev": "gulp dev",
"test": "snyk test && standard && pug-lint ./views", "test": "snyk test && standard && pug-lint ./views",
"snyk-protect": "snyk protect", "snyk-protect": "snyk protect",

1
wiki.cmd Normal file
View File

@ -0,0 +1 @@
@node "%~dp0wiki.js" %*

View File

@ -1,11 +1,15 @@
#!/usr/bin/env node
'use strict' 'use strict'
const fs = require('fs-extra')
const ora = require('ora') const ora = require('ora')
const Promise = require('bluebird') const Promise = require('bluebird')
const pm2 = Promise.promisifyAll(require('pm2')) const pm2 = Promise.promisifyAll(require('pm2'))
const cmdr = require('commander') const cmdr = require('commander')
cmdr.version('1.0.0') const packageObj = fs.readJsonSync('package.json')
cmdr.version(packageObj.version)
cmdr.command('start') cmdr.command('start')
.description('Start Wiki.js process') .description('Start Wiki.js process')