From 7ab8b1b2ddb0e02a270a2ae717441dbd45b2bac8 Mon Sep 17 00:00:00 2001 From: Jonathan Pirnay Date: Thu, 4 Sep 2014 18:07:13 +0200 Subject: [PATCH] path fix for application support --- src/core/search/SearchStore.js | 41 +++++++++++++++++++++++----- src/core/search/SearchStore.js.map | 2 +- src/core/search/SearchStore.ts | 44 +++++++++++++++++++++++++----- src/main.js | 10 ++++++- src/main.js.map | 2 +- src/main.ts | 11 +++++++- 6 files changed, 92 insertions(+), 18 deletions(-) diff --git a/src/core/search/SearchStore.js b/src/core/search/SearchStore.js index fabe905d..6ddcdd4b 100644 --- a/src/core/search/SearchStore.js +++ b/src/core/search/SearchStore.js @@ -1,6 +1,6 @@ -/// +/// var childProcess = require('child_process'); -var fs = require('fs'); +var fs = require('fs-extra'); var path = require('path'); var ObjectUtils = require('../utils/ObjectUtils'); @@ -156,25 +156,45 @@ var SearchStore = (function () { /** * Returns the arguments the database server should start with. The following options are currently included: * - * - __-p__: The path where elasticsearch should save it's process id + * - __-p__: The path where elasticsearch should save its process id * - __-Des.config__: The path to the config file * - __-Des.path.data__: The path where the indexes should be stored * * - __-Des.logger.level__: The level of the logger * + * If we are in node-webkit and the config-file does not exist in Peeriod's specific application data path, + * it is dumped there. This is to ensure elasticsearch's whitespace problem in paths, as we have no control over + * where users store their applications. + * * @method core.search.SearchStore~_getDatabaseServerProcessArgs * * @returns {Array} */ SearchStore.prototype._getDatabaseServerProcessArgs = function () { - var configPath = path.resolve(__dirname, '../../', this._config.get('search.searchStoreConfig')); - var storagePath = path.resolve(__dirname, '../../', this._config.get('search.databasePath')); + var originalConfigPath = path.resolve(__dirname, '../../', this._config.get('search.searchStoreConfig')); + var storagePath = null; + var configPath = null; + + if (process.env.IS_NODE_WEBKIT) { + var destinationConfigPath = path.resolve(this._config.get('app.dataPath'), '../../Peeriod', this._config.get('search.searchStoreConfig')); + + if (!fs.existsSync(destinationConfigPath)) { + var origContents = fs.readFileSync(originalConfigPath, { encoding: 'utf8' }); + + fs.outputFileSync(destinationConfigPath, origContents); + } + + configPath = destinationConfigPath; + storagePath = path.resolve(this._config.get('app.dataPath'), '../../Peeriod', this._config.get('search.databasePath')); + } else { + storagePath = path.resolve(__dirname, '../../', this._config.get('search.databasePath')); + configPath = originalConfigPath; + } return [ '-p', this._getDatabaseServerProcessIdPath(), ('-Des.config=' + configPath), ('-Des.path.data=' + storagePath), - ('-Des.logger.level=DEBUG'), '-d' ]; }; @@ -182,12 +202,19 @@ var SearchStore = (function () { /** * Returns the path where to look up the database server process id. * + * This is in the database server module path when no node-webkit is used. + * Otherwise it's the os-specific appDataPath. + * * @method core.search.SearchStore~_getDatabaseServerProcessIdPath * * @returns {string} */ SearchStore.prototype._getDatabaseServerProcessIdPath = function () { - return path.join(this._getDatabaseServerModulePath(), this._config.get('search.pidFilename')); + if (!process.env.IS_NODE_WEBKIT) { + return path.join(this._getDatabaseServerModulePath(), this._config.get('search.pidFilename')); + } else { + return path.resolve(this._config.get('app.dataPath'), '../../Peeriod', this._config.get('search.pidFilename')); + } }; /** diff --git a/src/core/search/SearchStore.js.map b/src/core/search/SearchStore.js.map index 7c9e2b2e..23706050 100644 --- a/src/core/search/SearchStore.js.map +++ b/src/core/search/SearchStore.js.map @@ -1 +1 @@ -{"version":3,"file":"SearchStore.js","sourceRoot":"","sources":["SearchStore.ts"],"names":["SearchStore","SearchStore.constructor","SearchStore.getDefaults","SearchStore.close","SearchStore.isOpen","SearchStore.open","SearchStore._getDatabaseServerModulePath","SearchStore._getDatabaseServerBinaryPath","SearchStore._getDatabaseServerProcessArgs","SearchStore._getDatabaseServerProcessIdPath","SearchStore._startUpDatabaseServer"],"mappings":"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"} \ No newline at end of file +{"version":3,"file":"SearchStore.js","sourceRoot":"","sources":["SearchStore.ts"],"names":["SearchStore","SearchStore.constructor","SearchStore.getDefaults","SearchStore.close","SearchStore.isOpen","SearchStore.open","SearchStore._getDatabaseServerModulePath","SearchStore._getDatabaseServerBinaryPath","SearchStore._getDatabaseServerProcessArgs","SearchStore._getDatabaseServerProcessIdPath","SearchStore._startUpDatabaseServer"],"mappings":"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"} \ No newline at end of file diff --git a/src/core/search/SearchStore.ts b/src/core/search/SearchStore.ts index 44de9f9e..cb51a1e6 100644 --- a/src/core/search/SearchStore.ts +++ b/src/core/search/SearchStore.ts @@ -1,7 +1,7 @@ -/// +/// import childProcess = require('child_process'); -import fs = require('fs'); +import fs = require('fs-extra'); import path = require('path'); import AppQuitHandlerInterface = require('../utils/interfaces/AppQuitHandlerInterface'); @@ -169,25 +169,47 @@ class SearchStore implements SearchStoreInterface { /** * Returns the arguments the database server should start with. The following options are currently included: * - * - __-p__: The path where elasticsearch should save it's process id + * - __-p__: The path where elasticsearch should save its process id * - __-Des.config__: The path to the config file * - __-Des.path.data__: The path where the indexes should be stored * * - __-Des.logger.level__: The level of the logger * + * If we are in node-webkit and the config-file does not exist in Peeriod's specific application data path, + * it is dumped there. This is to ensure elasticsearch's whitespace problem in paths, as we have no control over + * where users store their applications. + * * @method core.search.SearchStore~_getDatabaseServerProcessArgs * * @returns {Array} */ private _getDatabaseServerProcessArgs ():Array { - var configPath:string = path.resolve(__dirname, '../../', this._config.get('search.searchStoreConfig')); - var storagePath:string = path.resolve(__dirname, '../../', this._config.get('search.databasePath')); + var originalConfigPath:string = path.resolve(__dirname, '../../', this._config.get('search.searchStoreConfig')); + var storagePath:string = null; + var configPath:string = null; + + if (process.env.IS_NODE_WEBKIT) { + var destinationConfigPath:string = path.resolve(this._config.get('app.dataPath'), '../../Peeriod', this._config.get('search.searchStoreConfig')); + + if (!fs.existsSync(destinationConfigPath)) { + var origContents:string = fs.readFileSync(originalConfigPath, {encoding: 'utf8'}); + + fs.outputFileSync(destinationConfigPath, origContents); + } + + configPath = destinationConfigPath; + storagePath = path.resolve(this._config.get('app.dataPath'), '../../Peeriod', this._config.get('search.databasePath')); + } + else { + storagePath = path.resolve(__dirname, '../../', this._config.get('search.databasePath')); + configPath = originalConfigPath; + } return [ '-p', this._getDatabaseServerProcessIdPath(), ('-Des.config=' + configPath), ('-Des.path.data=' + storagePath), - ('-Des.logger.level=DEBUG'), + //('-Des.logger.level=DEBUG'), '-d' ]; } @@ -195,12 +217,20 @@ class SearchStore implements SearchStoreInterface { /** * Returns the path where to look up the database server process id. * + * This is in the database server module path when no node-webkit is used. + * Otherwise it's the os-specific appDataPath. + * * @method core.search.SearchStore~_getDatabaseServerProcessIdPath * * @returns {string} */ private _getDatabaseServerProcessIdPath ():string { - return path.join(this._getDatabaseServerModulePath(), this._config.get('search.pidFilename')); + if (!process.env.IS_NODE_WEBKIT) { + return path.join(this._getDatabaseServerModulePath(), this._config.get('search.pidFilename')); + } + else { + return path.resolve(this._config.get('app.dataPath'), '../../Peeriod', this._config.get('search.pidFilename')); + } } /** diff --git a/src/main.js b/src/main.js index 59229719..74195580 100644 --- a/src/main.js +++ b/src/main.js @@ -30,7 +30,15 @@ var guiApp = gui && gui.App ? gui.App : { } }; -var dataPath = gui && gui.App ? gui.App.dataPath : path.resolve('./appDataFolder'); +var dataPath = null; + +if (gui && gui.App) { + dataPath = gui.App.dataPath; + process.env.IS_NODE_WEBKIT = true; +} else { + dataPath = path.resolve('./appDataFolder'); +} + var guiWindow = gui && gui.Window ? gui.Window.get() : null; var logUsageTimeout = null; diff --git a/src/main.js.map b/src/main.js.map index 8e828e21..85deeb6c 100644 --- a/src/main.js.map +++ b/src/main.js.map @@ -1 +1 @@ -{"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAApC,IAEI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;AAC1B,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;AAC5B,IAAI,GAAG;;AAEP,IAAI;IACH,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;CACvB,CACD,OAAO,CAAC,CAAE;IACT,6BAA6B;CAC7B;;AAED,yFAAyF;AAEzF,+BAAmC;;AAEnC,IAAI,MAAM,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC,MAAM,CAAC,CAAC;;AAElE,IAAI,QAAQ;AACZ,IAAI;IACH,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,SAAS;CACrC,CACD,OAAO,CAAC,CAAE;IACT,QAAQ,GAAG,IAAI;CACf;;AAED,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;AACvB,GAAG,CAAC,aAAa,CAAC,qCAAqC,CAAC;;AAExD,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;IACvC,IAAI,EAAE;QACL,OAAO,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACD;;AAED,IAAI,QAAQ,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;AAClF,IAAI,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;;AAE3D,IAAI,eAAe,GAAG,IAAI;;AAE1B,IAAI,kBAAkB,GAAG;IACxB,eAAe,GAAG,UAAU,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE,MAAM;YAC9C,IAAI,GAAG,CAAE;gBACR,MAAO;aACP;;YAED,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,8BAA8B,EAAE,MAAM,CAAC;QAC5D,CAAC,CAAC;QACF,eAAe,GAAG,IAAI;;QAEtB,kBAAkB,CAAC,CAAC;IACrB,CAAC,EAAE,KAAK,CAAC;AACV,CAAC;;AAED,IAAI,KAAK,GAAG,IAAI;;AAChB,uBAAuB;AAEvB,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC3C,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAgBrB;;;;;;;;;;;EADG"} \ No newline at end of file +{"version":3,"file":"main.js","sourceRoot":"","sources":["main.ts"],"names":[],"mappings":"AAAA,oCAAoC;AAApC,IAEI,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC;AAC1B,IAAI,KAAK,GAAG,OAAO,CAAC,OAAO,CAAC;AAC5B,IAAI,GAAG;;AAEP,IAAI;IACH,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC;CACvB,CACD,OAAO,CAAC,CAAE;IACT,6BAA6B;CAC7B;;AAED,yFAAyF;AAEzF,+BAAmC;;AAEnC,IAAI,MAAM,GAAG,OAAO,CAAC,mCAAmC,CAAC,CAAC,MAAM,CAAC,CAAC;;AAElE,IAAI,QAAQ;AACZ,IAAI;IACH,QAAQ,GAAG,MAAM,IAAI,MAAM,CAAC,SAAS;CACrC,CACD,OAAO,CAAC,CAAE;IACT,QAAQ,GAAG,IAAI;CACf;;AAED,GAAG,CAAC,SAAS,CAAC,QAAQ,CAAC;AACvB,GAAG,CAAC,aAAa,CAAC,qCAAqC,CAAC;;AAExD,IAAI,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG;IACvC,IAAI,EAAE;QACL,OAAO,CAAC,IAAI,CAAC,CAAC;IACf,CAAC;CACD;;AAED,IAAI,QAAQ,GAAG,IAAI;;AAEnB,IAAI,GAAG,IAAI,GAAG,CAAC,GAAG,CAAE;IACnB,QAAQ,GAAG,GAAG,CAAC,GAAG,CAAC,QAAQ;IAC3B,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,IAAI;CACjC,KACI;IACJ,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,iBAAiB,CAAC;CAC1C;;AAED,IAAI,SAAS,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI;;AAE3D,IAAI,eAAe,GAAG,IAAI;;AAE1B,IAAI,kBAAkB,GAAG;IACxB,eAAe,GAAG,UAAU,CAAC;QAC5B,KAAK,CAAC,MAAM,CAAC,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,EAAE,MAAM;YAC9C,IAAI,GAAG,CAAE;gBACR,MAAO;aACP;;YAED,MAAM,CAAC,GAAG,CAAC,OAAO,EAAE,8BAA8B,EAAE,MAAM,CAAC;QAC5D,CAAC,CAAC;QACF,eAAe,GAAG,IAAI;;QAEtB,kBAAkB,CAAC,CAAC;IACrB,CAAC,EAAE,KAAK,CAAC;AACV,CAAC;;AAED,IAAI,KAAK,GAAG,IAAI;;AAChB,uBAAuB;AAEvB,GAAG,CAAC,KAAK,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,SAAS,CAAC;AAC3C,KAAK,GAAG,GAAG,CAAC,OAAO,CAAC,CAAC;AAgBrB;;;;;;;;;;;EADG"} \ No newline at end of file diff --git a/src/main.ts b/src/main.ts index 4d6550c3..2b290b1b 100644 --- a/src/main.ts +++ b/src/main.ts @@ -34,7 +34,16 @@ var guiApp = gui && gui.App ? gui.App : { } }; -var dataPath = gui && gui.App ? gui.App.dataPath : path.resolve('./appDataFolder'); +var dataPath = null; + +if (gui && gui.App) { + dataPath = gui.App.dataPath; + process.env.IS_NODE_WEBKIT = true; +} +else { + dataPath = path.resolve('./appDataFolder'); +} + var guiWindow = gui && gui.Window ? gui.Window.get() : null; var logUsageTimeout = null;