Complete refactoring of most code, indiscriminate application of .editorconfig and general cleanup.

This commit is contained in:
Ottermandias 2021-06-19 11:53:54 +02:00
parent 5332119a63
commit a19ec226c5
84 changed files with 3168 additions and 1709 deletions

View file

@ -7,8 +7,10 @@ using Dalamud.Plugin;
using ICSharpCode.SharpZipLib.Zip;
using Newtonsoft.Json;
using Penumbra.Importer.Models;
using Penumbra.Models;
using Penumbra.Mod;
using Penumbra.Structs;
using Penumbra.Util;
using FileMode = System.IO.FileMode;
namespace Penumbra.Importer
{
@ -46,6 +48,12 @@ namespace Penumbra.Importer
_resolvedTempFilePath = Path.Combine( _outDirectory.FullName, TempFileName );
}
private static string ReplaceBadXivSymbols( string source )
=> source.ReplaceInvalidPathSymbols().RemoveNonAsciiSymbols();
private static DirectoryInfo NewOptionDirectory( DirectoryInfo baseDir, string optionName )
=> new( Path.Combine( baseDir.FullName, ReplaceBadXivSymbols( optionName ) ) );
public void ImportModPack( FileInfo modPackFile )
{
CurrentModPack = modPackFile.Name;
@ -94,7 +102,7 @@ namespace Penumbra.Importer
WriteZipEntryToTempFile( s );
var fs = new FileStream( _resolvedTempFilePath, FileMode.Open );
return new MagicTempFileStreamManagerAndDeleterFuckery( fs );
return new MagicTempFileStreamManagerAndDeleter( fs );
}
private void VerifyVersionAndImport( FileInfo modPackFile )
@ -187,13 +195,11 @@ namespace Penumbra.Importer
public static DirectoryInfo CreateModFolder( DirectoryInfo outDirectory, string modListName )
{
var correctedPath = Path.Combine( outDirectory.FullName,
Path.GetFileName( modListName ).RemoveInvalidPathSymbols().RemoveNonAsciiSymbols() );
var newModFolder = new DirectoryInfo( correctedPath );
var newModFolder = NewOptionDirectory( outDirectory, Path.GetFileName( modListName ) );
var i = 2;
while( newModFolder.Exists && i < 12 )
{
newModFolder = new DirectoryInfo( correctedPath + $" ({i++})" );
newModFolder = new DirectoryInfo( newModFolder.FullName + $" ({i++})" );
}
if( newModFolder.Exists )
@ -272,7 +278,7 @@ namespace Penumbra.Importer
foreach( var group in page.ModGroups.Where( group => group.GroupName != null && group.OptionList != null ) )
{
var groupFolder = new DirectoryInfo( Path.Combine( newModFolder.FullName, group.GroupName!.ReplaceInvalidPathSymbols().RemoveNonAsciiSymbols( ) ) );
var groupFolder = NewOptionDirectory( newModFolder, group.GroupName! );
if( groupFolder.Exists )
{
groupFolder = new DirectoryInfo( groupFolder.FullName + $" ({page.PageIndex})" );
@ -281,7 +287,7 @@ namespace Penumbra.Importer
foreach( var option in group.OptionList!.Where( option => option.Name != null && option.ModsJsons != null ) )
{
var optionFolder = new DirectoryInfo( Path.Combine( groupFolder.FullName, option.Name!.ReplaceInvalidPathSymbols().RemoveNonAsciiSymbols() ) );
var optionFolder = NewOptionDirectory( groupFolder, option.Name! );
ExtractSimpleModList( optionFolder, option.ModsJsons!, modData );
}
@ -311,7 +317,7 @@ namespace Penumbra.Importer
OptionDesc = string.IsNullOrEmpty( opt.Description ) ? "" : opt.Description!,
OptionFiles = new Dictionary< RelPath, HashSet< GamePath > >(),
};
var optDir = new DirectoryInfo( Path.Combine( groupFolder.FullName, opt.Name!.ReplaceInvalidPathSymbols().RemoveNonAsciiSymbols() ) );
var optDir = NewOptionDirectory( groupFolder, opt.Name! );
if( optDir.Exists )
{
foreach( var file in optDir.EnumerateFiles( "*.*", SearchOption.AllDirectories ) )