smartModeConfig method
Implementation
Future<void> smartModeConfig({
required String name,
required String path,
}) async {
final rootPath = path;
final sourceFilePath = name;
const suffix = '_wm.dart';
if (!sourceFilePath.endsWith(suffix)) {
throw CommandLineUsageException(
message: 'Widget model dart file name should end with "$suffix".',
);
}
// export of basename
basename = p.basename(sourceFilePath).replaceAll(suffix, '');
final root = Directory(rootPath);
final sourceFile = File(sourceFilePath);
if (!root.existsSync()) {
throw NonExistentFolderException(rootPath);
}
if (!sourceFile.existsSync()) {
throw NonExistentFileException(sourceFilePath);
}
final lib = Directory(p.join(root.path, 'lib'));
if (!lib.existsSync()) {
throw CommandLineUsageException(
message: 'Root folder must contain "lib" folder.',
);
}
if (!p.isWithin(lib.path, sourceFile.path)) {
throw CommandLineUsageException(
message: 'Widget model dart file should be placed '
'in ${"project's"} lib folder.',
);
}
final relativePath = p.relative(sourceFile.parent.path, from: lib.path);
final test = Directory(p.join(root.path, 'test'));
// export of targetDirectory
targetDirectory = Directory(p.join(test.path, relativePath));
}