gitRemoteVerbose static method
Implementation
static Future<Map> gitRemoteVerbose({
String? workingDirectory,
Map<String, String>? environment,
bool includeParentEnvironment = true,
Client? httpClient,
}) async {
var res = await Process.run("which", ["git"]);
if (res.exitCode != 0) {
return {"@type": "error", "message": "git_not_found", "description": "Please install git first"};
}
Process process = await Process.start(
"git",
"remote --verbose".split(" "),
workingDirectory: workingDirectory,
environment: environment,
includeParentEnvironment: includeParentEnvironment,
);
String message = "";
process.stderr.listen((event) {
try {
message += utf8.decode(event, allowMalformed: true).replaceAll(RegExp("(\t)", caseSensitive: false), " ");
} catch (e) {}
});
process.stdout.listen((event) {
try {
message += utf8.decode(event, allowMalformed: true).replaceAll(RegExp("(\t)", caseSensitive: false), " ");
} catch (e) {}
});
int exit_code = await process.exitCode;
message = message.trim();
bool is_error = false;
if (exit_code != 0) {
is_error = true;
}
if (is_error) {
return {
"@type": "error",
"message": "",
"description": "${message.trim()}".replaceAll(RegExp("(ghp_.*)", caseSensitive: false), ""),
};
}
return {
"@type": "remotes",
"remotes": message
.split("\n")
.map((e) {
// ignore: unnecessary_string_escapes
RegExpMatch? regExpMatch = RegExp("(([a-z0-9_-]+)[ ]+(.*)[ ]+([(][a-z0-9_-]+[)]))", caseSensitive: false).firstMatch(e);
if (regExpMatch == null) {
return null;
}
Map json_data = {
"@type": "remote",
"location": regExpMatch.group(2),
"url": regExpMatch.group(3),
"type": (regExpMatch.group(4) ?? "").replaceAll(RegExp("([()])"), "").trim(),
};
return json_data;
})
.whereType<Map>()
.toList(),
};
}