parse static method

Project? parse(
  1. String currentDir
)

Parses the project.dart file in currentDir.

Implementation

static Project? parse(String currentDir) {
  final projectFile = File('$currentDir/project.dart');

  if (!projectFile.existsSync()) {
    Logger.error('project.dart not found');
    return null;
  }

  try {
    final content = projectFile.readAsStringSync();

    _checkDeprecatedTypeField(content);
    _warnIfInlineDeclarations(content);

    final nameMatch = RegExp(r"name:\s*'([^']+)'").firstMatch(content);
    final projectName = nameMatch?.group(1) ?? 'workspace';

    final options = _parseProjectOptions(content);
    final modules = _parseModules(content);

    if (modules.isEmpty && _hasModuleOutsideComments(content)) {
      Logger.warn(
          'project.dart contains Module() but none were parsed. '
          'Check that declarations use multiline format.');
    }

    return Project(
      name: projectName,
      options: options,
      modules: modules,
    );
  } catch (e) {
    Logger.error(ErrorHelper.describe(e, 'project.dart'));
    return null;
  }
}