Skip to content

Commit a40cf90

Browse files
committed
chore(release): bump version to 7.1.0
Add subdirectory support for all make:* Metro commands and bump dependencies.
1 parent 28409dc commit a40cf90

17 files changed

Lines changed: 613 additions & 84 deletions

CHANGELOG.md

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,13 @@
1+
## [7.1.0] - 2026-03-29
2+
3+
### Added
4+
* Subdirectory support for all `make:*` Metro commands — users can now specify paths like `make:stateless_widget login/BrandPanel` to organize generated files into subdirectories
5+
* Tests for subdirectory parsing, stub generation, and file path creation across all make commands
6+
7+
### Changed
8+
* Bump `nylo_support` dependency from `^7.11.2` to `^7.12.0`
9+
* Bump `patrol` dependency from `^4.3.0` to `^4.5.0`
10+
111
## [7.0.15] - 2026-03-12
212

313
### Changed

example/pubspec.lock

Lines changed: 29 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -21,10 +21,10 @@ packages:
2121
dependency: transitive
2222
description:
2323
name: async
24-
sha256: "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb"
24+
sha256: e2eb0491ba5ddb6177742d2da23904574082139b07c1e33b8503b9f46f3e1a37
2525
url: "https://pub.dev"
2626
source: hosted
27-
version: "2.13.0"
27+
version: "2.13.1"
2828
base58check:
2929
dependency: transitive
3030
description:
@@ -324,10 +324,10 @@ packages:
324324
dependency: transitive
325325
description:
326326
name: flutter_timezone
327-
sha256: "978192f2f9ea6d019a4de4f0211d76a9af955ca24865828fa98ca4e20cf0cb3c"
327+
sha256: e8d63f50f2806a3a71a08697286a0369e1d8f0902961327810459871c0bb01c2
328328
url: "https://pub.dev"
329329
source: hosted
330-
version: "5.0.1"
330+
version: "5.0.2"
331331
flutter_web_plugins:
332332
dependency: transitive
333333
description: flutter
@@ -433,10 +433,10 @@ packages:
433433
dependency: transitive
434434
description:
435435
name: matcher
436-
sha256: "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6"
436+
sha256: dc0b7dc7651697ea4ff3e69ef44b0407ea32c487a39fff6a4004fa585e901861
437437
url: "https://pub.dev"
438438
source: hosted
439-
version: "0.12.18"
439+
version: "0.12.19"
440440
material_color_utilities:
441441
dependency: transitive
442442
description:
@@ -465,10 +465,10 @@ packages:
465465
dependency: transitive
466466
description:
467467
name: native_toolchain_c
468-
sha256: "92b2ca62c8bd2b8d2f267cdfccf9bfbdb7322f778f8f91b3ce5b5cda23a3899f"
468+
sha256: "6ba77bb18063eebe9de401f5e6437e95e1438af0a87a3a39084fbd37c90df572"
469469
url: "https://pub.dev"
470470
source: hosted
471-
version: "0.17.5"
471+
version: "0.17.6"
472472
nm:
473473
dependency: transitive
474474
description:
@@ -483,15 +483,15 @@ packages:
483483
path: ".."
484484
relative: true
485485
source: path
486-
version: "7.0.14"
486+
version: "7.0.15"
487487
nylo_support:
488488
dependency: transitive
489489
description:
490490
name: nylo_support
491-
sha256: "022ddd09886a2b7a7ea5a07cd4f3e912e2011aa19996bbd9bb464f0b4094eb20"
491+
sha256: "7de2bf50f476371abfa45e620801ffdf3f86a84848f42ce975c1266aeaca2b01"
492492
url: "https://pub.dev"
493493
source: hosted
494-
version: "7.11.2"
494+
version: "7.12.0"
495495
objective_c:
496496
dependency: transitive
497497
description:
@@ -520,10 +520,10 @@ packages:
520520
dependency: transitive
521521
description:
522522
name: path_provider_android
523-
sha256: f2c65e21139ce2c3dad46922be8272bb5963516045659e71bb16e151c93b580e
523+
sha256: "149441ca6e4f38193b2e004c0ca6376a3d11f51fa5a77552d8bd4d2b0c0912ba"
524524
url: "https://pub.dev"
525525
source: hosted
526-
version: "2.2.22"
526+
version: "2.2.23"
527527
path_provider_foundation:
528528
dependency: transitive
529529
description:
@@ -560,26 +560,26 @@ packages:
560560
dependency: transitive
561561
description:
562562
name: patrol
563-
sha256: ca7d659c58ef735e27c4300af43cc367b67a129a0a1720082dc21b5a096efb1c
563+
sha256: "7825a6e96a8f0755f68eec600a91a08b19bd0975488a70885b3696f6b65ffc0f"
564564
url: "https://pub.dev"
565565
source: hosted
566-
version: "4.3.0"
566+
version: "4.5.0"
567567
patrol_finders:
568568
dependency: transitive
569569
description:
570570
name: patrol_finders
571-
sha256: ac0bfaf3eaaa6cc3d49c8a365329cc7f4361a5f486f1adb45edc96dbfc854da9
571+
sha256: "9970eac0669a90b20ec7e1bcaabd0475655655998068ca656f4df9f6ec84f336"
572572
url: "https://pub.dev"
573573
source: hosted
574-
version: "3.1.0"
574+
version: "3.2.0"
575575
patrol_log:
576576
dependency: transitive
577577
description:
578578
name: patrol_log
579-
sha256: b3bd2862c15bd6b163763d7d2a80ae07c24af6da07d62d202798ceea327045d7
579+
sha256: a2360db165c34692665c0de146e5157887d6b584fdccca8f141f947a5acf1b2e
580580
url: "https://pub.dev"
581581
source: hosted
582-
version: "0.7.1"
582+
version: "0.8.0"
583583
petitparser:
584584
dependency: transitive
585585
description:
@@ -648,18 +648,18 @@ packages:
648648
dependency: transitive
649649
description:
650650
name: shared_preferences
651-
sha256: "2939ae520c9024cb197fc20dee269cd8cdbf564c8b5746374ec6cacdc5169e64"
651+
sha256: c3025c5534b01739267eb7d76959bbc25a6d10f6988e1c2a3036940133dd10bf
652652
url: "https://pub.dev"
653653
source: hosted
654-
version: "2.5.4"
654+
version: "2.5.5"
655655
shared_preferences_android:
656656
dependency: transitive
657657
description:
658658
name: shared_preferences_android
659-
sha256: "8374d6200ab33ac99031a852eba4c8eb2170c4bf20778b3e2c9eccb45384fb41"
659+
sha256: e8d4762b1e2e8578fc4d0fd548cebf24afd24f49719c08974df92834565e2c53
660660
url: "https://pub.dev"
661661
source: hosted
662-
version: "2.4.21"
662+
version: "2.4.23"
663663
shared_preferences_foundation:
664664
dependency: transitive
665665
description:
@@ -680,10 +680,10 @@ packages:
680680
dependency: transitive
681681
description:
682682
name: shared_preferences_platform_interface
683-
sha256: "57cbf196c486bc2cf1f02b85784932c6094376284b3ad5779d1b1c6c6a816b80"
683+
sha256: "649dc798a33931919ea356c4305c2d1f81619ea6e92244070b520187b5140ef9"
684684
url: "https://pub.dev"
685685
source: hosted
686-
version: "2.4.1"
686+
version: "2.4.2"
687687
shared_preferences_web:
688688
dependency: transitive
689689
description:
@@ -765,10 +765,10 @@ packages:
765765
dependency: transitive
766766
description:
767767
name: test_api
768-
sha256: "93167629bfc610f71560ab9312acdda4959de4df6fac7492c89ff0d3886f6636"
768+
sha256: "8161c84903fd860b26bfdefb7963b3f0b68fee7adea0f59ef805ecca346f0c7a"
769769
url: "https://pub.dev"
770770
source: hosted
771-
version: "0.7.9"
771+
version: "0.7.10"
772772
timezone:
773773
dependency: transitive
774774
description:
@@ -797,10 +797,10 @@ packages:
797797
dependency: transitive
798798
description:
799799
name: url_launcher_android
800-
sha256: "767344bf3063897b5cf0db830e94f904528e6dd50a6dfaf839f0abf509009611"
800+
sha256: "3bb000251e55d4a209aa0e2e563309dc9bb2befea2295fd0cec1f51760aac572"
801801
url: "https://pub.dev"
802802
source: hosted
803-
version: "6.3.28"
803+
version: "6.3.29"
804804
url_launcher_ios:
805805
dependency: transitive
806806
description:

