git stash success 판별 추가

This commit is contained in:
leedongmyung 2024-11-29 22:29:06 +09:00
parent d232c4e23a
commit 8f51c57df2
4 changed files with 35 additions and 51 deletions

View file

@ -22,55 +22,42 @@ class FileDiffCheck extends Command {
var fileName = getUniqueFileName(data.paths.join(';'));
var tempDir = Directory.systemTemp;
var cacheFolder = Directory('${tempDir.path}/oto/${getUniqueFileName(currentDir.path)}');
if(!cacheFolder.existsSync())
{
var cacheFolder =
Directory('${tempDir.path}/oto/${getUniqueFileName(currentDir.path)}');
if (!cacheFolder.existsSync()) {
cacheFolder.createSync(recursive: true);
}
var cacheFile = File('${cacheFolder.path}/$fileName');
var paths = data.paths;
print('Cache Path: ${cacheFile.path}, Exist: ${cacheFile.existsSync()}');
if(paths.isEmpty)
{
if (paths.isEmpty) {
throw Exception('The paths is Empty.');
}
else
{
if(cacheFile.existsSync())
{
var cachedMap = jsonDecode(cacheFile.readAsStringSync()) as Map<String, dynamic>;
} else {
if (cacheFile.existsSync()) {
var cachedMap =
jsonDecode(cacheFile.readAsStringSync()) as Map<String, dynamic>;
var filesHashMap = await getFilesHashMap(paths);
if(cachedMap.length == filesHashMap.length)
{
for(var pair in filesHashMap.entries)
{
if(cachedMap.containsKey(pair.key))
{
if (cachedMap.length == filesHashMap.length) {
for (var pair in filesHashMap.entries) {
if (cachedMap.containsKey(pair.key)) {
var cachedHash = cachedMap[pair.key];
if(cachedHash != pair.value)
{
if (cachedHash != pair.value) {
await saveDiffData(cacheFile, paths);
diff = true;
break;
}
}
else
{
} else {
await saveDiffData(cacheFile, paths);
diff = true;
break;
}
}
}
else
{
} else {
await saveDiffData(cacheFile, paths);
diff = true;
}
}
else
{
} else {
await saveDiffData(cacheFile, paths);
diff = true;
}
@ -80,41 +67,33 @@ class FileDiffCheck extends Command {
return await complete(exitCode, command);
}
Future saveDiffData(File cacheFile, List<String> paths) async
{
Future saveDiffData(File cacheFile, List<String> paths) async {
var cachedMap = await getFilesHashMap(paths);
var jsonString = jsonEncode(cachedMap);
await cacheFile.writeAsString(jsonString);
return simpleFuture;
}
String getUniqueFileName(String seed)
{
String getUniqueFileName(String seed) {
var fileName = generateMd5(seed);
if(fileName.length > 150)
{
if (fileName.length > 150) {
fileName = fileName.substring(0, 150);
}
return fileName;
}
Future<Map<String, dynamic>> getFilesHashMap(List<String> paths) async
{
Future<Map<String, dynamic>> getFilesHashMap(List<String> paths) async {
var c = Completer<Map<String, dynamic>>();
var cachedMap = <String, dynamic>{};
for(var path in paths)
{
for (var path in paths) {
var file = File(path);
var type = file.statSync().type;
switch(type)
{
switch (type) {
case FileSystemEntityType.directory:
var dir = Directory(path);
var files = dir.listSync();
for(var child in files)
{
if(child is File)
{
for (var child in files) {
if (child is File) {
await setCachedMapHash(cachedMap, File(child.path));
}
}
@ -130,8 +109,7 @@ class FileDiffCheck extends Command {
return c.future;
}
Future setCachedMapHash(Map<String, dynamic> cachedMap, File file) async
{
Future setCachedMapHash(Map<String, dynamic> cachedMap, File file) async {
cachedMap[file.path] = await FileHasher.hash(file);
return simpleFuture;
}
@ -143,4 +121,4 @@ class FileDiffCheck extends Command {
var digest = md5.convert(content);
return hex.encode(digest.bytes);
}
}
}

View file

@ -134,9 +134,12 @@ class GitStashPush extends Command {
: (data.includeUntracked! ? " -u" : "");
var message = data.message == null ? "" : " -m '${data.message}'";
shell.write(' && git stash push$includeUntracked$message');
var process = await ProcessExecutor.start(shell, printStderr: false);
return await completeProcess(process, command);
var process = await ProcessExecutor.run(shell);
if (data.setSuccess != null) {
setProperty(
data.setSuccess!, process.stdout.toString().contains('Saved'));
}
return await complete(process.exitCode, command);
}
}

View file

@ -658,6 +658,7 @@ class DataGitStashPush extends DataParam {
late bool? includeUntracked = true;
late String? message;
late String? setSuccess;
factory DataGitStashPush.fromJson(Map<String, dynamic> json) =>
_$DataGitStashPushFromJson(json);

View file

@ -1132,7 +1132,8 @@ DataGitStashPush _$DataGitStashPushFromJson(Map<String, dynamic> json) =>
..setExitCode = json['setExitCode'] as String?
..showPrint = json['showPrint'] as bool?
..includeUntracked = json['includeUntracked'] as bool?
..message = json['message'] as String?;
..message = json['message'] as String?
..setSuccess = json['setSuccess'] as String?;
Map<String, dynamic> _$DataGitStashPushToJson(DataGitStashPush instance) =>
<String, dynamic>{
@ -1143,6 +1144,7 @@ Map<String, dynamic> _$DataGitStashPushToJson(DataGitStashPush instance) =>
'showPrint': instance.showPrint,
'includeUntracked': instance.includeUntracked,
'message': instance.message,
'setSuccess': instance.setSuccess,
};
DataGitStashApply _$DataGitStashApplyFromJson(Map<String, dynamic> json) =>