mirror of
https://github.com/wabbajack-tools/wabbajack.git
synced 2024-08-30 18:42:17 +00:00
Merge pull request #351 from wabbajack-tools/delete-blank-directories
Delete empty folders after install.
This commit is contained in:
commit
030f2563e3
@ -377,6 +377,30 @@ namespace Wabbajack.Lib
|
||||
.Where(d => d != null)
|
||||
.Do(d => indexed.Remove(d.To));
|
||||
|
||||
Utils.Log("Cleaning empty folders");
|
||||
var expectedFolders = indexed.Keys.SelectMany(path =>
|
||||
{
|
||||
// Get all the folders and all the folder parents
|
||||
// so for foo\bar\baz\qux.txt this emits ["foo", "foo\\bar", "foo\\bar\\baz"]
|
||||
var split = path.Split('\\');
|
||||
return Enumerable.Range(1, split.Length - 1).Select(t => string.Join("\\", split.Take(t)));
|
||||
}).Distinct()
|
||||
.Select(p => Path.Combine(OutputFolder, p))
|
||||
.ToHashSet();
|
||||
|
||||
try
|
||||
{
|
||||
Directory.EnumerateDirectories(OutputFolder, DirectoryEnumerationOptions.Recursive)
|
||||
.Where(p => !expectedFolders.Contains(p))
|
||||
.OrderByDescending(p => p.Length)
|
||||
.Do(p => Directory.Delete(p));
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// ignored because it's not worth throwing a fit over
|
||||
Utils.Log("Error when trying to clean empty folders. This doesn't really matter.");
|
||||
}
|
||||
|
||||
UpdateTracker.NextStep("Updating Modlist");
|
||||
Utils.Log($"Optimized {ModList.Directives.Count} directives to {indexed.Count} required");
|
||||
var requiredArchives = indexed.Values.OfType<FromArchive>()
|
||||
|
@ -1,5 +1,6 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Threading.Tasks;
|
||||
using Microsoft.VisualStudio.TestTools.UnitTesting;
|
||||
@ -87,6 +88,11 @@ namespace Wabbajack.Test
|
||||
var extra_path = utils.PathOfInstalledFile(mod, @"something_i_made.foo");
|
||||
File.WriteAllText(extra_path, "bleh");
|
||||
|
||||
var extra_folder = Path.Combine(Path.GetDirectoryName(utils.PathOfInstalledFile(mod, @"something_i_made.foo")), "folder_i_made");
|
||||
Directory.CreateDirectory(extra_folder);
|
||||
|
||||
Assert.IsTrue(Directory.Exists(extra_folder));
|
||||
|
||||
|
||||
var unchanged_modified = File.GetLastWriteTime(unchanged_path);
|
||||
var modified_modified = File.GetLastWriteTime(modified_path);
|
||||
@ -105,6 +111,7 @@ namespace Wabbajack.Test
|
||||
Assert.AreEqual(unchanged_modified, File.GetLastWriteTime(unchanged_path));
|
||||
Assert.AreNotEqual(modified_modified, File.GetLastWriteTime(modified_path));
|
||||
Assert.IsFalse(File.Exists(extra_path));
|
||||
Assert.IsFalse(Directory.Exists(extra_folder));
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user