[dartdevc] Allow multiple summaries and experiments in ddb tool

This allows us to test modular compiles from the cli:

> ddb -k foo.dart
> ddb -k -s foo.dill bar.dart

Change-Id: Ib88e7ff1291a7db5ecd1774b9e594121a303f2d5
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/102002
Auto-Submit: Vijay Menon <vsm@google.com>
Reviewed-by: Nicholas Shahan <nshahan@google.com>
diff --git a/pkg/dev_compiler/tool/ddb b/pkg/dev_compiler/tool/ddb
index fa74444..0b3049e 100755
--- a/pkg/dev_compiler/tool/ddb
+++ b/pkg/dev_compiler/tool/ddb
@@ -33,6 +33,10 @@
     ..addFlag('help', abbr: 'h', help: 'Display this message.')
     ..addFlag('kernel',
         abbr: 'k', help: 'Compile with the new kernel-based front end.')
+    ..addMultiOption('summary',
+        abbr: 's',
+        help: 'summary file(s) of imported libraries, optionally\n'
+            'with module import path: -s path.sum=js/import/path')
     ..addFlag('debug',
         abbr: 'd',
         help: 'Use current source instead of built SDK.',
@@ -46,8 +50,8 @@
         abbr: 'p',
         help: 'Run with the corresponding chrome/V8 debugging port open.',
         defaultsTo: '9222')
-    ..addOption('enable-experiment',
-        help: 'Run with specified experiments enabled.', defaultsTo: '')
+    ..addMultiOption('enable-experiment',
+        help: 'Run with specified experiments enabled.')
     ..addOption('binary', abbr: 'b', help: 'Runtime binary path.');
 
   var options = parser.parse(args);
@@ -69,7 +73,8 @@
   var debug = options['debug'] as bool;
   var kernel = options['kernel'] as bool;
   var binary = options['binary'] as String;
-  var experiment = options['enable-experiment'] as String;
+  var experiments = options['enable-experiment'] as List;
+  var summaries = options['summary'] as List;
   var port = int.parse(options['port'] as String);
 
   var dartBinary = Platform.resolvedExecutable;
@@ -147,8 +152,8 @@
     // TODO(nshahan) Cleanup when we settle on using or removing library-root.
     if (!kernel)
       '--library-root=$libRoot',
-    if (experiment.isNotEmpty)
-      '--enable-experiment=$experiment',
+    for (var summary in summaries) '--summary=$summary',
+    for (var experiment in experiments) '--enable-experiment=$experiment',
     '-o',
     '$libRoot/$basename.js',
     entry