| OLD | NEW | 
|    1 // Copyright (c) 2012, the Dart project authors.  Please see the AUTHORS file |    1 // Copyright (c) 2012, 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 /// Generic utility functions. Stuff that should possibly be in core. |    5 /// Generic utility functions. Stuff that should possibly be in core. | 
|    6 library pub.utils; |    6 library pub.utils; | 
|    7  |    7  | 
|    8 import 'dart:async'; |    8 import 'dart:async'; | 
|    9 import "dart:convert"; |    9 import "dart:convert"; | 
|   10 import 'dart:io'; |   10 import 'dart:io'; | 
| (...skipping 767 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  778     } |  778     } | 
|  779     return map; |  779     return map; | 
|  780   }); |  780   }); | 
|  781 } |  781 } | 
|  782  |  782  | 
|  783 /// Whether "special" strings such as Unicode characters or color escapes are |  783 /// Whether "special" strings such as Unicode characters or color escapes are | 
|  784 /// safe to use. |  784 /// safe to use. | 
|  785 /// |  785 /// | 
|  786 /// On Windows or when not printing to a terminal, only printable ASCII |  786 /// On Windows or when not printing to a terminal, only printable ASCII | 
|  787 /// characters should be used. |  787 /// characters should be used. | 
|  788 bool get canUseSpecialChars => !runningAsTest && |  788 bool get canUseSpecialChars => !runningFromTest && !runningAsTest && | 
|  789     Platform.operatingSystem != 'windows' && |  789     Platform.operatingSystem != 'windows' && | 
|  790     stdioType(stdout) == StdioType.TERMINAL; |  790     stdioType(stdout) == StdioType.TERMINAL; | 
|  791  |  791  | 
|  792 /// Gets a "special" string (ANSI escape or Unicode). |  792 /// Gets a "special" string (ANSI escape or Unicode). | 
|  793 /// |  793 /// | 
|  794 /// On Windows or when not printing to a terminal, returns something else since |  794 /// On Windows or when not printing to a terminal, returns something else since | 
|  795 /// those aren't supported. |  795 /// those aren't supported. | 
|  796 String getSpecial(String special, [String onWindows = '']) => |  796 String getSpecial(String special, [String onWindows = '']) => | 
|  797     canUseSpecialChars ? special : onWindows; |  797     canUseSpecialChars ? special : onWindows; | 
|  798  |  798  | 
|  799 /// Prepends each line in [text] with [prefix]. |  799 /// Prepends each line in [text] with [prefix]. | 
|  800 /// |  800 /// | 
|  801 /// If [firstPrefix] is passed, the first line is prefixed with that instead. |  801 /// If [firstPrefix] is passed, the first line is prefixed with that instead. | 
|  802 String prefixLines(String text, {String prefix: '| ', String firstPrefix}) { |  802 String prefixLines(String text, {String prefix: '| ', String firstPrefix}) { | 
|  803   var lines = text.split('\n'); |  803   var lines = text.split('\n'); | 
|  804   if (firstPrefix == null) { |  804   if (firstPrefix == null) { | 
|  805     return lines.map((line) => '$prefix$line').join('\n'); |  805     return lines.map((line) => '$prefix$line').join('\n'); | 
|  806   } |  806   } | 
|  807  |  807  | 
|  808   var firstLine = "$firstPrefix${lines.first}"; |  808   var firstLine = "$firstPrefix${lines.first}"; | 
|  809   lines = lines.skip(1).map((line) => '$prefix$line').toList(); |  809   lines = lines.skip(1).map((line) => '$prefix$line').toList(); | 
|  810   lines.insert(0, firstLine); |  810   lines.insert(0, firstLine); | 
|  811   return lines.join('\n'); |  811   return lines.join('\n'); | 
|  812 } |  812 } | 
|  813  |  813  | 
|  814 /// Whether pub is running as a subprocess in an integration test or in a unit |  | 
|  815 /// test that has explicitly set this. |  | 
|  816 bool runningAsTest = Platform.environment.containsKey('_PUB_TESTING'); |  | 
|  817  |  | 
|  818 /// Whether today is April Fools' day. |  814 /// Whether today is April Fools' day. | 
|  819 bool get isAprilFools { |  815 bool get isAprilFools { | 
|  820   // Tests should never see April Fools' output. |  816   // Tests should never see April Fools' output. | 
|  821   if (runningAsTest) return false; |  817   if (runningFromTest) return false; | 
|  822  |  818  | 
|  823   var date = new DateTime.now(); |  819   var date = new DateTime.now(); | 
|  824   return date.month == 4 && date.day == 1; |  820   return date.month == 4 && date.day == 1; | 
|  825 } |  821 } | 
|  826  |  822  | 
|  827 /// Wraps [fn] to guard against several different kinds of stack overflow |  823 /// Wraps [fn] to guard against several different kinds of stack overflow | 
|  828 /// exceptions: |  824 /// exceptions: | 
|  829 /// |  825 /// | 
|  830 /// * A sufficiently long [Future] chain can cause a stack overflow if there are |  826 /// * A sufficiently long [Future] chain can cause a stack overflow if there are | 
|  831 ///   no asynchronous operations in it (issue 9583). |  827 ///   no asynchronous operations in it (issue 9583). | 
| (...skipping 87 matching lines...) Expand 10 before | Expand all | Expand 10 after  Loading... | 
|  919   } else { |  915   } else { | 
|  920     throw new ApplicationException(message); |  916     throw new ApplicationException(message); | 
|  921   } |  917   } | 
|  922 } |  918 } | 
|  923  |  919  | 
|  924 /// Throw a [DataException] with [message] to indicate that the command has |  920 /// Throw a [DataException] with [message] to indicate that the command has | 
|  925 /// failed because of invalid input data. |  921 /// failed because of invalid input data. | 
|  926 /// |  922 /// | 
|  927 /// This will report the error and cause pub to exit with [exit_codes.DATA]. |  923 /// This will report the error and cause pub to exit with [exit_codes.DATA]. | 
|  928 void dataError(String message) => throw new DataException(message); |  924 void dataError(String message) => throw new DataException(message); | 
| OLD | NEW |