diff --git a/bricks/hooks/hooks/post_gen.dart b/bricks/hooks/hooks/post_gen.dart index b80def05a..00df38eb0 100755 --- a/bricks/hooks/hooks/post_gen.dart +++ b/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}}');} \ No newline at end of file +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']}');} \ No newline at end of file diff --git a/bricks/hooks/hooks/pre_gen.dart b/bricks/hooks/hooks/pre_gen.dart index b7eee9c46..c00624ac6 100644 --- a/bricks/hooks/hooks/pre_gen.dart +++ b/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}}');} \ No newline at end of file +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']}');} \ No newline at end of file diff --git a/packages/mason/lib/src/hooks.dart b/packages/mason/lib/src/hooks.dart index 1b37d9988..09fb44af7 100644 --- a/packages/mason/lib/src/hooks.dart +++ b/packages/mason/lib/src/hooks.dart @@ -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); @@ -357,22 +357,6 @@ class HookFile { /// The template file content. final List content; - - /// Performs a substitution on the [path] based on the incoming [parameters]. - FileContents runSubstitution(Map parameters) { - return FileContents(path, _createContent(parameters)); - } - - List _createContent(Map 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. diff --git a/packages/mason/test/bundles/hooks_bundle.dart b/packages/mason/test/bundles/hooks_bundle.dart index 47695ccab..76221b548 100644 --- a/packages/mason/test/bundles/hooks_bundle.dart +++ b/packages/mason/test/bundles/hooks_bundle.dart @@ -1,5 +1,5 @@ // GENERATED CODE - DO NOT MODIFY BY HAND -// ignore_for_file: prefer_single_quotes, public_member_api_docs, lines_longer_than_80_chars, implicit_dynamic_list_literal, implicit_dynamic_map_literal +// ignore_for_file: type=lint, implicit_dynamic_list_literal, implicit_dynamic_map_literal, inference_failure_on_collection_literal import 'package:mason/mason.dart'; @@ -11,13 +11,13 @@ final hooksBundle = MasonBundle.fromJson({ { "path": "post_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucG9zdF9nZW4udHh0Jyk7ZmlsZS53cml0ZUFzU3RyaW5nU3luYygncG9zdF9nZW46IHt7bmFtZX19Jyk7fQ==", + "aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucG9zdF9nZW4udHh0Jyk7ZmlsZS53cml0ZUFzU3RyaW5nU3luYygncG9zdF9nZW46ICR7Y29udGV4dC52YXJzWyduYW1lJ119Jyk7fQ==", "type": "text" }, { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucHJlX2dlbi50eHQnKTtmaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdwcmVfZ2VuOiB7e25hbWV9fScpO30=", + "aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucHJlX2dlbi50eHQnKTtmaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdwcmVfZ2VuOiAke2NvbnRleHQudmFyc1snbmFtZSddfScpO30=", "type": "text" }, { @@ -30,6 +30,7 @@ final hooksBundle = MasonBundle.fromJson({ "name": "hooks", "description": "A Hooks Example Template", "version": "0.1.0+1", + "environment": {"mason": "any"}, "vars": { "name": { "type": "string", diff --git a/packages/mason/test/src/bundler_test.dart b/packages/mason/test/src/bundler_test.dart index 24bb0151c..3b1018423 100644 --- a/packages/mason/test/src/bundler_test.dart +++ b/packages/mason/test/src/bundler_test.dart @@ -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( @@ -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( diff --git a/packages/mason/test/src/generator_test.dart b/packages/mason/test/src/generator_test.dart index 6342efaa5..b93ed99bd 100644 --- a/packages/mason/test/src/generator_test.dart +++ b/packages/mason/test/src/generator_test.dart @@ -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'; @@ -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({}); - expect(file.content, equals(bytes)); - }); - }); - }); }); } diff --git a/packages/mason_cli/test/bundles/hooks_bundle.dart b/packages/mason_cli/test/bundles/hooks_bundle.dart index 5f7cf27ee..76221b548 100644 --- a/packages/mason_cli/test/bundles/hooks_bundle.dart +++ b/packages/mason_cli/test/bundles/hooks_bundle.dart @@ -11,25 +11,26 @@ final hooksBundle = MasonBundle.fromJson({ { "path": "post_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucG9zdF9nZW4udHh0Jyk7ZmlsZS53cml0ZUFzU3RyaW5nU3luYygncG9zdF9nZW46IHt7bmFtZX19Jyk7fQ==", + "aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucG9zdF9nZW4udHh0Jyk7ZmlsZS53cml0ZUFzU3RyaW5nU3luYygncG9zdF9nZW46ICR7Y29udGV4dC52YXJzWyduYW1lJ119Jyk7fQ==", "type": "text" }, { "path": "pre_gen.dart", "data": - "aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucHJlX2dlbi50eHQnKTtmaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdwcmVfZ2VuOiB7e25hbWV9fScpO30=", + "aW1wb3J0ICdkYXJ0OmlvJztpbXBvcnQgJ3BhY2thZ2U6bWFzb24vbWFzb24uZGFydCc7dm9pZCBydW4oSG9va0NvbnRleHQgY29udGV4dCl7ZmluYWwgZmlsZT1GaWxlKCcucHJlX2dlbi50eHQnKTtmaWxlLndyaXRlQXNTdHJpbmdTeW5jKCdwcmVfZ2VuOiAke2NvbnRleHQudmFyc1snbmFtZSddfScpO30=", "type": "text" }, { "path": "pubspec.yaml", "data": - "bmFtZTogaG9va3NfaG9va3MKCmVudmlyb25tZW50OgogIHNkazogIj49Mi4xMi4wIDwzLjAuMCIKCmRlcGVuZGVuY2llczoKICBtYXNvbjogXjAuMS4wLWRldi41Cg==", + "bmFtZTogaG9va3NfaG9va3MKCmVudmlyb25tZW50OgogIHNkazogIj49Mi4xMi4wIDwzLjAuMCIKCmRlcGVuZGVuY2llczoKICBtYXNvbjoKICAgIGdpdDoKICAgICAgdXJsOiBodHRwczovL2dpdGh1Yi5jb20vZmVsYW5nZWwvbWFzb24KICAgICAgcGF0aDogcGFja2FnZXMvbWFzb24K", "type": "text" } ], "name": "hooks", "description": "A Hooks Example Template", "version": "0.1.0+1", + "environment": {"mason": "any"}, "vars": { "name": { "type": "string", diff --git a/packages/mason_cli/test/commands/bundle_test.dart b/packages/mason_cli/test/commands/bundle_test.dart index 1af65af8b..1d1975e77 100644 --- a/packages/mason_cli/test/commands/bundle_test.dart +++ b/packages/mason_cli/test/commands/bundle_test.dart @@ -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( @@ -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(