diff --git a/lib/oto/commands/file/file_diff_check.dart b/lib/oto/commands/file/file_diff_check.dart index 92a3f62..13216fe 100644 --- a/lib/oto/commands/file/file_diff_check.dart +++ b/lib/oto/commands/file/file_diff_check.dart @@ -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; + } else { + if (cacheFile.existsSync()) { + var cachedMap = + jsonDecode(cacheFile.readAsStringSync()) as Map; 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 paths) async - { + Future saveDiffData(File cacheFile, List 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> getFilesHashMap(List paths) async - { + Future> getFilesHashMap(List paths) async { var c = Completer>(); var cachedMap = {}; - 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 cachedMap, File file) async - { + Future setCachedMapHash(Map 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); } -} \ No newline at end of file +} diff --git a/lib/oto/commands/git/git.dart b/lib/oto/commands/git/git.dart index 8c2d3a3..c7ef572 100644 --- a/lib/oto/commands/git/git.dart +++ b/lib/oto/commands/git/git.dart @@ -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); } } diff --git a/lib/oto/data/command_data.dart b/lib/oto/data/command_data.dart index b257df8..995e901 100644 --- a/lib/oto/data/command_data.dart +++ b/lib/oto/data/command_data.dart @@ -658,6 +658,7 @@ class DataGitStashPush extends DataParam { late bool? includeUntracked = true; late String? message; + late String? setSuccess; factory DataGitStashPush.fromJson(Map json) => _$DataGitStashPushFromJson(json); diff --git a/lib/oto/data/command_data.g.dart b/lib/oto/data/command_data.g.dart index 10198d1..dd59c1e 100644 --- a/lib/oto/data/command_data.g.dart +++ b/lib/oto/data/command_data.g.dart @@ -1132,7 +1132,8 @@ DataGitStashPush _$DataGitStashPushFromJson(Map 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 _$DataGitStashPushToJson(DataGitStashPush instance) => { @@ -1143,6 +1144,7 @@ Map _$DataGitStashPushToJson(DataGitStashPush instance) => 'showPrint': instance.showPrint, 'includeUntracked': instance.includeUntracked, 'message': instance.message, + 'setSuccess': instance.setSuccess, }; DataGitStashApply _$DataGitStashApplyFromJson(Map json) =>