feat: pathing

This commit is contained in:
tresabhi committed 2025-01-23 21:43:54 -06:00
1 parent 8e4f4c39bb
commit 82af101f9c
5 files changed
+60 -16

No files matched your search

+4
View File
@@ -7,4 +7,8 @@
<Nullable>enable</Nullable>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="CUE4Parse" Version="1.1.1" />
</ItemGroup>
</Project>
+27
View File
@@ -0,0 +1,27 @@
using CLI.Models;
namespace CLI.Functions
{
class DLC
{
public static void Run(Arguments args)
{
if (args.raw.Length < 2)
{
throw new ArgumentException("No directory provided");
}
string dlcPaksDirectory = args.raw[1];
if (args.sanitize && Directory.Exists(dlcPaksDirectory))
{
Directory.Delete(dlcPaksDirectory, true);
}
Directory.CreateDirectory(dlcPaksDirectory);
string testFilePath = Path.Combine(dlcPaksDirectory, "test.txt");
File.WriteAllText(testFilePath, "test");
}
}
}
+19
View File
@@ -0,0 +1,19 @@
namespace CLI.Models
{
public class Arguments
{
public string[] raw;
public bool sanitize;
public Arguments(string[] args)
{
raw = args;
sanitize = args.Contains("--sanitize");
if (args.Length < 1)
{
throw new ArgumentException("No arguments provided");
}
}
}
}
+2 -2
View File
@@ -1,6 +1,6 @@
namespace CLI.Models
{
public class PakFile
public class LocalManifestPakFile
{
public long FileSize { get; set; }
public required string FileHash { get; set; }
@@ -8,6 +8,6 @@ namespace CLI.Models
public class LocalManifest
{
public required Dictionary<string, PakFile> PakFiles { get; set; }
public required Dictionary<string, LocalManifestPakFile> PakFiles { get; set; }
}
}
+8 -14
View File
@@ -1,27 +1,21 @@
using System.Text.Json;
using CLI.Functions;
using CLI.Models;
namespace CLI
{
class Program
{
static readonly JsonSerializerOptions options = new() { PropertyNameCaseInsensitive = true };
static void Main(string[] args)
{
string RootDir = @"C:\Users\coola\AppData\Local\Blitz";
string paksPath = Path.Combine(RootDir, @"Saved\PersistentDownloadDir\Dlc\PakCache");
string localManifestPath = Path.Combine(paksPath, "LocalManifest.json");
string localManifestContent = File.ReadAllText(localManifestPath);
Arguments arguments = new(args);
LocalManifest localManifest =
JsonSerializer.Deserialize<LocalManifest>(localManifestContent, options)
?? throw new Exception("Failed to deserialize LocalManifest");
foreach (var pakFile in localManifest.PakFiles)
switch (args[0])
{
string pakFilePath = Path.Combine(paksPath, pakFile.Key);
Console.WriteLine($"({pakFile.Value.FileSize}) {pakFilePath}");
case "dlc":
{
DLC.Run(arguments);
break;
}
}
}
}