| Index: pkg/code_transformers/lib/messages/build_logger.dart
|
| diff --git a/pkg/code_transformers/lib/messages/build_logger.dart b/pkg/code_transformers/lib/messages/build_logger.dart
|
| index e1d7e78a58a2b8c53f206b497a180ef23b0fbad0..d8cb86feb6e002c8ad579403845074aa25b528e7 100644
|
| --- a/pkg/code_transformers/lib/messages/build_logger.dart
|
| +++ b/pkg/code_transformers/lib/messages/build_logger.dart
|
| @@ -40,13 +40,19 @@ class BuildLogger implements TransformLogger {
|
| /// underlying logger in `_transform.logger`.
|
| final bool convertErrorsToWarnings;
|
|
|
| - BuildLogger(this._transform, {this.convertErrorsToWarnings: false});
|
| + /// Uri prefix to link for additional details. If set, messages logged through
|
| + /// this logger will contain an additional sentence, telling users to find
|
| + /// more details at `$detailsUri#packagename_id`.
|
| + final String detailsUri;
|
| +
|
| + BuildLogger(this._transform, {this.convertErrorsToWarnings: false,
|
| + this.detailsUri});
|
|
|
| /// Records a message at the fine level. If [msg] is a [Message] it is
|
| /// recorded directly, otherwise it is first converted to a [String].
|
| void fine(msg, {AssetId asset, SourceSpan span}) {
|
| msg = msg is Message ? msg : new Message.unknown('$msg');
|
| - _transform.logger.fine(msg.snippet, asset: asset, span: span);
|
| + _transform.logger.fine(_snippet(msg), asset: asset, span: span);
|
| _logs.add(new BuildLogEntry(msg, span, LogLevel.FINE.name));
|
| }
|
|
|
| @@ -54,7 +60,7 @@ class BuildLogger implements TransformLogger {
|
| /// recorded directly, otherwise it is first converted to a [String].
|
| void info(msg, {AssetId asset, SourceSpan span}) {
|
| msg = msg is Message ? msg : new Message.unknown('$msg');
|
| - _transform.logger.info(msg.snippet, asset: asset, span: span);
|
| + _transform.logger.info(_snippet(msg), asset: asset, span: span);
|
| _logs.add(new BuildLogEntry(msg, span, LogLevel.INFO.name));
|
| }
|
|
|
| @@ -62,7 +68,7 @@ class BuildLogger implements TransformLogger {
|
| /// directly, otherwise it is first converted to a [String].
|
| void warning(msg, {AssetId asset, SourceSpan span}) {
|
| msg = msg is Message ? msg : new Message.unknown('$msg');
|
| - _transform.logger.warning(msg.snippet, asset: asset, span: span);
|
| + _transform.logger.warning(_snippet(msg), asset: asset, span: span);
|
| _logs.add(new BuildLogEntry(msg, span, LogLevel.WARNING.name));
|
| }
|
|
|
| @@ -71,13 +77,21 @@ class BuildLogger implements TransformLogger {
|
| void error(msg, {AssetId asset, SourceSpan span}) {
|
| msg = msg is Message ? msg : new Message.unknown('$msg');
|
| if (convertErrorsToWarnings) {
|
| - _transform.logger.warning(msg.snippet, asset: asset, span: span);
|
| + _transform.logger.warning(_snippet(msg), asset: asset, span: span);
|
| } else {
|
| - _transform.logger.error(msg.snippet, asset: asset, span: span);
|
| + _transform.logger.error(_snippet(msg), asset: asset, span: span);
|
| }
|
| _logs.add(new BuildLogEntry(msg, span, LogLevel.ERROR.name));
|
| }
|
|
|
| + String _snippet(Message msg) {
|
| + var s = msg.snippet;
|
| + if (detailsUri == null) return s;
|
| + var dot = s.endsWith('.') || s.endsWith('!') || s.endsWith('?') ? '' : '.';
|
| + var hashTag = '${msg.id.package}_${msg.id.id}';
|
| + return '$s$dot See $detailsUri#$hashTag for details.';
|
| + }
|
| +
|
| /// Outputs the log data to a JSON serialized file.
|
| Future writeOutput() {
|
| return _getNextLogAssetPath().then((path) {
|
|
|