-
Notifications
You must be signed in to change notification settings - Fork 16
Expand file tree
/
Copy pathMakefile.dart
More file actions
110 lines (100 loc) · 2.67 KB
/
Makefile.dart
File metadata and controls
110 lines (100 loc) · 2.67 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
99
100
101
102
103
104
105
106
107
108
109
110
// ignore_for_file: file_names
// ignore_for_file: avoid_print
import 'dart:io';
Future<int> main(List<String> args) async {
var ret = 0;
print('<make> starting with args $args');
if (args.isEmpty) {
ret = await runBuildRunner();
if (ret == 0) {
ret = await runDrift();
}
} else {
ret = switch (args.first) {
'build' || 'b' => await runBuildRunner(),
'gitsumu' || 'g' => await runGitsumu(),
'drift' || 'd' => await runDrift(),
final v => () {
stderr.writeln('unknown arg: $v');
return 1;
}(),
};
}
if (ret == 0) {
print('<make> done');
} else {
stderr.writeln('<make> failed with code $ret');
}
return ret;
}
Future<int> runBuildRunner() async {
print('<make> running build runner...');
final p = await Process.run('dart', ['run', 'build_runner', 'build', '-d']);
stdout.write(p.stdout);
stderr.write(p.stderr);
if (p.exitCode != 0) {
stderr.writeln('failed to run build_runner, ret=${p.exitCode}');
return 1;
}
return 0;
}
Future<int> runGitsumu() async {
print('<make> running gitsumu...');
final p = await Process.run('dart', ['run', 'gitsumu']);
stdout.write(p.stdout);
stderr.write(p.stderr);
if (p.exitCode != 0) {
stderr.writeln('failed to run gitsumu, ret=${p.exitCode}');
return 1;
}
return 0;
}
Future<int> runDrift() async {
print('<make> running drift...');
final p = await Process.run('dart', [
'run',
'drift_dev',
'schema',
'dump',
'lib/shared/providers/storage_provider/models/database/database.dart',
'lib/shared/providers/storage_provider/models/database/schema/migration/',
]);
final ret = p.exitCode;
stdout.write(p.stdout);
stderr.write(p.stderr);
if (ret != 0) {
stderr.writeln('failed to dump drift schema, ret=$ret');
return 1;
}
final p2 = await Process.run('dart', [
'run',
'drift_dev',
'schema',
'steps',
'lib/shared/providers/storage_provider/models/database/schema/migration/',
'lib/shared/providers/storage_provider/models/database/schema/schema_versions.dart',
]);
final ret2 = p2.exitCode;
stdout.write(p2.stdout);
stderr.write(p2.stderr);
if (ret2 != 0) {
stderr.writeln('failed to step drift migration, ret=$ret2');
return 1;
}
final p3 = await Process.run('dart', [
'run',
'drift_dev',
'schema',
'generate',
'lib/shared/providers/storage_provider/models/database/schema/migration/',
'test/data/generated_migrations/',
]);
final ret3 = p3.exitCode;
stdout.write(p3.stdout);
stderr.write(p3.stderr);
if (ret3 != 0) {
stderr.writeln('failed to generate drift test data, ret=$ret3');
return 1;
}
return 0;
}