scaffold method

Map<String, Directory> scaffold({
  1. bool withDebugView = false,
})

Create the DDD layer directories for this feature.

Returns a map of layer names → Directory instances:

  • 'application'
  • 'domain'
  • 'infrastructure'
  • 'test_application'
  • 'presentation' (only when withDebugView is true)

Throws DddFileSystemException if any directory cannot be created.

Implementation

Map<String, Directory> scaffold({bool withDebugView = false}) {
  final snakeFeatureName = StringUtils.toSnakeCase(featureName);
  final featurePath = p.join(
    Directory.current.path,
    'lib',
    'features',
    snakeFeatureName,
  );

  final appDir = Directory(p.join(featurePath, 'application'));
  final domainDir = Directory(p.join(featurePath, 'domain'));
  final infraDir = Directory(p.join(featurePath, 'infrastructure'));

  _createDir(appDir);
  _createDir(domainDir);
  _createDir(infraDir);

  final testAppPath = p.join(
    Directory.current.path,
    'test',
    'features',
    snakeFeatureName,
    'application',
  );
  final testAppDir = Directory(testAppPath);
  _createDir(testAppDir);

  final dirs = <String, Directory>{
    'application': appDir,
    'domain': domainDir,
    'infrastructure': infraDir,
    'test_application': testAppDir,
  };

  if (withDebugView) {
    final presentationDir = Directory(p.join(featurePath, 'presentation'));
    _createDir(presentationDir);
    dirs['presentation'] = presentationDir;
  }

  return dirs;
}