lib/metro/commands/make/command.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,14 +33,20 @@ class _MakeCommandCommand extends NyCustomCommand {
3333
final String categoryValue =
3434
result.getString("category", defaultValue: "app")!;
3535

36+
MetroProjectFile projectFile = MetroService.createMetroProjectFile(
37+
commandName,
38+
prefix: RegExp(r'(_?command)'));
39+
3640
String cleanCommandName =
37-
commandName.snakeCase.replaceAll(RegExp(r'(_?command)'), "");
41+
projectFile.name.snakeCase.replaceAll(RegExp(r'(_?command)'), "");
3842

3943
ReCase classReCase = ReCase(cleanCommandName);
4044

4145
String stubCommand =
4246
customCommandStub(customCommand: classReCase, category: categoryValue);
4347
await MetroService.makeCommand(classReCase.snakeCase, stubCommand,
44-
forceCreate: result.hasForceFlag, category: categoryValue);
48+
forceCreate: result.hasForceFlag,
49+
category: categoryValue,
50+
creationPath: projectFile.creationPath);
4551
}
4652
}

lib/metro/commands/make/config.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,18 @@ class _MakeConfigCommand extends NyCustomCommand {
2828
final configName =
2929
requireArgument(result, message: 'A config name is required');
3030

31+
MetroProjectFile projectFile = MetroService.createMetroProjectFile(
32+
configName,
33+
prefix: RegExp(r'(_?config)'));
34+
3135
String cleanConfigName =
32-
configName.snakeCase.replaceAll(RegExp(r'(_?config)'), "");
36+
projectFile.name.snakeCase.replaceAll(RegExp(r'(_?config)'), "");
3337

3438
ReCase classReCase = ReCase(cleanConfigName);
3539

3640
String stubConfig = configStub(classReCase);
3741
await MetroService.makeConfig(classReCase.snakeCase, stubConfig,
38-
forceCreate: result.hasForceFlag);
42+
forceCreate: result.hasForceFlag,
43+
creationPath: projectFile.creationPath);
3944
}
4045
}

