Skip to content

Commit

Permalink
Merge remote-tracking branch 'origin/master'
Browse files Browse the repository at this point in the history
# Conflicts:
#	.gitignore
  • Loading branch information
jvyden committed Jul 28, 2022
2 parents fea80d4 + bb4d691 commit 98dd90a
Show file tree
Hide file tree
Showing 5 changed files with 77 additions and 33 deletions.
1 change: 1 addition & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -396,5 +396,6 @@ FodyWeavers.xsd

# JetBrains Rider
*.sln.iml
.DS_Store

builds/
34 changes: 34 additions & 0 deletions UnionPatcher/OSUtil.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,34 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.InteropServices;

namespace LBPUnion.UnionPatcher
{
using RuntimeOSPlatform = System.Runtime.InteropServices.OSPlatform;

public enum OSPlatform
{
NotSupported,
Windows,
OSX,
Linux,
}
public class OSUtil
{
private static IEnumerable
<(OSPlatform Platform, RuntimeOSPlatform RuntimePlatform)?> EnumeratePlatforms()
{
yield return (OSPlatform.Windows, RuntimeOSPlatform.Windows);
yield return (OSPlatform.OSX, RuntimeOSPlatform.OSX);
yield return (OSPlatform.Linux, RuntimeOSPlatform.Linux);
}

public static OSPlatform GetPlatform()
{
return EnumeratePlatforms().FirstOrDefault(p
=> RuntimeInformation.IsOSPlatform(p.Value.RuntimePlatform))?.Platform ?? default;
}
}
}

75 changes: 42 additions & 33 deletions UnionPatcher/RemotePatch.cs
Original file line number Diff line number Diff line change
Expand Up @@ -38,44 +38,53 @@ private static Dictionary<string, string> GetUsers(string ps3Ip, string user, st
public static void LaunchSCETool(string args)
{
string platformExecutable = "";

if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
platformExecutable = "scetool/win64/scetool.exe";
else if (RuntimeInformation.IsOSPlatform(OSPlatform.Linux))
platformExecutable = "scetool/linux64/scetool";
else if (RuntimeInformation.IsOSPlatform(OSPlatform.OSX))
{
if (RuntimeInformation.OSArchitecture == Architecture.Arm64)
{
platformExecutable = "scetool/macarm64/scetool"; // For Apple Silicon Macs
}
else
{
platformExecutable = "scetool/mac64/scetool";
}
}
if (platformExecutable != "")
switch (OSUtil.GetPlatform())
{
ProcessStartInfo startInfo = new();
startInfo.UseShellExecute = false;
startInfo.FileName = Path.GetFullPath(platformExecutable);
startInfo.WorkingDirectory = Path.GetFullPath(".");
startInfo.Arguments = args;
startInfo.RedirectStandardOutput = true;

Console.WriteLine("\n\n===== START SCETOOL =====\n");
using (Process proc = Process.Start(startInfo))
{
while (!proc.StandardOutput.EndOfStream) Console.WriteLine(proc.StandardOutput.ReadLine());
proc.WaitForExit();
}
case OSPlatform.Windows:
platformExecutable = "scetool/win64/scetool.exe";
break;
case OSPlatform.Linux:
if(RuntimeInformation.ProcessArchitecture == Architecture.X64)
{
platformExecutable = "scetool/linux64/scetool";
} else if (RuntimeInformation.ProcessArchitecture == Architecture.Arm)
{
platformExecutable = "scetool/linuxarm/scetool";
} else if (RuntimeInformation.ProcessArchitecture == Architecture.Arm64)
{
platformExecutable = "scetool/linuxarm64/scetool";
}
break;
case OSPlatform.OSX:
if (RuntimeInformation.OSArchitecture == Architecture.Arm64)
{
platformExecutable = "scetool/macarm64/scetool"; // For Apple Silicon Macs
}
else
{
platformExecutable = "scetool/mac64/scetool";
}
break;
default:
throw new Exception("Error starting SCETool. Your platform may not be supported yet.");

Console.WriteLine("\n===== END SCETOOL =====\n\n");
}
else

ProcessStartInfo startInfo = new();
startInfo.UseShellExecute = false;
startInfo.FileName = Path.GetFullPath(platformExecutable);
startInfo.WorkingDirectory = Path.GetFullPath(".");
startInfo.Arguments = args;
startInfo.RedirectStandardOutput = true;

Console.WriteLine("\n\n===== START SCETOOL =====\n");
using (Process proc = Process.Start(startInfo))
{
throw new Exception("Error starting SCETool. Your platform may not be supported yet.");
while (!proc.StandardOutput.EndOfStream) Console.WriteLine(proc.StandardOutput.ReadLine());
proc.WaitForExit();
}

Console.WriteLine("\n===== END SCETOOL =====\n\n");
}

public void RevertEBOOT(string ps3ip, string gameID, string serverURL, string user, string pass)
Expand Down
Binary file added UnionPatcher/scetool/linuxarm/scetool
Binary file not shown.
Binary file added UnionPatcher/scetool/linuxarm64/scetool
Binary file not shown.

0 comments on commit 98dd90a

Please sign in to comment.