generateProject static method

Future<void> generateProject({
  1. required String targetPath,
  2. required String projectName,
  3. required String packageId,
  4. required List<String> platforms,
  5. required Logger logger,
})

프로젝트 구조 생성

Implementation

static Future<void> generateProject({
  required String targetPath,
  required String projectName,
  required String packageId,
  required List<String> platforms,
  required Logger logger,
}) async {
  final generator = ProjectTemplateGenerator();
  final packageName = _packageIdToPackageName(packageId);
  final hasWeb = platforms.contains('web');

  try {
    // 1. pubspec.yaml 생성
    logger.detail('pubspec.yaml 생성 중...');
    await generator._createPubspec(targetPath, packageName, logger);

    // 2. lib/main.dart 생성
    logger.detail('lib/main.dart 생성 중...');
    await generator._createMainDart(targetPath, packageName, hasWeb, logger);

    // 3. lib/mobile 폴더 구조 생성
    logger.detail('lib/mobile 폴더 구조 생성 중...');
    await generator._createMobileStructure(targetPath, packageName, logger);

    // 4. lib/web 폴더 구조 생성 (web이 선택된 경우)
    if (hasWeb) {
      logger.detail('lib/web 폴더 구조 생성 중...');
      await generator._createWebStructure(targetPath, packageName, logger);
    }

    // 5. test 폴더 생성
    logger.detail('test 폴더 생성 중...');
    await generator._createTestStructure(targetPath, logger);

    logger.success('✅ 프로젝트 템플릿 생성 완료');
  } catch (e, stackTrace) {
    logger.err('❌ 프로젝트 템플릿 생성 중 오류 발생: $e');
    logger.detail('스택 트레이스: $stackTrace');
    rethrow;
  }
}