-
Notifications
You must be signed in to change notification settings - Fork 26
/
Copy pathsync_with_e_os.dart
126 lines (121 loc) · 4 KB
/
sync_with_e_os.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
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
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
import 'dart:io';
import 'package:yaml/yaml.dart';
import 'tools/add_to_support.dart';
import 'tools/extended_codename_creator.dart';
import 'tools/is_supported.dart';
void main() async {
stdout.write("Cloning https://gitlab.e.foundation/e/documentation/user.git...\n");
int numberOfCovered = 0;
int numberOfNotCovered = 0;
List<String> listOfNotCovered = [];
// List<String> listOfCovered = [];
Directory cacheDir = Directory(".cache/eOSSync");
if (cacheDir.existsSync()) {
cacheDir.deleteSync(recursive: true);
}
cacheDir.createSync(recursive: true);
var process = await Process.start("git", ["clone", "https://gitlab.e.foundation/e/documentation/user.git", cacheDir.path], mode: ProcessStartMode.inheritStdio);
int exitCode = await process.exitCode;
if (exitCode == 0) {
stdout.write("OK\n");
for (FileSystemEntity entry in Directory("${cacheDir.path}/htdocs/_data/devices").listSync().toList()) {
stdout.write("${entry.path}\n");
if (entry is File) {
String content = await entry.readAsString();
List<String> listOfLines = content.split("\n");
List<String> listOfParsedLines = [];
for (String line in listOfLines) {
String firstPart = line.split(":").first;
bool repeats = false;
for (String parsedLine in listOfParsedLines) {
String parsedFirstPart = parsedLine.split(":").first;
if (firstPart == parsedFirstPart) {
repeats = true;
}
}
if (!repeats) {
listOfParsedLines += [line];
}
}
content = listOfParsedLines.join("\n");
YamlMap yamlMap = loadYaml(content);
String devVersion = yamlMap["build_version_dev"] ?? "";
String? stableVersion = yamlMap["build_version_stable"];
String? isLegacy = yamlMap["legacy"];
String androidVersion;
String romStatus;
if (stableVersion != null) {
androidVersion = androidVersionFromeOSVersion(stableVersion);
romStatus = "Official";
}
else {
androidVersion = androidVersionFromeOSVersion(devVersion);
romStatus = "Community";
}
if (isLegacy != null) {
if (isLegacy == "yes") {
romStatus = "Discontinued";
}
else {
throw Exception();
}
}
print(androidVersion);
String codename = yamlMap["codename"];
String manufacturer = yamlMap["vendor_short"] ?? (yamlMap["vendor"] as String).toLowerCase();
String extendedCodename = extendedCodenameCreator(readCodename: codename, readVendor: manufacturer);
if (isSupported(extendedCodename: extendedCodename)) {
// listOfCovered += [extendedCodename];
numberOfCovered += 1;
addToSupport(
androidVersion: androidVersion,
extendedCodename: extendedCodename,
romName: "/e/OS",
romState: romStatus,
romSupport: true,
romWebpage: "https://e.foundation/e-os/",
deviceWebpage: "https://doc.e.foundation/devices/$codename",
);
}
else {
listOfNotCovered += [extendedCodename];
numberOfNotCovered += 1;
}
}
}
stdout.write("Covered: $numberOfCovered\n");
stdout.write("Not covered: $numberOfNotCovered\n");
for (String device in listOfNotCovered) {
stdout.write("$device\n");
}
}
}
String androidVersionFromeOSVersion(String eOSVersion) {
if (eOSVersion == "Q") {
return "10";
}
else if (eOSVersion == "R") {
return "11";
}
else if (eOSVersion == "S") {
return "12";
}
else if (eOSVersion == "T") {
return "13";
}
else if (eOSVersion == "U") {
return "14";
}
else if (eOSVersion == "Oreo") {
return "8";
}
else if (eOSVersion == "Pie") {
return "9";
}
else if (eOSVersion == "Nougat") {
return "7";
}
else {
throw Exception("This version of eOS ($eOSVersion) is not supported yet!");
}
}