Skip to content

Commit

Permalink
feat(mason)!: avoid templating hook contents
Browse files Browse the repository at this point in the history
  • Loading branch information
felangel committed Oct 28, 2022
1 parent 713a853 commit 2c15fd3
Show file tree
Hide file tree
Showing 8 changed files with 17 additions and 47 deletions.
2 changes: 1 addition & 1 deletion bricks/hooks/hooks/post_gen.dart
@@ -1 +1 @@
import 'dart:io';import 'package:mason/mason.dart';void run(HookContext context){final file=File('.post_gen.txt');file.writeAsStringSync('post_gen: {{name}}');}
import 'dart:io';import 'package:mason/mason.dart';void run(HookContext context){final file=File('.post_gen.txt');file.writeAsStringSync('post_gen: ${context.vars['name']}');}
2 changes: 1 addition & 1 deletion bricks/hooks/hooks/pre_gen.dart
@@ -1 +1 @@
import 'dart:io';import 'package:mason/mason.dart';void run(HookContext context){final file=File('.pre_gen.txt');file.writeAsStringSync('pre_gen: {{name}}');}
import 'dart:io';import 'package:mason/mason.dart';void run(HookContext context){final file=File('.pre_gen.txt');file.writeAsStringSync('pre_gen: ${context.vars['name']}');}
18 changes: 1 addition & 17 deletions packages/mason/lib/src/hooks.dart
Expand Up @@ -294,7 +294,7 @@ class GeneratorHooks {

Uri? uri;
try {
uri = _getHookUri(hook.runSubstitution(vars).content);
uri = _getHookUri(hook.content);
// ignore: avoid_catching_errors
} on ArgumentError {
throw HookInvalidCharactersException(hook.path);
Expand Down Expand Up @@ -357,22 +357,6 @@ class HookFile {

/// The template file content.
final List<int> content;

/// Performs a substitution on the [path] based on the incoming [parameters].
FileContents runSubstitution(Map<String, dynamic> parameters) {
return FileContents(path, _createContent(parameters));
}

List<int> _createContent(Map<String, dynamic> vars) {
try {
final decoded = utf8.decode(content);
if (!decoded.contains(_delimeterRegExp)) return content;
final rendered = decoded.render(vars);
return utf8.encode(rendered);
} on Exception {
return content;
}
}
}

/// A reference to core mason APIs to be used within hooks.
Expand Down
7 changes: 4 additions & 3 deletions packages/mason/test/bundles/hooks_bundle.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

4 changes: 2 additions & 2 deletions packages/mason/test/src/bundler_test.dart
Expand Up @@ -247,7 +247,7 @@ void main() {
expect(
preGenHookFile.readAsStringSync(),
equals(
'''import 'dart:io';import 'package:mason/mason.dart';void run(HookContext context){final file=File('.pre_gen.txt');file.writeAsStringSync('pre_gen: {{name}}');}''',
r'''import 'dart:io';import 'package:mason/mason.dart';void run(HookContext context){final file=File('.pre_gen.txt');file.writeAsStringSync('pre_gen: ${context.vars['name']}');}''',
),
);
final postGenHookFile = File(
Expand All @@ -257,7 +257,7 @@ void main() {
expect(
postGenHookFile.readAsStringSync(),
equals(
'''import 'dart:io';import 'package:mason/mason.dart';void run(HookContext context){final file=File('.post_gen.txt');file.writeAsStringSync('post_gen: {{name}}');}''',
r'''import 'dart:io';import 'package:mason/mason.dart';void run(HookContext context){final file=File('.post_gen.txt');file.writeAsStringSync('post_gen: ${context.vars['name']}');}''',
),
);
final hookPubspecFile = File(
Expand Down
16 changes: 0 additions & 16 deletions packages/mason/test/src/generator_test.dart
Expand Up @@ -2,7 +2,6 @@
import 'dart:io';

import 'package:mason/mason.dart';
import 'package:mason/src/generator.dart';
import 'package:mocktail/mocktail.dart';
import 'package:path/path.dart' as path;
import 'package:test/test.dart';
Expand Down Expand Up @@ -957,20 +956,5 @@ void main() {
});
});
});

group('HookFile', () {
group('runSubstitution', () {
test('handles malformed content', () {
final tempDir = Directory.systemTemp.createTempSync();
final bytes = [0x80, 0x00];
final template = HookFile.fromBytes(
path.join(tempDir.path, 'malformed.txt'),
bytes,
);
final file = template.runSubstitution(<String, dynamic>{});
expect(file.content, equals(bytes));
});
});
});
});
}
7 changes: 4 additions & 3 deletions packages/mason_cli/test/bundles/hooks_bundle.dart

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

8 changes: 4 additions & 4 deletions packages/mason_cli/test/commands/bundle_test.dart
Expand Up @@ -123,13 +123,13 @@ void main() {
expect(
actual,
contains(
'''{"path":"post_gen.dart","data":"aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucG9zdF9nZW4udHh0Jyk7ZmlsZS53cml0ZUFzU3RyaW5nU3luYygncG9zdF9nZW46IHt7bmFtZX19Jyk7fQ==","type":"text"}''',
'''{"path":"post_gen.dart","data":"aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucG9zdF9nZW4udHh0Jyk7ZmlsZS53cml0ZUFzU3RyaW5nU3luYygncG9zdF9nZW46ICR7Y29udGV4dC52YXJzWyduYW1lJ119Jyk7fQ==","type":"text"}''',
),
);
expect(
actual,
contains(
'''{"path":"pre_gen.dart","data":"aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucHJlX2dlbi50eHQnKTtmaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdwcmVfZ2VuOiB7e25hbWV9fScpO30=","type":"text"}''',
'''{"path":"pre_gen.dart","data":"aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucHJlX2dlbi50eHQnKTtmaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdwcmVfZ2VuOiAke2NvbnRleHQudmFyc1snbmFtZSddfScpO30=","type":"text"}''',
),
);
expect(
Expand Down Expand Up @@ -250,13 +250,13 @@ void main() {
expect(
actual,
contains(
'''{"path":"post_gen.dart","data":"aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucG9zdF9nZW4udHh0Jyk7ZmlsZS53cml0ZUFzU3RyaW5nU3luYygncG9zdF9nZW46IHt7bmFtZX19Jyk7fQ==","type":"text"}''',
'''{"path":"post_gen.dart","data":"aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucG9zdF9nZW4udHh0Jyk7ZmlsZS53cml0ZUFzU3RyaW5nU3luYygncG9zdF9nZW46ICR7Y29udGV4dC52YXJzWyduYW1lJ119Jyk7fQ==","type":"text"}''',
),
);
expect(
actual,
contains(
'''{"path":"pre_gen.dart","data":"aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucHJlX2dlbi50eHQnKTtmaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdwcmVfZ2VuOiB7e25hbWV9fScpO30=","type":"text"}''',
'''{"path":"pre_gen.dart","data":"aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucHJlX2dlbi50eHQnKTtmaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdwcmVfZ2VuOiAke2NvbnRleHQudmFyc1snbmFtZSddfScpO30=","type":"text"}''',
),
);
expect(
Expand Down

0 comments on commit 2c15fd3

Please sign in to comment.