selectProjectDir static method

Future<void> selectProjectDir(
  1. CommandLogger logger,
  2. ProjectLaunch projectSetup,
  3. String? foundProjectDir
)

Implementation

static Future<void> selectProjectDir(
  final CommandLogger logger,
  final ProjectLaunch projectSetup,
  final String? foundProjectDir,
) async {
  final specifiedProjectDir = projectSetup.projectDir;
  if (specifiedProjectDir != null) {
    if (_validateProjectDir(logger, specifiedProjectDir)) {
      return;
    }
  }

  if (foundProjectDir != null) {
    if (_validateProjectDir(logger, foundProjectDir)) {
      projectSetup.projectDir = p.relative(foundProjectDir);
      logger.info('Found project directory: ${projectSetup.projectDir}');
      return;
    }
  }

  do {
    final projectDir = await logger.input(
      'Enter the project directory',
    );

    if (projectDir.isEmpty) {
      logger.error('Project directory is required.');
      continue;
    }

    if (_validateProjectDir(logger, projectDir)) {
      projectSetup.projectDir = projectDir;
      return;
    }

    logProjectDirIsNotAServerpodServerDirectory(logger, projectDir);
  } while (true);
}