From c4029fb9b6f7ad4de5dd28c7cd35f8692011468a Mon Sep 17 00:00:00 2001 From: Toilal Date: Fri, 24 Mar 2017 12:15:04 +0100 Subject: [PATCH 1/3] Fix custom build when openlayers is installed from yarn package manager This enhance the procedure to find path of jsdoc binary by checking if the file exists. It also use 2 possible paths to perform this check, one for npm and the other for yarn. Close #6633 --- tasks/generate-info.js | 29 ++++++++++++++++++++++++----- 1 file changed, 24 insertions(+), 5 deletions(-) diff --git a/tasks/generate-info.js b/tasks/generate-info.js index 72b0653657..7e349293f7 100644 --- a/tasks/generate-info.js +++ b/tasks/generate-info.js @@ -14,14 +14,33 @@ var externsPaths = [ ]; var infoPath = path.join(__dirname, '..', 'build', 'info.json'); -var jsdocResolved = require.resolve('jsdoc/jsdoc.js'); -var jsdoc = path.resolve(path.dirname(jsdocResolved), '../.bin/jsdoc'); +/** + * Get checked path of a binary. + * @param {string} binaryName Binary name of the binary path to find. + */ +function getBinaryPath(binaryName) { + if (isWindows) { + binaryName += '.cmd' + } -// on Windows, use jsdoc.cmd -if (isWindows) { - jsdoc += '.cmd'; + var jsdocResolved = require.resolve('jsdoc/jsdoc.js'); + var expectedPaths = [ + path.join(__dirname, '..', 'node_modules', '.bin', binaryName), + path.resolve(path.join(path.dirname(jsdocResolved), '..', '.bin', binaryName)) + ] + + for (var i = 0; i < expectedPaths.length; i++) { + var expectedPath = expectedPaths[i]; + if (fs.existsSync(expectedPath)) { + return expectedPath; + } + } + + throw Error("JsDoc binary was not found in any of the expected paths: " + expectedPaths); } +var jsdoc = getBinaryPath('jsdoc'); + var jsdocConfig = path.join( __dirname, '..', 'config', 'jsdoc', 'info', 'conf.json'); From 166ef525f098f39a251d9c1ef48d5ae88476ec99 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Sun, 26 Mar 2017 14:26:23 +0200 Subject: [PATCH 2/3] Remove lint --- tasks/generate-info.js | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/tasks/generate-info.js b/tasks/generate-info.js index 7e349293f7..38ef2fd579 100644 --- a/tasks/generate-info.js +++ b/tasks/generate-info.js @@ -20,14 +20,14 @@ var infoPath = path.join(__dirname, '..', 'build', 'info.json'); */ function getBinaryPath(binaryName) { if (isWindows) { - binaryName += '.cmd' + binaryName += '.cmd'; } var jsdocResolved = require.resolve('jsdoc/jsdoc.js'); var expectedPaths = [ path.join(__dirname, '..', 'node_modules', '.bin', binaryName), path.resolve(path.join(path.dirname(jsdocResolved), '..', '.bin', binaryName)) - ] + ]; for (var i = 0; i < expectedPaths.length; i++) { var expectedPath = expectedPaths[i]; @@ -36,7 +36,7 @@ function getBinaryPath(binaryName) { } } - throw Error("JsDoc binary was not found in any of the expected paths: " + expectedPaths); + throw Error('JsDoc binary was not found in any of the expected paths: ' + expectedPaths); } var jsdoc = getBinaryPath('jsdoc'); From e5ef1aa5a19525922f37ec900983e0eff7942531 Mon Sep 17 00:00:00 2001 From: Andreas Hocevar Date: Sun, 26 Mar 2017 14:35:58 +0200 Subject: [PATCH 3/3] Add missing return annotation --- tasks/generate-info.js | 1 + 1 file changed, 1 insertion(+) diff --git a/tasks/generate-info.js b/tasks/generate-info.js index 38ef2fd579..a5e7fba30a 100644 --- a/tasks/generate-info.js +++ b/tasks/generate-info.js @@ -17,6 +17,7 @@ var infoPath = path.join(__dirname, '..', 'build', 'info.json'); /** * Get checked path of a binary. * @param {string} binaryName Binary name of the binary path to find. + * @return {string} Path. */ function getBinaryPath(binaryName) { if (isWindows) {