From 316d476d6d3b308ba1afdddf4ae2aaaaf5ea8472 Mon Sep 17 00:00:00 2001 From: Guillaume Chau Date: Mon, 6 Aug 2018 19:07:05 +0200 Subject: [PATCH] refactor: launch + more helpful error message --- packages/@vue/cli-plugin-eslint/package.json | 3 +-- packages/@vue/cli-plugin-eslint/ui/index.js | 2 +- packages/@vue/cli-plugin-pwa/package.json | 2 +- packages/@vue/cli-plugin-pwa/ui.js | 4 ++-- packages/@vue/cli-shared-utils/index.js | 1 + packages/@vue/cli-shared-utils/lib/launch.js | 16 ++++++++++++++++ packages/@vue/cli-shared-utils/package.json | 1 + .../cli-ui/apollo-server/connectors/files.js | 6 ++---- packages/@vue/cli-ui/package.json | 1 - packages/@vue/cli-ui/ui-defaults/suggestions.js | 2 +- packages/@vue/cli/lib/config.js | 3 +-- packages/@vue/cli/package.json | 1 - 12 files changed, 27 insertions(+), 15 deletions(-) create mode 100644 packages/@vue/cli-shared-utils/lib/launch.js diff --git a/packages/@vue/cli-plugin-eslint/package.json b/packages/@vue/cli-plugin-eslint/package.json index bb4b8230d..1772b2973 100644 --- a/packages/@vue/cli-plugin-eslint/package.json +++ b/packages/@vue/cli-plugin-eslint/package.json @@ -26,7 +26,6 @@ "babel-eslint": "^8.2.5", "eslint": "^4.19.1", "eslint-loader": "^2.0.0", - "eslint-plugin-vue": "^4.5.0", - "launch-editor": "^2.2.1" + "eslint-plugin-vue": "^4.5.0" } } diff --git a/packages/@vue/cli-plugin-eslint/ui/index.js b/packages/@vue/cli-plugin-eslint/ui/index.js index 9f66208d8..598080406 100644 --- a/packages/@vue/cli-plugin-eslint/ui/index.js +++ b/packages/@vue/cli-plugin-eslint/ui/index.js @@ -22,7 +22,7 @@ module.exports = api => { label: 'org.vue.eslint.suggestions.open-eslintrc.label', handler () { const file = config.foundFiles.eslint.path - const launch = require('launch-editor') + const { launch } = require('@vue/cli-shared-utils') launch(file) return { keep: true diff --git a/packages/@vue/cli-plugin-pwa/package.json b/packages/@vue/cli-plugin-pwa/package.json index db7ba8354..44dfe14ea 100644 --- a/packages/@vue/cli-plugin-pwa/package.json +++ b/packages/@vue/cli-plugin-pwa/package.json @@ -22,7 +22,7 @@ "access": "public" }, "dependencies": { - "launch-editor": "^2.2.1", + "@vue/cli-shared-utils": "^3.0.0-rc.10", "workbox-webpack-plugin": "^3.3.1" }, "devDependencies": { diff --git a/packages/@vue/cli-plugin-pwa/ui.js b/packages/@vue/cli-plugin-pwa/ui.js index 98777c9df..941d66873 100644 --- a/packages/@vue/cli-plugin-pwa/ui.js +++ b/packages/@vue/cli-plugin-pwa/ui.js @@ -131,7 +131,7 @@ module.exports = api => { label: 'org.vue.pwa.suggestions.open-vue.label', handler () { const file = config.foundFiles.vue.path - const launch = require('launch-editor') + const { launch } = require('@vue/cli-shared-utils') launch(file) return { keep: true @@ -148,7 +148,7 @@ module.exports = api => { label: 'org.vue.pwa.suggestions.open-manifest.label', handler () { const file = config.foundFiles.manifest.path - const launch = require('launch-editor') + const { launch } = require('@vue/cli-shared-utils') launch(file) return { keep: true diff --git a/packages/@vue/cli-shared-utils/index.js b/packages/@vue/cli-shared-utils/index.js index 678ce7f40..c5df8ba48 100644 --- a/packages/@vue/cli-shared-utils/index.js +++ b/packages/@vue/cli-shared-utils/index.js @@ -7,6 +7,7 @@ 'object', 'openBrowser', 'pluginResolution', + 'launch', 'request', 'spinner', 'validate' diff --git a/packages/@vue/cli-shared-utils/lib/launch.js b/packages/@vue/cli-shared-utils/lib/launch.js new file mode 100644 index 000000000..f3ec8474f --- /dev/null +++ b/packages/@vue/cli-shared-utils/lib/launch.js @@ -0,0 +1,16 @@ +const launch = require('launch-editor') + +exports.launch = (...args) => { + const file = args[0] + console.log(`Opening ${file}...`) + let cb = args[args.length - 1] + if (typeof cb !== 'function') { + cb = null + } + launch(...args, (fileName, errorMessage) => { + console.error(`Unable to open '${fileName}'`, errorMessage) + console.log(`Try setting the EDITOR env variable. More info: https://github.com/yyx990803/launch-editor`) + + if (cb) cb(fileName, errorMessage) + }) +} diff --git a/packages/@vue/cli-shared-utils/package.json b/packages/@vue/cli-shared-utils/package.json index 4482b9fb6..4c3aa1c63 100644 --- a/packages/@vue/cli-shared-utils/package.json +++ b/packages/@vue/cli-shared-utils/package.json @@ -25,6 +25,7 @@ "node-ipc": "^9.1.1", "opn": "^5.3.0", "ora": "^2.1.0", + "launch-editor": "^2.2.1", "request": "^2.87.0", "request-promise-native": "^1.0.5", "semver": "^5.5.0", diff --git a/packages/@vue/cli-ui/apollo-server/connectors/files.js b/packages/@vue/cli-ui/apollo-server/connectors/files.js index a6f37fed1..f450fd409 100644 --- a/packages/@vue/cli-ui/apollo-server/connectors/files.js +++ b/packages/@vue/cli-ui/apollo-server/connectors/files.js @@ -1,4 +1,4 @@ -const launch = require('launch-editor') +const { launch } = require('@vue/cli-shared-utils') const path = require('path') // Connectors const cwd = require('./cwd') @@ -22,9 +22,7 @@ async function openInEditor (input, context) { message: `Opening file '${query}' in code editor...`, type: 'info' }, context) - launch(query, (fileName, errorMessage) => { - console.error(`Unable to open '${fileName}'`, errorMessage) - }) + launch(query) return true } diff --git a/packages/@vue/cli-ui/package.json b/packages/@vue/cli-ui/package.json index 51da867b4..b69b82ac7 100644 --- a/packages/@vue/cli-ui/package.json +++ b/packages/@vue/cli-ui/package.json @@ -41,7 +41,6 @@ "graphql-type-json": "^0.2.1", "javascript-stringify": "^1.6.0", "js-yaml": "^3.12.0", - "launch-editor": "^2.2.1", "lodash.merge": "^4.6.1", "lowdb": "^1.0.0", "lru-cache": "^4.1.3", diff --git a/packages/@vue/cli-ui/ui-defaults/suggestions.js b/packages/@vue/cli-ui/ui-defaults/suggestions.js index 91cc8b51d..8378ec344 100644 --- a/packages/@vue/cli-ui/ui-defaults/suggestions.js +++ b/packages/@vue/cli-ui/ui-defaults/suggestions.js @@ -52,7 +52,7 @@ module.exports = api => { handler () { const file = config.foundFiles.vue.path console.log('open', file) - const launch = require('launch-editor') + const { launch } = require('@vue/cli-shared-utils') launch(file) return { keep: true diff --git a/packages/@vue/cli/lib/config.js b/packages/@vue/cli/lib/config.js index 017d910e9..5a85897f2 100644 --- a/packages/@vue/cli/lib/config.js +++ b/packages/@vue/cli/lib/config.js @@ -1,8 +1,7 @@ const fs = require('fs-extra') const path = require('path') const homedir = require('os').homedir() -const { get, set, unset, error } = require('@vue/cli-shared-utils') -const launch = require('launch-editor') +const { get, set, unset, error, launch } = require('@vue/cli-shared-utils') async function config (value, options) { const file = path.resolve(homedir, '.vuerc') diff --git a/packages/@vue/cli/package.json b/packages/@vue/cli/package.json index 1ffdf6d56..d564a6ca6 100644 --- a/packages/@vue/cli/package.json +++ b/packages/@vue/cli/package.json @@ -42,7 +42,6 @@ "javascript-stringify": "^1.6.0", "js-yaml": "^3.12.0", "klaw-sync": "^4.0.0", - "launch-editor": "^2.2.1", "lodash.clonedeep": "^4.5.0", "minimist": "^1.2.0", "recast": "^0.15.2",