Chromium Code Reviews

Side by Side Diff: lib/src/utils.dart

Issue 1145993003: Fix asset and SDK path detection. (Closed) Base URL: git@github.com:dart-lang/pub_test@master
Patch Set: Code review changes Created 5 years, 7 months ago
Use n/p to move between diff chunks; N/P to move between comments.
Jump to:
View unified diff |
« no previous file with comments | « lib/src/sdk.dart ('k') | test/real_version_test.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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';
11 11
12 // This is used by [libraryPath]. It must be kept up-to-date with all libraries
13 // whose paths are looked up using that function.
14 @MirrorsUsed(targets: const ['pub.io', 'test_pub'])
15 import 'dart:mirrors';
16
17 import "package:crypto/crypto.dart"; 12 import "package:crypto/crypto.dart";
18 import 'package:path/path.dart' as path; 13 import 'package:path/path.dart' as path;
19 import "package:stack_trace/stack_trace.dart"; 14 import "package:stack_trace/stack_trace.dart";
20 15
21 import 'exceptions.dart'; 16 import 'exceptions.dart';
17 import 'io.dart';
22 import 'log.dart' as log; 18 import 'log.dart' as log;
23 19
24 export '../../asset/dart/utils.dart'; 20 export '../../asset/dart/utils.dart';
25 21
26 /// A regular expression matching a Dart identifier. 22 /// A regular expression matching a Dart identifier.
27 /// 23 ///
28 /// This also matches a package name, since they must be Dart identifiers. 24 /// This also matches a package name, since they must be Dart identifiers.
29 final identifierRegExp = new RegExp(r"[a-zA-Z_][a-zA-Z0-9_]+"); 25 final identifierRegExp = new RegExp(r"[a-zA-Z_][a-zA-Z0-9_]+");
30 26
31 /// Like [identifierRegExp], but anchored so that it only matches strings that 27 /// Like [identifierRegExp], but anchored so that it only matches strings that
(...skipping 745 matching lines...)
777 }); 773 });
778 return Future.wait(pairs).then((resolvedPairs) { 774 return Future.wait(pairs).then((resolvedPairs) {
779 var map = {}; 775 var map = {};
780 for (var pair in resolvedPairs) { 776 for (var pair in resolvedPairs) {
781 map[pair.first] = pair.last; 777 map[pair.first] = pair.last;
782 } 778 }
783 return map; 779 return map;
784 }); 780 });
785 } 781 }
786 782
787 /// Returns the path to the library named [libraryName].
788 ///
789 /// The library name must be globally unique, or the wrong library path may be
790 /// returned. Any libraries accessed must be added to the [MirrorsUsed]
791 /// declaration in the import above.
792 String libraryPath(String libraryName) {
793 var lib = currentMirrorSystem().findLibrary(new Symbol(libraryName));
794 return path.fromUri(lib.uri);
795 }
796
797 /// Whether "special" strings such as Unicode characters or color escapes are 783 /// Whether "special" strings such as Unicode characters or color escapes are
798 /// safe to use. 784 /// safe to use.
799 /// 785 ///
800 /// 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
801 /// characters should be used. 787 /// characters should be used.
802 bool get canUseSpecialChars => !runningAsTest && 788 bool get canUseSpecialChars => !runningAsTest &&
803 Platform.operatingSystem != 'windows' && 789 Platform.operatingSystem != 'windows' &&
804 stdioType(stdout) == StdioType.TERMINAL; 790 stdioType(stdout) == StdioType.TERMINAL;
805 791
806 /// Gets a "special" string (ANSI escape or Unicode). 792 /// Gets a "special" string (ANSI escape or Unicode).
(...skipping 126 matching lines...)
933 } else { 919 } else {
934 throw new ApplicationException(message); 920 throw new ApplicationException(message);
935 } 921 }
936 } 922 }
937 923
938 /// Throw a [DataException] with [message] to indicate that the command has 924 /// Throw a [DataException] with [message] to indicate that the command has
939 /// failed because of invalid input data. 925 /// failed because of invalid input data.
940 /// 926 ///
941 /// This will report the error and cause pub to exit with [exit_codes.DATA]. 927 /// This will report the error and cause pub to exit with [exit_codes.DATA].
942 void dataError(String message) => throw new DataException(message); 928 void dataError(String message) => throw new DataException(message);
OLDNEW
« no previous file with comments | « lib/src/sdk.dart ('k') | test/real_version_test.dart » ('j') | no next file with comments »

Powered by Google App Engine