OLD | NEW |
---|---|
1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file | 1 // Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
2 // for details. All rights reserved. Use of this source code is governed by a | 2 // for details. All rights reserved. Use of this source code is governed by a |
3 // BSD-style license that can be found in the LICENSE file. | 3 // BSD-style license that can be found in the LICENSE file. |
4 | 4 |
5 library pub.command_runner; | 5 library pub.command_runner; |
6 | 6 |
7 import 'dart:async'; | 7 import 'dart:async'; |
8 import 'dart:io'; | 8 import 'dart:io'; |
9 | 9 |
10 import 'package:args/args.dart'; | 10 import 'package:args/args.dart'; |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
123 | 123 |
124 // Explicitly exit on success to ensure that any dangling dart:io handles | 124 // Explicitly exit on success to ensure that any dangling dart:io handles |
125 // don't cause the process to never terminate. | 125 // don't cause the process to never terminate. |
126 await flushThenExit(exit_codes.SUCCESS); | 126 await flushThenExit(exit_codes.SUCCESS); |
127 } catch (error, chain) { | 127 } catch (error, chain) { |
128 log.exception(error, chain); | 128 log.exception(error, chain); |
129 | 129 |
130 if (options['trace']) { | 130 if (options['trace']) { |
131 log.dumpTranscript(); | 131 log.dumpTranscript(); |
132 } else if (!isUserFacingException(error)) { | 132 } else if (!isUserFacingException(error)) { |
133 // TODO(23505): Implement proper shell escaping, not a partial hack. | |
134 protectArgument(String x) => x.contains(' ') ? '"$x"' : x; | |
nweiz
2015/05/22 20:01:34
Nit: don't type-annotate local variables, includin
| |
133 log.error(""" | 135 log.error(""" |
134 This is an unexpected error. Please run | 136 This is an unexpected error. Please run |
135 | 137 |
136 pub --trace ${options.arguments.map((arg) => "'$arg'").join(' ')} | 138 pub --trace ${options.arguments.map(protectArgument).join(' ')} |
137 | 139 |
138 and include the results in a bug report on http://dartbug.com/new. | 140 and include the results in a bug report on http://dartbug.com/new. |
139 """); | 141 """); |
140 } | 142 } |
141 | 143 |
142 await flushThenExit(_chooseExitCode(error)); | 144 await flushThenExit(_chooseExitCode(error)); |
143 } | 145 } |
144 } | 146 } |
145 | 147 |
146 void printUsage() { | 148 void printUsage() { |
(...skipping 25 matching lines...) Expand all Loading... | |
172 Future _validatePlatform() async { | 174 Future _validatePlatform() async { |
173 if (Platform.operatingSystem != 'windows') return; | 175 if (Platform.operatingSystem != 'windows') return; |
174 | 176 |
175 var result = await runProcess('ver', []); | 177 var result = await runProcess('ver', []); |
176 if (result.stdout.join('\n').contains('XP')) { | 178 if (result.stdout.join('\n').contains('XP')) { |
177 log.error('Sorry, but pub is not supported on Windows XP.'); | 179 log.error('Sorry, but pub is not supported on Windows XP.'); |
178 await flushThenExit(exit_codes.USAGE); | 180 await flushThenExit(exit_codes.USAGE); |
179 } | 181 } |
180 } | 182 } |
181 } | 183 } |
OLD | NEW |