lib/metro/commands/make/controller.dart

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ class _MakeControllerCommand extends NyCustomCommand {
4040
projectFile.name.replaceAll(RegExp(r'(_?controller)'), ""));
4141

4242
await MetroService.makeController(projectFile.name, stubController,
43-
forceCreate: result.hasForceFlag);
43+
forceCreate: result.hasForceFlag,
44+
creationPath: projectFile.creationPath);
4445
}
4546
}

lib/metro/commands/make/event.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,19 @@ class _MakeEventCommand extends NyCustomCommand {
2727
final eventName =
2828
requireArgument(result, message: 'An event name is required');
2929

30+
MetroProjectFile projectFile = MetroService.createMetroProjectFile(
31+
eventName,
32+
prefix: RegExp(r'(_?event)'));
33+
3034
String cleanEventName =
31-
eventName.snakeCase.replaceAll(RegExp(r'(_?event)'), "");
35+
projectFile.name.snakeCase.replaceAll(RegExp(r'(_?event)'), "");
3236

3337
ReCase classReCase = ReCase(cleanEventName);
3438

3539
String stubEvent = eventStub(eventName: classReCase);
3640
await MetroService.makeEvent(classReCase.snakeCase, stubEvent,
37-
forceCreate: result.hasForceFlag, addToConfig: true);
41+
forceCreate: result.hasForceFlag,
42+
addToConfig: true,
43+
creationPath: projectFile.creationPath);
3844
}
3945
}

