createProject static method

Future<String?> createProject({
  1. required String projectName,
  2. required String packageId,
  3. required List<String> platforms,
})

Flutter 프로젝트 생성

Implementation

static Future<String?> createProject({
  required String projectName,
  required String packageId,
  required List<String> platforms,
}) async {
  final logger = Logger();

  try {
    // Flutter가 설치되어 있는지 확인
    final flutterCheck = await Process.run(
      'flutter',
      ['--version'],
      runInShell: true,
    );

    if (flutterCheck.exitCode != 0) {
      logger.err('❌ Flutter가 설치되어 있지 않거나 PATH에 없습니다.');
      return null;
    }

    // 플랫폼 옵션 생성
    final platformFlags = <String>[];
    for (final platform in platforms) {
      platformFlags.add('--platforms=$platform');
    }

    // Flutter 프로젝트 생성 명령어 실행
    logger.detail('Flutter 프로젝트 생성 중...');
    logger.detail('명령어: flutter create ${platformFlags.join(" ")} $projectName');

    final result = await Process.run(
      'flutter',
      [
        'create',
        ...platformFlags,
        '--org',
        packageId.split('.').take(packageId.split('.').length - 1).join('.'),
        '--project-name',
        projectName,
        projectName,
      ],
      runInShell: true,
    );

    if (result.exitCode != 0) {
      logger.err('Flutter 프로젝트 생성 실패:');
      logger.err(result.stderr);
      return null;
    }

    final projectPath = path.join(Directory.current.path, projectName);
    return projectPath;
  } catch (e) {
    logger.err('오류 발생: $e');
    return null;
  }
}