-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerate_samples.dart
More file actions
98 lines (79 loc) · 2.31 KB
/
generate_samples.dart
File metadata and controls
98 lines (79 loc) · 2.31 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
#!/usr/bin/env dart
import 'dart:io';
import 'package:ercode_cli/generate_code.dart';
import 'package:ercode_cli/ercode.dart';
void main() async {
print('🚀 Generating sample modules...\n');
// Setup test environment
final testDir = Directory('examples/generated');
if (!testDir.existsSync()) {
testDir.createSync(recursive: true);
}
// Change to test directory
Directory.current = testDir.path;
// Create necessary directories
Directory('lib/modules').createSync(recursive: true);
Directory('lib/helpers').createSync(recursive: true);
Directory('generator').createSync(recursive: true);
// Create pubspec.yaml
File('pubspec.yaml').writeAsStringSync('''
name: playground
description: Sample generated app
version: 1.0.0
environment:
sdk: ">=2.18.6 <3.0.0"
dependencies:
flutter:
sdk: flutter
''');
// Create minimal main.dart
File('lib/main.dart').writeAsStringSync('''
import 'package:flutter/material.dart';
void main() {
runApp(const MyApp());
}
class MyApp extends StatelessWidget {
const MyApp({Key? key}) : super(key: key);
@override
Widget build(BuildContext context) {
return MaterialApp(
title: 'Generated App',
home: Scaffold(body: Center(child: Text('Hello'))),
);
}
}
''');
// Copy JSON configs
final sourceConfigDir = Directory('../../examples/configs');
if (sourceConfigDir.existsSync()) {
await for (var file in sourceConfigDir.list()) {
if (file is File && file.path.endsWith('.json')) {
final fileName = file.path.split('/').last;
await file.copy('generator/$fileName');
print('📝 Copied config: $fileName');
}
}
}
print('\n🔧 Running init to generate helper files...\n');
// Run init to generate helper files
await initProject();
print('\n🔨 Generating modules...\n');
// Generate modules
final configs = [
'generator/product.json',
'generator/article.json',
'generator/note_simple.json',
];
for (var config in configs) {
if (File(config).existsSync()) {
print('▶️ Generating from $config');
try {
generateCode([null, config]);
await Future.delayed(Duration(milliseconds: 500));
} catch (e) {
print('❌ Error: $e');
}
}
}
print('\n✅ Done! Check examples/generated/lib/modules/');
}