Initial commit: Client Doc docs Server Tools
Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
using System;
|
||||
using System.IO;
|
||||
using XWorld.PublishTool;
|
||||
|
||||
namespace XWorld.PublishTool.Cli
|
||||
{
|
||||
// 瘦壳:参数解析 → PublishLayout(全部逻辑在 PublishTool 库,有 xUnit 覆盖)
|
||||
internal static class Program
|
||||
{
|
||||
// 退出码:0 成功;1 参数错误;2 发布失败
|
||||
private static int Main(string[] args)
|
||||
{
|
||||
CliOptions o;
|
||||
try { o = CliOptions.Parse(args); }
|
||||
catch (ArgumentException e) { Console.Error.WriteLine(e.Message); return 1; }
|
||||
|
||||
try
|
||||
{
|
||||
GameSpec spec = GameSpecJson.ParseFile(o.SpecPath);
|
||||
string key = o.KeyPath == null ? null : File.ReadAllText(o.KeyPath);
|
||||
var layout = new PublishLayout();
|
||||
if (o.Mode == "server") layout.PublishServer(o.Src, o.Out, spec, key);
|
||||
else layout.PublishClient(o.Src, o.Out, spec, key);
|
||||
Console.WriteLine($"published {o.Mode} {spec.GameId}/{spec.Version} -> {o.Out}" +
|
||||
(key == null ? " [WARN] 未签名(files.txt.sig 为空)" : " [signed]"));
|
||||
return 0;
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
Console.Error.WriteLine("publish failed: " + e.Message);
|
||||
return 2;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,16 @@
|
||||
<Project Sdk="Microsoft.NET.Sdk">
|
||||
|
||||
<PropertyGroup>
|
||||
<OutputType>Exe</OutputType>
|
||||
<TargetFramework>net10.0</TargetFramework>
|
||||
<ImplicitUsings>disable</ImplicitUsings>
|
||||
<Nullable>disable</Nullable>
|
||||
<AssemblyName>XWorld.PublishTool.Cli</AssemblyName>
|
||||
<RootNamespace>XWorld.PublishTool.Cli</RootNamespace>
|
||||
</PropertyGroup>
|
||||
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\PublishTool\PublishTool.csproj" />
|
||||
</ItemGroup>
|
||||
|
||||
</Project>
|
||||
Reference in New Issue
Block a user