Index: lib/src/server/server.dart |
diff --git a/lib/src/server/server.dart b/lib/src/server/server.dart |
index b5468dc39be08d784a644fc79901ecba70579007..92ed92855e1549d761fe805fb980c9957cde5a9d 100644 |
--- a/lib/src/server/server.dart |
+++ b/lib/src/server/server.dart |
@@ -37,7 +37,7 @@ import 'dependency_graph.dart'; |
/// Encapsulates the logic when the compiler is run as a development server. |
class ServerCompiler extends AbstractCompiler { |
- final SourceNode _entryNode; |
+ SourceNode _entryNode; |
List<LibraryInfo> _libraries = <LibraryInfo>[]; |
final _generators = <CodeGenerator>[]; |
bool _hashing; |
@@ -46,22 +46,30 @@ class ServerCompiler extends AbstractCompiler { |
factory ServerCompiler(AnalysisContext context, CompilerOptions options, |
{AnalysisErrorListener reporter}) { |
var srcOpts = options.sourceOptions; |
- var inputFile = options.inputs[0]; |
- var inputUri = |
+ var inputFiles = options.inputs; |
+ var inputUris = inputFiles.map((String inputFile) => |
inputFile.startsWith('dart:') || inputFile.startsWith('package:') |
? Uri.parse(inputFile) |
: new Uri.file(path.absolute(srcOpts.useImplicitHtml |
? SourceResolverOptions.implicitHtmlFile |
- : inputFile)); |
+ : inputFile))); |
var graph = new SourceGraph(context, reporter, options); |
- var entryNode = graph.nodeFromUri(inputUri); |
+ var entryNodes = inputUris.map((inputUri) => graph.nodeFromUri(inputUri)); |
- return new ServerCompiler._(context, options, reporter, entryNode); |
+ return new ServerCompiler._(context, options, reporter, graph, entryNodes); |
} |
- ServerCompiler._(AnalysisContext context, CompilerOptions options, |
- AnalysisErrorListener reporter, this._entryNode) |
+ ServerCompiler._( |
+ AnalysisContext context, |
+ CompilerOptions options, |
+ AnalysisErrorListener reporter, |
+ SourceGraph graph, |
+ List<SourceNode> entryNodes) |
: super(context, options, reporter) { |
+ _entryNode = entryNodes.length == 1 |
+ ? entryNodes.first |
+ : new EntryNode(graph, new Uri.file(inputBaseDir), entryNodes); |
+ |
if (outputDir != null) { |
_generators.add(new JSGenerator(this)); |
} |
@@ -69,8 +77,6 @@ class ServerCompiler extends AbstractCompiler { |
_hashing = options.enableHashing && _generators.length == 1; |
} |
- Uri get entryPointUri => _entryNode.uri; |
- |
CheckerResults run() { |
var clock = new Stopwatch()..start(); |
@@ -113,9 +119,11 @@ class ServerCompiler extends AbstractCompiler { |
return; |
} |
- var filename = path.basename(node.uri.path); |
- String outputFile = path.join(outputDir, filename); |
- new File(outputFile).writeAsStringSync(output); |
+ var filepath = |
+ resourceOutputPath(node.uri, _entryNode.uri, options.runtimeDir); |
+ String outputFile = path.join(outputDir, filepath); |
+ var file = new File(outputFile)..createSync(recursive: true); |
+ file.writeAsStringSync(output); |
Jennifer Messerly
2016/01/29 16:49:49
same comment, it'd be nice to go all in on the cas
vsm
2016/01/29 18:13:51
Done.
|
} |
void _buildResourceFile(ResourceSourceNode node) { |