mirror of
https://github.com/atom/atom.git
synced 2026-04-28 03:01:47 -04:00
Limit argument parsing when --url-handler is set
This commit is contained in:
27
spec/main-process/parse-command-line.test.js
Normal file
27
spec/main-process/parse-command-line.test.js
Normal file
@@ -0,0 +1,27 @@
|
||||
/** @babel */
|
||||
|
||||
import parseCommandLine from '../../src/main-process/parse-command-line'
|
||||
|
||||
describe('parseCommandLine', function () {
|
||||
describe('when --url-handler is not passed', function () {
|
||||
it('parses arguments as normal', function () {
|
||||
const args = parseCommandLine(['-d', '--safe', '--test', 'atom://test/url', 'atom://other/url', '/some/path'])
|
||||
assert.isTrue(args.devMode)
|
||||
assert.isTrue(args.safeMode)
|
||||
assert.isTrue(args.test)
|
||||
assert.deepEqual(args.urlsToOpen, ['atom://test/url', 'atom://other/url'])
|
||||
assert.deepEqual(args.pathsToOpen, ['/some/path'])
|
||||
})
|
||||
})
|
||||
|
||||
describe('when --url-handler is passed', function () {
|
||||
it('ignores other arguments and limits to one URL', function () {
|
||||
const args = parseCommandLine(['-d', '--url-handler', '--safe', '--test', 'atom://test/url', 'atom://other/url', '/some/path'])
|
||||
assert.isUndefined(args.devMode)
|
||||
assert.isUndefined(args.safeMode)
|
||||
assert.isUndefined(args.test)
|
||||
assert.deepEqual(args.urlsToOpen, ['atom://test/url'])
|
||||
assert.deepEqual(args.pathsToOpen, [])
|
||||
})
|
||||
})
|
||||
})
|
||||
@@ -58,8 +58,18 @@ module.exports = function parseCommandLine (processArgs) {
|
||||
options.string('user-data-dir')
|
||||
options.boolean('clear-window-state').describe('clear-window-state', 'Delete all Atom environment state.')
|
||||
options.boolean('enable-electron-logging').describe('enable-electron-logging', 'Enable low-level logging messages from Electron.')
|
||||
options.boolean('url-handler')
|
||||
|
||||
const args = options.argv
|
||||
let args = options.argv
|
||||
|
||||
// If --url-handler is set, then we parse NOTHING else
|
||||
if (args.urlHandler) {
|
||||
args = {
|
||||
urlHandler: true,
|
||||
'url-handler': true,
|
||||
_: args._
|
||||
}
|
||||
}
|
||||
|
||||
if (args.help) {
|
||||
process.stdout.write(options.help())
|
||||
@@ -101,8 +111,8 @@ module.exports = function parseCommandLine (processArgs) {
|
||||
const userDataDir = args['user-data-dir']
|
||||
const profileStartup = args['profile-startup']
|
||||
const clearWindowState = args['clear-window-state']
|
||||
const pathsToOpen = []
|
||||
const urlsToOpen = []
|
||||
let pathsToOpen = []
|
||||
let urlsToOpen = []
|
||||
let devMode = args['dev']
|
||||
let devResourcePath = process.env.ATOM_DEV_RESOURCE_PATH || path.join(app.getPath('home'), 'github', 'atom')
|
||||
let resourcePath = null
|
||||
@@ -115,6 +125,14 @@ module.exports = function parseCommandLine (processArgs) {
|
||||
}
|
||||
}
|
||||
|
||||
// When performing as a URL handler, only accept one URL and no paths
|
||||
if (args.urlHandler) {
|
||||
pathsToOpen = []
|
||||
if (urlsToOpen.length > 1) {
|
||||
urlsToOpen.length = 1
|
||||
}
|
||||
}
|
||||
|
||||
if (args['resource-path']) {
|
||||
devMode = true
|
||||
devResourcePath = args['resource-path']
|
||||
|
||||
Reference in New Issue
Block a user