CI / Go Backend (push) Canceled after 0s
初始化 monorepo: Go后端(7微服务) + Unity客户端(9模块) + 启动器 HTML5原型: Three.js 3D体素世界, Perlin噪声地形, 原版材质, 22种方块 Minecraft创造模式背包: 双栏布局, 拖拽移动物品, 方向性元件引脚 AI助搭策划文档 + 客户端/服务端骨架 + Docker Compose + CI
53 lines
1.9 KiB
C#
53 lines
1.9 KiB
C#
using System;
|
|
|
|
namespace PCL.Core.Minecraft;
|
|
|
|
/// <summary>
|
|
/// 用于解析 Maven 包 ID 为 Uri 或 Path
|
|
/// </summary>
|
|
/// <param name="mavenId"></param>
|
|
public class MavenArtifact(string mavenId)
|
|
{
|
|
/// <summary>
|
|
/// 将 Maven 包 ID 转换为 Uri 或 Path
|
|
/// </summary>
|
|
/// <param name="uriOrPath"></param>
|
|
/// <returns></returns>
|
|
public string Resolve(string uriOrPath)
|
|
{
|
|
return $"{uriOrPath.TrimEnd('/')}{_GetMavenPath(mavenId)}";
|
|
}
|
|
|
|
/// <summary>
|
|
/// 解析 Maven 包 ID
|
|
/// </summary>
|
|
/// <param name="packageId">包 ID</param>
|
|
/// <returns>Maven 包相对路径 (以 / 开头)</returns>
|
|
/// <exception cref="FormatException">给定的 Maven 包 ID 长度过长或过短</exception>
|
|
private static string _GetMavenPath(string packageId)
|
|
{
|
|
var packageIds = packageId.Split(":");
|
|
switch (packageIds.Length)
|
|
{
|
|
case 3:
|
|
return $"/{packageIds[0].Replace(".","/")}/{packageIds[1]}/{packageIds[1]}-{packageIds[2]}.jar";
|
|
case 4:
|
|
if (_IsCommonPackaging(packageIds[2]))
|
|
{
|
|
return $"/{packageIds[0].Replace(".","/")}/{packageIds[1]}/{packageIds[1]}-{packageIds[3]}.{packageIds[2]}";
|
|
}
|
|
return $"/{packageIds[0].Replace(".","/")}/{packageId[1]}/{packageIds[1]}-{packageIds[2]}-{packageIds[3]}.jar";
|
|
case 5:
|
|
return $"{packageIds[0].Replace(".","/")}/{packageIds[1]}/{packageIds[1]}-{packageIds[3]}-{packageId[4]}.{packageId[2]}";
|
|
default:
|
|
throw new FormatException($"Invalid maven package id: Length is {packageIds.Length}");
|
|
}
|
|
}
|
|
/// <summary>
|
|
/// 用于检查是否是 Packaging
|
|
/// </summary>
|
|
private static bool _IsCommonPackaging(string name)
|
|
{
|
|
return name == "jar" || name == "zip" || name == "pom";
|
|
}
|
|
} |