mirror of
https://github.com/Syping/ragephoto-cli.git
synced 2025-11-09 21:25:18 +01:00
Add project files.
This commit is contained in:
parent
ff98edeb4e
commit
41861a6fe7
3 changed files with 122 additions and 0 deletions
79
Program.cs
Normal file
79
Program.cs
Normal file
|
|
@ -0,0 +1,79 @@
|
||||||
|
using RagePhoto;
|
||||||
|
using System.CommandLine;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
internal static class Program {
|
||||||
|
|
||||||
|
private static void Main(String[] args) {
|
||||||
|
|
||||||
|
Argument<FileInfo> photoArgument = new("photo") {
|
||||||
|
Description = "Photo File"
|
||||||
|
};
|
||||||
|
Argument<String> dataTypeArgument = new("dataType") {
|
||||||
|
Description = "Data Type",
|
||||||
|
DefaultValueFactory = _ => "jpeg"
|
||||||
|
};
|
||||||
|
Option<String> outputOption = new("output", "o") {
|
||||||
|
Description = "Output",
|
||||||
|
DefaultValueFactory = _ => "-"
|
||||||
|
};
|
||||||
|
Command getCommand = new("get", "Get Photo Data") {
|
||||||
|
photoArgument, dataTypeArgument, outputOption
|
||||||
|
};
|
||||||
|
getCommand.SetAction(result => Get(
|
||||||
|
result.GetRequiredValue(photoArgument),
|
||||||
|
result.GetRequiredValue(dataTypeArgument),
|
||||||
|
result.GetRequiredValue(outputOption)));
|
||||||
|
|
||||||
|
RootCommand rootCommand = new("ragephoto-cli Application") {
|
||||||
|
getCommand
|
||||||
|
};
|
||||||
|
|
||||||
|
rootCommand.Parse(args).Invoke();
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void Get(FileInfo photoFile, String dataType, String outputFile) {
|
||||||
|
try {
|
||||||
|
using Photo photo = new();
|
||||||
|
photo.LoadFile(photoFile.FullName);
|
||||||
|
|
||||||
|
Byte[] content = [];
|
||||||
|
switch (dataType.ToLowerInvariant()) {
|
||||||
|
case "format":
|
||||||
|
content = Encoding.UTF8.GetBytes(photo.Format switch {
|
||||||
|
PhotoFormat.GTA5 => "gta5",
|
||||||
|
PhotoFormat.RDR2 => "rdr2",
|
||||||
|
_ => "unknown"
|
||||||
|
});
|
||||||
|
break;
|
||||||
|
case "jpeg":
|
||||||
|
content = photo.Jpeg;
|
||||||
|
break;
|
||||||
|
case "json":
|
||||||
|
content = Encoding.UTF8.GetBytes(photo.Json);
|
||||||
|
break;
|
||||||
|
case "sign":
|
||||||
|
content = Encoding.UTF8.GetBytes($"{photo.Sign}");
|
||||||
|
break;
|
||||||
|
case "title":
|
||||||
|
content = Encoding.UTF8.GetBytes(photo.Title);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
Console.Error.WriteLine($"Unknown Content Type: {dataType}");
|
||||||
|
Environment.Exit(1);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
Stream output = outputFile == "-" ? Console.OpenStandardOutput() : File.Create(outputFile);
|
||||||
|
output.Write(content);
|
||||||
|
}
|
||||||
|
catch (RagePhotoException exception) {
|
||||||
|
Console.Error.WriteLine(exception.Message);
|
||||||
|
Environment.Exit(exception.Photo != null ? (Int32)exception.Error + 2 : -1);
|
||||||
|
}
|
||||||
|
catch (Exception exception) {
|
||||||
|
Console.Error.WriteLine(exception.Message);
|
||||||
|
Environment.Exit(-1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
18
RagePhotoCli.csproj
Normal file
18
RagePhotoCli.csproj
Normal file
|
|
@ -0,0 +1,18 @@
|
||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutputType>Exe</OutputType>
|
||||||
|
<TargetFramework>net8.0</TargetFramework>
|
||||||
|
<AssemblyName>ragephoto-cli</AssemblyName>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
<PublishAot>true</PublishAot>
|
||||||
|
<InvariantGlobalization>true</InvariantGlobalization>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="RagePhoto.Core" Version="0.7.0" />
|
||||||
|
<PackageReference Include="System.CommandLine" Version="2.0.0-rc.2.25502.107" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
25
RagePhotoCli.sln
Normal file
25
RagePhotoCli.sln
Normal file
|
|
@ -0,0 +1,25 @@
|
||||||
|
|
||||||
|
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||||
|
# Visual Studio Version 17
|
||||||
|
VisualStudioVersion = 17.14.36616.10 d17.14
|
||||||
|
MinimumVisualStudioVersion = 10.0.40219.1
|
||||||
|
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "RagePhotoCli", "RagePhotoCli.csproj", "{E8CD6776-793E-4E73-A60F-DF86E35EDF6B}"
|
||||||
|
EndProject
|
||||||
|
Global
|
||||||
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
Release|Any CPU = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||||
|
{E8CD6776-793E-4E73-A60F-DF86E35EDF6B}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
{E8CD6776-793E-4E73-A60F-DF86E35EDF6B}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
|
{E8CD6776-793E-4E73-A60F-DF86E35EDF6B}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
|
{E8CD6776-793E-4E73-A60F-DF86E35EDF6B}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
|
HideSolutionNode = FALSE
|
||||||
|
EndGlobalSection
|
||||||
|
GlobalSection(ExtensibilityGlobals) = postSolution
|
||||||
|
SolutionGuid = {D4BCEAF1-891B-4F6E-8AF9-F0859564C205}
|
||||||
|
EndGlobalSection
|
||||||
|
EndGlobal
|
||||||
Loading…
Add table
Add a link
Reference in a new issue