| OLD | NEW |
| (Empty) |
| 1 // Copyright (c) 2015, the Dart project authors. Please see the AUTHORS file | |
| 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. | |
| 4 | |
| 5 /// JS runtime files utilities used by dartdevrun. | |
| 6 | |
| 7 import 'dart:async'; | |
| 8 import 'dart:io'; | |
| 9 | |
| 10 import 'package:path/path.dart'; | |
| 11 | |
| 12 import '../compiler.dart' show defaultRuntimeFiles; | |
| 13 import '../options.dart'; | |
| 14 import 'file_utils.dart'; | |
| 15 | |
| 16 /// In node.js / io.js, these modules need to be aliased globally | |
| 17 /// (e.g. `var foo = require('./path/to/foo.js')`). | |
| 18 /// TODO(ochafik): Investigate alternative module / alias patterns. | |
| 19 const _ALIASED_RUNTIME_FILES = const {'dart_library.js': 'dart_library',}; | |
| 20 | |
| 21 /// If [path] is a runtime file with an alias, returns that alias, otherwise | |
| 22 /// returns null. | |
| 23 String getRuntimeFileAlias(CompilerOptions options, File file) => | |
| 24 file.absolute.path.startsWith(_getRuntimeDir(options).absolute.path) | |
| 25 ? _ALIASED_RUNTIME_FILES[basename(file.path)] | |
| 26 : null; | |
| 27 | |
| 28 Directory _getRuntimeDir(CompilerOptions options) => new Directory( | |
| 29 join(options.codegenOptions.outputDir, 'dev_compiler', 'runtime')); | |
| 30 | |
| 31 Future<List<File>> listOutputFiles(CompilerOptions options) async { | |
| 32 List<File> files = | |
| 33 await listJsFiles(new Directory(options.codegenOptions.outputDir)); | |
| 34 | |
| 35 var runtimePath = _getRuntimeDir(options).absolute.path; | |
| 36 isRuntimeFile(File file) => file.path.startsWith(runtimePath); | |
| 37 | |
| 38 final maxIndex = defaultRuntimeFiles.length; | |
| 39 getPriorityIndex(File file) { | |
| 40 if (!isRuntimeFile(file)) return maxIndex; | |
| 41 int i = defaultRuntimeFiles.indexOf(basename(file.path)); | |
| 42 return i < 0 ? maxIndex : i; | |
| 43 } | |
| 44 return files | |
| 45 ..sort((File a, File b) { | |
| 46 int pa = getPriorityIndex(a), pb = getPriorityIndex(b); | |
| 47 return pa != pb ? (pa - pb) : a.path.compareTo(b.path); | |
| 48 }); | |
| 49 } | |
| 50 | |
| 51 /// TODO(ochafik): Split / reuse [AbstractCompiler.getModuleName]. | |
| 52 String getMainModuleName(CompilerOptions options) => | |
| 53 basename(withoutExtension(options.inputs.single)); | |
| OLD | NEW |