/** * Copyright (c) 2015-present, Facebook, Inc. * All rights reserved. * * This source code is licensed under the BSD-style license found in the * LICENSE file in the root directory of this source tree. An additional grant * of patent rights can be found in the PATENTS file in the same directory. */ 'use strict'; var fs = require('fs'); var spawn = require('child_process').spawn; var firstLaunch = true; function guessEditor() { if (firstLaunch) { console.log('When you see Red Box with stack trace, you can click any ' + 'stack frame to jump to the source file. The packager will launch your ' + 'editor of choice. It will first look at REACT_EDITOR environment ' + 'variable, then at EDITOR. To set it up, you can add something like ' + 'REACT_EDITOR=atom to your .bashrc.'); firstLaunch = false; } var editor = process.env.REACT_EDITOR || process.env.EDITOR || 'subl'; return editor; } function launchEditor(fileName, lineNumber) { if (!fs.existsSync(fileName)) { return; } var argument = fileName; if (lineNumber) { argument += ':' + lineNumber; } var editor = guessEditor(); console.log('Opening ' + fileName + ' with ' + editor); spawn(editor, [argument], { stdio: ['pipe', 'pipe', process.stderr] }); } module.exports = launchEditor;