Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(4)

Side by Side Diff: pkg/polymer/lib/transformer.dart

Issue 648883002: Add more options to configure the linter. (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 6 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/polymer/lib/src/build/linter.dart ('k') | no next file » | 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) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, 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 /// Transfomer used for pub-serve and pub-deploy. 5 /// Transfomer used for pub-serve and pub-deploy.
6 library polymer.transformer; 6 library polymer.transformer;
7 7
8 import 'package:barback/barback.dart'; 8 import 'package:barback/barback.dart';
9 import 'package:observe/transformer.dart'; 9 import 'package:observe/transformer.dart';
10 import 'package:path/path.dart' as path; 10 import 'package:path/path.dart' as path;
(...skipping 24 matching lines...) Expand all
35 35
36 PolymerTransformerGroup.asPlugin(BarbackSettings settings) 36 PolymerTransformerGroup.asPlugin(BarbackSettings settings)
37 : this(_parseSettings(settings)); 37 : this(_parseSettings(settings));
38 } 38 }
39 39
40 TransformOptions _parseSettings(BarbackSettings settings) { 40 TransformOptions _parseSettings(BarbackSettings settings) {
41 var args = settings.configuration; 41 var args = settings.configuration;
42 bool releaseMode = settings.mode == BarbackMode.RELEASE; 42 bool releaseMode = settings.mode == BarbackMode.RELEASE;
43 bool jsOption = args['js']; 43 bool jsOption = args['js'];
44 bool csp = args['csp'] == true; // defaults to false 44 bool csp = args['csp'] == true; // defaults to false
45 bool lint = args['lint'] != false; // defaults to true
46 bool injectBuildLogs = 45 bool injectBuildLogs =
47 !releaseMode && args['inject_build_logs_in_output'] != false; 46 !releaseMode && args['inject_build_logs_in_output'] != false;
48 bool injectPlatformJs = args['inject_platform_js'] != false; 47 bool injectPlatformJs = args['inject_platform_js'] != false;
49 return new TransformOptions( 48 return new TransformOptions(
50 entryPoints: readEntrypoints(args['entry_points']), 49 entryPoints: readFileList(args['entry_points']),
51 inlineStylesheets: _readInlineStylesheets(args['inline_stylesheets']), 50 inlineStylesheets: _readInlineStylesheets(args['inline_stylesheets']),
52 directlyIncludeJS: jsOption == null ? releaseMode : jsOption, 51 directlyIncludeJS: jsOption == null ? releaseMode : jsOption,
53 contentSecurityPolicy: csp, 52 contentSecurityPolicy: csp,
54 releaseMode: releaseMode, 53 releaseMode: releaseMode,
55 lint: lint, 54 lint: _parseLintOption(args['lint']),
56 injectBuildLogsInOutput: injectBuildLogs, 55 injectBuildLogsInOutput: injectBuildLogs,
57 injectPlatformJs: injectPlatformJs); 56 injectPlatformJs: injectPlatformJs);
58 } 57 }
59 58
60 readEntrypoints(value) { 59 // Lint option can be empty (all files), false, true, or a map indicating
60 // include/exclude files.
61 _parseLintOption(value) {
62 var lint = null;
63 if (value == null || value == true) return new LintOptions();
64 if (value == false) return new LintOptions.disabled();
65 if (value is Map && value.length == 1) {
66 var key = value.keys.single;
67 var files = readFileList(value[key]);
68 if (key == 'include') {
69 return new LintOptions.include(files);
70 } else if (key == 'exclude') {
71 return new LintOptions.exclude(files);
72 }
73 }
74
75 // Any other case it is an error:
76 print('Invalid value for "lint" in the polymer transformer. '
77 'Expected one of the following: \n'
78 ' lint: true # or\n'
79 ' lint: false # or\n'
80 ' lint: \n'
81 ' include: \n'
82 ' - file1 \n'
83 ' - file2 # or \n'
84 ' lint: \n'
85 ' exclude: \n'
86 ' - file1 \n'
87 ' - file2 \n');
88 return new LintOptions();
89 }
90
91 readFileList(value) {
61 if (value == null) return null; 92 if (value == null) return null;
62 var entryPoints = []; 93 var files = [];
63 bool error; 94 bool error;
64 if (value is List) { 95 if (value is List) {
65 entryPoints = value; 96 files = value;
66 error = value.any((e) => e is! String); 97 error = value.any((e) => e is! String);
67 } else if (value is String) { 98 } else if (value is String) {
68 entryPoints = [value]; 99 files = [value];
69 error = false; 100 error = false;
70 } else { 101 } else {
71 error = true; 102 error = true;
72 } 103 }
73 if (error) { 104 if (error) {
74 print('Invalid value for "entry_points" in the polymer transformer.'); 105 print('Invalid value for "entry_points" in the polymer transformer.');
75 } 106 }
76 return entryPoints; 107 return files;
77 } 108 }
78 109
79 Map<String, bool> _readInlineStylesheets(settingValue) { 110 Map<String, bool> _readInlineStylesheets(settingValue) {
80 if (settingValue == null) return null; 111 if (settingValue == null) return null;
81 var inlineStylesheets = {}; 112 var inlineStylesheets = {};
82 bool error = false; 113 bool error = false;
83 if (settingValue is Map) { 114 if (settingValue is Map) {
84 settingValue.forEach((key, value) { 115 settingValue.forEach((key, value) {
85 if (value is! bool || key is! String) { 116 if (value is! bool || key is! String) {
86 error = true; 117 error = true;
(...skipping 26 matching lines...) Expand all
113 144
114 /// Create deploy phases for Polymer. Note that inlining HTML Imports 145 /// Create deploy phases for Polymer. Note that inlining HTML Imports
115 /// comes first (other than linter, if [options.linter] is enabled), which 146 /// comes first (other than linter, if [options.linter] is enabled), which
116 /// allows the rest of the HTML-processing phases to operate only on HTML that 147 /// allows the rest of the HTML-processing phases to operate only on HTML that
117 /// is actually imported. 148 /// is actually imported.
118 List<List<Transformer>> createDeployPhases( 149 List<List<Transformer>> createDeployPhases(
119 TransformOptions options, {String sdkDir}) { 150 TransformOptions options, {String sdkDir}) {
120 // TODO(sigmund): this should be done differently. We should lint everything 151 // TODO(sigmund): this should be done differently. We should lint everything
121 // that is reachable and have the option to lint the rest (similar to how 152 // that is reachable and have the option to lint the rest (similar to how
122 // dart2js can analyze reachable code or entire libraries). 153 // dart2js can analyze reachable code or entire libraries).
123 var phases = options.lint ? [[new Linter(options)]] : []; 154 var phases = options.lint.enabled ? [[new Linter(options)]] : [];
124 phases.addAll([ 155 phases.addAll([
125 [new ImportInliner(options)], 156 [new ImportInliner(options)],
126 [new ObservableTransformer()], 157 [new ObservableTransformer()],
127 [new ScriptCompactor(options, sdkDir: sdkDir)], 158 [new ScriptCompactor(options, sdkDir: sdkDir)],
128 [new PolyfillInjector(options)], 159 [new PolyfillInjector(options)],
129 [new BuildFilter(options)], 160 [new BuildFilter(options)],
130 [new BuildLogCombiner(options)], 161 [new BuildLogCombiner(options)],
131 ]); 162 ]);
132 if (!options.releaseMode) { 163 if (!options.releaseMode) {
133 phases.add([new IndexPageBuilder(options)]); 164 phases.add([new IndexPageBuilder(options)]);
134 } 165 }
135 return phases; 166 return phases;
136 } 167 }
137 168
138 final RegExp _PACKAGE_PATH_REGEX = new RegExp(r'packages\/([^\/]+)\/(.*)'); 169 final RegExp _PACKAGE_PATH_REGEX = new RegExp(r'packages\/([^\/]+)\/(.*)');
OLDNEW
« no previous file with comments | « pkg/polymer/lib/src/build/linter.dart ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698