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(),
};
}