| Index: pkg/polymer/lib/deploy.dart
|
| diff --git a/pkg/polymer/lib/deploy.dart b/pkg/polymer/lib/deploy.dart
|
| index 86f157ba1ee3dd7cf3e8408fee8279ca9887b854..4fd9fa6cbafe3d3722da9c45e1c5ccdc519f934a 100644
|
| --- a/pkg/polymer/lib/deploy.dart
|
| +++ b/pkg/polymer/lib/deploy.dart
|
| @@ -26,17 +26,32 @@ import 'package:yaml/yaml.dart';
|
| import 'package:args/args.dart';
|
|
|
| main() {
|
| - var args = _parseArgs();
|
| + var args = _parseArgs(new Options().arguments);
|
| if (args == null) return;
|
| print('polymer/deploy.dart: creating a deploy target for "$_currentPackage"');
|
| + var outDir = args['out'];
|
| + _run(args['webdir'], outDir).then(
|
| + (_) => print('Done! All files written to "$outDir"'));
|
| +}
|
| +
|
| +/**
|
| + * API exposed for testing purposes. Runs this deploy command but prentend that
|
| + * the sources under [webDir] belong to package 'test'.
|
| + */
|
| +Future runForTest(String webDir, String outDir) {
|
| + _currentPackage = 'test';
|
| + return _run(webDir, outDir);
|
| +}
|
| +
|
| +Future _run(String webDir, String outDir) {
|
| var barback = new Barback(new _PolymerDeployProvider());
|
| - _initializeBarback(barback);
|
| + _initializeBarback(barback, webDir);
|
| _attachListeners(barback);
|
| - _emitAllFiles(barback, args['out']);
|
| + return _emitAllFiles(barback, webDir, outDir);
|
| }
|
|
|
| /** Tell barback which transformers to use and which assets to process. */
|
| -void _initializeBarback(Barback barback) {
|
| +void _initializeBarback(Barback barback, String webDir) {
|
| var assets = [];
|
| for (var package in _packageDirs.keys) {
|
| // Do not process packages like 'polymer' where there is nothing to do.
|
| @@ -54,7 +69,7 @@ void _initializeBarback(Barback barback) {
|
| }
|
|
|
| // In case of the current package, include also 'web'.
|
| - for (var filepath in _listDir(_currentPackage, 'web')) {
|
| + for (var filepath in _listDir(_currentPackage, webDir)) {
|
| assets.add(new AssetId(_currentPackage, filepath));
|
| }
|
| barback.updateSources(assets);
|
| @@ -100,17 +115,17 @@ void _ensureDir(var dirpath) {
|
| * Emits all outputs of [barback] and copies files that we didn't process (like
|
| * polymer's libraries).
|
| */
|
| -Future _emitAllFiles(Barback barback, String outDir) {
|
| +Future _emitAllFiles(Barback barback, String webDir, String outDir) {
|
| return barback.getAllAssets().then((assets) {
|
| // Copy all the assets we transformed
|
| var futures = [];
|
| for (var asset in assets) {
|
| var id = asset.id;
|
| var filepath;
|
| - if (id.package == _currentPackage && id.path.startsWith('web/')) {
|
| + if (id.package == _currentPackage && id.path.startsWith('$webDir/')) {
|
| filepath = path.join(outDir, id.path);
|
| } else if (id.path.startsWith('lib/')) {
|
| - filepath = path.join(outDir, 'web', 'packages', id.package,
|
| + filepath = path.join(outDir, webDir, 'packages', id.package,
|
| id.path.substring(4));
|
| } else {
|
| // TODO(sigmund): do something about other assets?
|
| @@ -128,7 +143,7 @@ Future _emitAllFiles(Barback barback, String outDir) {
|
| for (var package in _ignoredPackages) {
|
| for (var relpath in _listDir(package, 'lib')) {
|
| var inpath = path.join(_packageDirs[package], relpath);
|
| - var outpath = path.join(outDir, 'web', 'packages', package,
|
| + var outpath = path.join(outDir, webDir, 'packages', package,
|
| relpath.substring(4));
|
| _ensureDir(path.dirname(outpath));
|
|
|
| @@ -137,8 +152,7 @@ Future _emitAllFiles(Barback barback, String outDir) {
|
| .then((_) => writer.close()));
|
| }
|
| }
|
| - return Future.wait(futures)
|
| - .then((_) => print('Done! All files written to "$outDir"'));
|
| + return Future.wait(futures);
|
| });
|
| }
|
|
|
| @@ -194,7 +208,7 @@ Map<String, String> _packageDirs = () {
|
| */
|
| // TODO(sigmund): consider computing this list by recursively parsing
|
| // pubspec.yaml files in the [_packageDirs].
|
| -Set<String> _ignoredPackages =
|
| +final Set<String> _ignoredPackages =
|
| (const [ 'analyzer_experimental', 'args', 'barback', 'browser', 'csslib',
|
| 'custom_element', 'fancy_syntax', 'html5lib', 'html_import', 'js',
|
| 'logging', 'mdv', 'meta', 'mutation_observer', 'observe', 'path',
|
| @@ -203,14 +217,16 @@ Set<String> _ignoredPackages =
|
| 'unmodifiable_collection', 'yaml'
|
| ]).toSet();
|
|
|
| -ArgResults _parseArgs() {
|
| +ArgResults _parseArgs(arguments) {
|
| var parser = new ArgParser()
|
| ..addFlag('help', abbr: 'h', help: 'Displays this help message',
|
| defaultsTo: false, negatable: false)
|
| + ..addOption('webdir', help: 'Directory containing the application',
|
| + defaultsTo: 'web')
|
| ..addOption('out', abbr: 'o', help: 'Directory where to generated files',
|
| defaultsTo: 'out');
|
| try {
|
| - var results = parser.parse(new Options().arguments);
|
| + var results = parser.parse(arguments);
|
| if (results['help']) {
|
| _showUsage(parser);
|
| return null;
|
|
|