lib/metro/commands/make/form.dart

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,13 +27,17 @@ class _MakeFormCommand extends NyCustomCommand {
2727
final formName =
2828
requireArgument(result, message: 'A form name is required');
2929

30+
MetroProjectFile projectFile = MetroService.createMetroProjectFile(formName,
31+
prefix: RegExp(r'(_?form)'));
32+
3033
String cleanFormName =
31-
formName.snakeCase.replaceAll(RegExp(r'(_?form)'), "");
34+
projectFile.name.snakeCase.replaceAll(RegExp(r'(_?form)'), "");
3235

3336
ReCase classReCase = ReCase(cleanFormName);
3437

3538
String stubForm = formStub(classReCase);
3639
await MetroService.makeForm(classReCase.snakeCase, stubForm,
37-
forceCreate: result.hasForceFlag);
40+
forceCreate: result.hasForceFlag,
41+
creationPath: projectFile.creationPath);
3842
}
3943
}

lib/metro/commands/make/interceptor.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,18 @@ class _MakeInterceptorCommand extends NyCustomCommand {
2929
final interceptorName =
3030
requireArgument(result, message: 'An interceptor name is required');
3131

32+
MetroProjectFile projectFile = MetroService.createMetroProjectFile(
33+
interceptorName,
34+
prefix: RegExp(r'(_?interceptor)'));
35+
3236
String cleanInterceptorName =
33-
interceptorName.snakeCase.replaceAll(RegExp(r'(_?interceptor)'), "");
37+
projectFile.name.snakeCase.replaceAll(RegExp(r'(_?interceptor)'), "");
3438

3539
ReCase classReCase = ReCase(cleanInterceptorName);
3640

3741
String stubInterceptor = interceptorStub(interceptorName: classReCase);
3842
await MetroService.makeInterceptor(classReCase.snakeCase, stubInterceptor,
39-
forceCreate: result.hasForceFlag);
43+
forceCreate: result.hasForceFlag,
44+
creationPath: projectFile.creationPath);
4045
}
4146
}

lib/metro/commands/make/provider.dart

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -28,13 +28,19 @@ class _MakeProviderCommand extends NyCustomCommand {
2828
final providerName =
2929
requireArgument(result, message: 'A provider name is required');
3030

31+
MetroProjectFile projectFile = MetroService.createMetroProjectFile(
32+
providerName,
33+
prefix: RegExp(r'(_?provider)'));
34+
3135
String cleanProviderName =
32-
providerName.snakeCase.replaceAll(RegExp(r'(_?provider)'), "");
36+
projectFile.name.snakeCase.replaceAll(RegExp(r'(_?provider)'), "");
3337

3438
ReCase classReCase = ReCase(cleanProviderName);
3539

3640
String stubProvider = providerStub(classReCase);
3741
await MetroService.makeProvider(classReCase.snakeCase, stubProvider,
38-
forceCreate: result.hasForceFlag, addToConfig: true);
42+
forceCreate: result.hasForceFlag,
43+
addToConfig: true,
44+
creationPath: projectFile.creationPath);
3945
}
4046
}

lib/metro/commands/make/route_guard.dart

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -29,13 +29,18 @@ class _MakeRouteGuardCommand extends NyCustomCommand {
2929
final routeGuardName =
3030
requireArgument(result, message: 'A route guard name is required');
3131

32+
MetroProjectFile projectFile = MetroService.createMetroProjectFile(
33+
routeGuardName,
34+
prefix: RegExp(r'(_?route_guard)'));
35+
3236
String cleanRouteGuardName =
33-
routeGuardName.snakeCase.replaceAll(RegExp(r'(_?route_guard)'), "");
37+
projectFile.name.snakeCase.replaceAll(RegExp(r'(_?route_guard)'), "");
3438

3539
ReCase classReCase = ReCase(cleanRouteGuardName);
3640

3741
String stubRouteGuard = routeGuardStub(classReCase);
3842
await MetroService.makeRouteGuard(classReCase.snakeCase, stubRouteGuard,
39-
forceCreate: result.hasForceFlag);
43+
forceCreate: result.hasForceFlag,
44+
creationPath: projectFile.creationPath);
4045
}
4146
}

0 commit comments

Comments
 (0)