-
Notifications
You must be signed in to change notification settings - Fork 53
/
Copy pathassets.dart
52 lines (41 loc) · 1.41 KB
/
assets.dart
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
import 'dart:io';
import 'package:recase/recase.dart';
import 'utils.dart';
const CODE_FILE_PATH = "./lib/StaticAssets.dart";
main(List<String> args) async {
final start = DateTime.now();
final assetsDir = Directory(normalize("./assets/"));
final assetsDirPaths = assetsDir.listSync();
final keys = [];
assetsDirPaths.forEach((file) {
final dir = Directory(file.path);
final chunks = file.path.split(normalize("/"));
final scope = chunks.last;
keys.add("\n\t// $scope paths");
dir.listSync().forEach((element) {
if (!element.path.contains(RegExp('(?:jpg|gif|png|json)'))) {
return;
}
final filePath = element.path.replaceFirst("." + normalize("/"), "");
var fileName = filePath.split(normalize("/")).last.split(".").first;
final varName =
scope + " " + fileName.replaceAll(RegExp(r'[^\w\s]+'), " ");
final key =
"\tstatic final ${varName.camelCase} = \"${filePath.replaceAll(normalize("/"), "/")}\";";
keys.add(key);
});
});
final classData = generateStaticClass(keys.join("\n"));
final classFile = File(CODE_FILE_PATH);
await classFile.writeAsString(classData);
final end = DateTime.now();
print(end.difference(start).inMilliseconds.toString() + "ms");
}
String generateStaticClass(String keys) {
return '''
// This is an auto generated file. Do not make any change on this.
class StaticAssets {
$keys
}
''';
}