Bläddra i källkod

fix: Install fixes + localization home key

NGPixel 8 år sedan
förälder
incheckning
bbaf311372

+ 51 - 38
npm/install.js

@@ -19,6 +19,8 @@ const tar = require('tar')
 const zlib = require('zlib')
 const zlib = require('zlib')
 
 
 const installDir = path.resolve(__dirname, '../..')
 const installDir = path.resolve(__dirname, '../..')
+const isContainerBased = (process.env.WIKI_JS_HEROKU || process.env.WIKI_JS_DOCKER)
+let installMode = 'new'
 
 
 // =====================================================
 // =====================================================
 // INSTALLATION TASKS
 // INSTALLATION TASKS
@@ -28,7 +30,7 @@ const tasks = {
   /**
   /**
    * Stop and delete existing instances
    * Stop and delete existing instances
    */
    */
-  stopAndDeleteInstances () {
+  stopAndDeleteInstances() {
     ora.text = 'Looking for running instances...'
     ora.text = 'Looking for running instances...'
     return pm2.connectAsync().then(() => {
     return pm2.connectAsync().then(() => {
       return pm2.describeAsync('wiki').then(() => {
       return pm2.describeAsync('wiki').then(() => {
@@ -39,14 +41,16 @@ const tasks = {
       }).finally(() => {
       }).finally(() => {
         pm2.disconnect()
         pm2.disconnect()
       })
       })
+    }).catch(err => { // eslint-disable-line handle-callback-err
+      return true
     })
     })
   },
   },
   /**
   /**
    * Check for sufficient memory
    * Check for sufficient memory
    */
    */
-  checkRequirements () {
+  checkRequirements() {
     ora.text = 'Checking system requirements...'
     ora.text = 'Checking system requirements...'
-    if (os.totalmem() < 1024 * 1024 * 768) {
+    if (os.totalmem() < 1000 * 1000 * 768) {
       return Promise.reject(new Error('Not enough memory to install dependencies. Minimum is 768 MB.'))
       return Promise.reject(new Error('Not enough memory to install dependencies. Minimum is 768 MB.'))
     } else {
     } else {
       return Promise.resolve(true)
       return Promise.resolve(true)
@@ -55,7 +59,7 @@ const tasks = {
   /**
   /**
    * Install via local tarball if present
    * Install via local tarball if present
    */
    */
-  installFromLocal () {
+  installFromLocal() {
     let hasTarball = true
     let hasTarball = true
     let tbPath = path.join(installDir, 'wiki-js.tar.gz')
     let tbPath = path.join(installDir, 'wiki-js.tar.gz')
     return fs.accessAsync(tbPath)
     return fs.accessAsync(tbPath)
@@ -67,7 +71,7 @@ const tasks = {
 
 
           return new Promise((resolve, reject) => {
           return new Promise((resolve, reject) => {
             fs.createReadStream(tbPath).pipe(zlib.createGunzip())
             fs.createReadStream(tbPath).pipe(zlib.createGunzip())
-              .pipe(tar.Extract({ path: installDir }))
+              .pipe(tar.extract({ cwd: installDir }))
               .on('error', err => reject(err))
               .on('error', err => reject(err))
               .on('end', () => {
               .on('end', () => {
                 ora.text = 'Tarball extracted successfully.'
                 ora.text = 'Tarball extracted successfully.'
@@ -82,7 +86,7 @@ const tasks = {
   /**
   /**
    * Install from GitHub release download
    * Install from GitHub release download
    */
    */
-  installFromRemote () {
+  installFromRemote() {
     // Fetch version from npm package
     // Fetch version from npm package
     return fs.readJsonAsync('package.json').then((packageObj) => {
     return fs.readJsonAsync('package.json').then((packageObj) => {
       let versionGet = _.chain(packageObj.version).split('.').take(4).join('.')
       let versionGet = _.chain(packageObj.version).split('.').take(4).join('.')
@@ -96,67 +100,72 @@ const tasks = {
             return reject(new Error('Remote file not found'))
             return reject(new Error('Remote file not found'))
           }
           }
           ora.text = 'Remote wiki.js tarball found. Downloading...'
           ora.text = 'Remote wiki.js tarball found. Downloading...'
+          isContainerBased && console.info('>> Extracting to ' + installDir)
 
 
           // Extract tarball
           // Extract tarball
           resp.pipe(zlib.createGunzip())
           resp.pipe(zlib.createGunzip())
-          .pipe(tar.Extract({ path: installDir }))
-          .on('error', err => reject(err))
-          .on('end', () => {
-            ora.text = 'Tarball extracted successfully.'
-            resolve(true)
-          })
+            .pipe(tar.extract({ cwd: installDir }))
+            .on('error', err => reject(err))
+            .on('end', () => {
+              ora.text = 'Tarball extracted successfully.'
+              resolve(true)
+            })
         })
         })
       })
       })
     })
     })
   },
   },
-  /**
-   * Install npm dependencies
-   */
-  installDependencies () {
-    ora.text = 'Installing Wiki.js npm dependencies...'
-    return exec.stdout('npm', ['install', '--only=production', '--no-optional'], {
-      cwd: installDir
-    }).then(results => {
-      ora.text = 'Wiki.js npm dependencies installed successfully.'
-      return true
-    })
-  },
   /**
   /**
    * Create default config.yml file if new installation
    * Create default config.yml file if new installation
    */
    */
-  ensureConfigFile () {
+  ensureConfigFile() {
     return fs.accessAsync(path.join(installDir, 'config.yml')).then(() => {
     return fs.accessAsync(path.join(installDir, 'config.yml')).then(() => {
       // Is Upgrade
       // Is Upgrade
-      ora.succeed('Upgrade completed.')
-      console.info(colors.yellow('\n!!! IMPORTANT !!!'))
-      console.info(colors.yellow('Running the configuration wizard is optional but recommended after an upgrade to ensure your config file is using the latest available settings.'))
-      console.info(colors.yellow('Note that the contents of your config file will be displayed during the configuration wizard. It is therefor highly recommended to run the wizard on a non-publicly accessible port or skip this step completely.\n'))
+      ora.text = 'Existing config.yml found. Upgrade mode.'
+      installMode = 'upgrade'
       return true
       return true
     }).catch(err => {
     }).catch(err => {
       // Is New Install
       // Is New Install
       if (err.code === 'ENOENT') {
       if (err.code === 'ENOENT') {
         ora.text = 'First-time install, creating a new config.yml...'
         ora.text = 'First-time install, creating a new config.yml...'
+        installMode = 'new'
         let sourceConfigFile = path.join(installDir, 'config.sample.yml')
         let sourceConfigFile = path.join(installDir, 'config.sample.yml')
         if (process.env.WIKI_JS_HEROKU) {
         if (process.env.WIKI_JS_HEROKU) {
           sourceConfigFile = path.join(__dirname, 'configs/config.heroku.yml')
           sourceConfigFile = path.join(__dirname, 'configs/config.heroku.yml')
         } else if (process.env.WIKI_JS_DOCKER) {
         } else if (process.env.WIKI_JS_DOCKER) {
           sourceConfigFile = path.join(__dirname, 'configs/config.docker.yml')
           sourceConfigFile = path.join(__dirname, 'configs/config.docker.yml')
         }
         }
-        return fs.copyAsync(sourceConfigFile, path.join(installDir, 'config.yml')).then(() => {
-          ora.succeed('Installation succeeded.')
-          return true
-        })
+        return fs.copyAsync(sourceConfigFile, path.join(installDir, 'config.yml'))
       } else {
       } else {
         return err
         return err
       }
       }
     })
     })
   },
   },
-  startConfigurationWizard () {
+  /**
+   * Install npm dependencies
+   */
+  installDependencies() {
+    ora.text = 'Installing Wiki.js npm dependencies...'
+    return exec.stdout('npm', ['install', '--only=production', '--no-optional'], {
+      cwd: installDir
+    }).then(results => {
+      ora.text = 'Wiki.js npm dependencies installed successfully.'
+      return true
+    })
+  },
+  startConfigurationWizard() {
+    ora.succeed('Installation succeeded.')
     if (process.env.WIKI_JS_HEROKU) {
     if (process.env.WIKI_JS_HEROKU) {
-      console.info('Wiki.js has been installed and is configured to use Heroku configuration.')
+      console.info('> Wiki.js has been installed and is configured to use Heroku configuration.')
+      return true
     } else if (process.env.WIKI_JS_DOCKER) {
     } else if (process.env.WIKI_JS_DOCKER) {
       console.info('Docker environment detected. Skipping setup wizard auto-start.')
       console.info('Docker environment detected. Skipping setup wizard auto-start.')
+      return true
     } else if (process.stdout.isTTY) {
     } else if (process.stdout.isTTY) {
+      if (installMode === 'upgrade') {
+        console.info(colors.yellow('\n!!! IMPORTANT !!!'))
+        console.info(colors.yellow('Running the configuration wizard is optional but recommended after an upgrade to ensure your config file is using the latest available settings.'))
+        console.info(colors.yellow('Note that the contents of your config file will be displayed during the configuration wizard. It is therefor highly recommended to run the wizard on a non-publicly accessible port or skip this step completely.\n'))
+      }
       inquirer.prompt([{
       inquirer.prompt([{
         type: 'list',
         type: 'list',
         name: 'action',
         name: 'action',
@@ -215,7 +224,7 @@ const tasks = {
 // INSTALL SEQUENCE
 // INSTALL SEQUENCE
 // =====================================================
 // =====================================================
 
 
-if (!process.env.WIKI_JS_HEROKU && !process.env.WIKI_JS_DOCKER) {
+if (!isContainerBased) {
   console.info(colors.yellow(
   console.info(colors.yellow(
     ' __    __ _ _    _    _     \n' +
     ' __    __ _ _    _    _     \n' +
     '/ / /\\ \\ (_) | _(_)  (_)___ \n' +
     '/ / /\\ \\ (_) | _(_)  (_)___ \n' +
@@ -233,15 +242,19 @@ Promise.join(
   tasks.stopAndDeleteInstances(),
   tasks.stopAndDeleteInstances(),
   tasks.checkRequirements()
   tasks.checkRequirements()
 ).then(() => {
 ).then(() => {
+  isContainerBased && console.info('>> Fetching tarball...')
   return tasks.installFromLocal().then(succeeded => {
   return tasks.installFromLocal().then(succeeded => {
     return (!succeeded) ? tasks.installFromRemote() : true
     return (!succeeded) ? tasks.installFromRemote() : true
   })
   })
 }).then(() => {
 }).then(() => {
-  return tasks.installDependencies()
-}).then(() => {
+  isContainerBased && console.info('>> Creating config file...')
   return tasks.ensureConfigFile()
   return tasks.ensureConfigFile()
+}).then(() => {
+  isContainerBased && console.info('>> Installing dependencies...')
+  return tasks.installDependencies()
 }).then(() => {
 }).then(() => {
   return tasks.startConfigurationWizard()
   return tasks.startConfigurationWizard()
 }).catch(err => {
 }).catch(err => {
+  isContainerBased && console.error(err)
   ora.fail(err)
   ora.fail(err)
 })
 })

+ 1 - 1
npm/package.json

@@ -1,6 +1,6 @@
 {
 {
   "name": "wiki.js",
   "name": "wiki.js",
-  "version": "1.0.0-beta.12.4",
+  "version": "1.0.0-beta.12.12",
   "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": "install.js",
   "main": "install.js",
   "scripts": {
   "scripts": {

+ 2 - 1
server/locales/en/common.json

@@ -27,6 +27,7 @@
     "move": "Move",
     "move": "Move",
     "myprofile": "My Profile",
     "myprofile": "My Profile",
     "normalview": "Normal View",
     "normalview": "Normal View",
+    "root": "Home",
     "savechanges": "Save Changes",
     "savechanges": "Save Changes",
     "savedocument": "Save Document",
     "savedocument": "Save Document",
     "settings": "Settings",
     "settings": "Settings",
@@ -46,4 +47,4 @@
     "source": "Loading source...",
     "source": "Loading source...",
     "editor": "Loading editor..."
     "editor": "Loading editor..."
   }
   }
-}
+}

+ 2 - 2
server/views/pages/admin/_layout.pug

@@ -8,7 +8,7 @@ block rootNavRight
   .nav-item
   .nav-item
     a.button.btn-edit-discard(href='/')
     a.button.btn-edit-discard(href='/')
       i.icon-home
       i.icon-home
-      span= t('nav.home')
+      span= t('nav.root')
 
 
 block content
 block content
 
 
@@ -25,7 +25,7 @@ block content
               li
               li
                 a(href='/')
                 a(href='/')
                   i.icon-home
                   i.icon-home
-                  span= t('nav.home')
+                  span= t('nav.root')
 
 
           aside
           aside
             .sidebar-label
             .sidebar-label

+ 1 - 1
server/views/pages/all.pug

@@ -10,7 +10,7 @@ block content
           li
           li
             a(href='/')
             a(href='/')
               i.icon-home
               i.icon-home
-              span= t('nav.home')
+              span= t('nav.root')
           if !isGuest
           if !isGuest
             li
             li
               a(href='/admin')
               a(href='/admin')

+ 1 - 1
server/views/pages/view.pug

@@ -44,7 +44,7 @@ block content
               li
               li
                 a(href='/')
                 a(href='/')
                   i.icon-home
                   i.icon-home
-                  span= t('nav.home')
+                  span= t('nav.root')
               li
               li
                 a(href='/all')
                 a(href='/all')
                   i.icon-paper
                   i.icon-paper