feat(workspace): adopt context-first package management
Validate ShrinkSDK Workspace / unity (push) Successful in 3m7s
Validate ShrinkSDK Workspace / unity (push) Successful in 3m7s
This commit is contained in:
@@ -15,27 +15,27 @@ namespace ShrinkSDK.WorkspaceValidation
|
||||
{
|
||||
private static readonly ExpectedPackage[] ExpectedPackages =
|
||||
{
|
||||
new ExpectedPackage("ShrinkApp.Core", "com.cneicy.shrink-app-core", "0.1.1"),
|
||||
new ExpectedPackage("ShrinkApp.Starter.Basic", "com.cneicy.shrink-app-starter-basic", "0.1.2"),
|
||||
new ExpectedPackage("ShrinkApp.Core", "com.cneicy.shrink-app-core", "0.1.2"),
|
||||
new ExpectedPackage("ShrinkApp.Starter.Basic", "com.cneicy.shrink-app-starter-basic", "0.2.0"),
|
||||
new ExpectedPackage("ShrinkCommand", "com.cneicy.shrink-command", "0.2.0"),
|
||||
new ExpectedPackage("ShrinkCommand.Integration.App", "com.cneicy.shrink-command-integration-app", "0.1.0"),
|
||||
new ExpectedPackage("ShrinkCommand.Integration.App", "com.cneicy.shrink-command-integration-app", "0.1.1"),
|
||||
new ExpectedPackage("ShrinkCommand.Integration.EventBus", "com.cneicy.shrink-command-integration-eventbus", "0.1.1"),
|
||||
new ExpectedPackage("ShrinkCommand.Integration.Network", "com.cneicy.shrink-command-integration-network", "0.1.0"),
|
||||
new ExpectedPackage("ShrinkContext.AppAdapter", "com.cneicy.shrink-context-app-adapter", "0.1.2"),
|
||||
new ExpectedPackage("ShrinkCommand.Integration.Network", "com.cneicy.shrink-command-integration-network", "0.1.1"),
|
||||
new ExpectedPackage("ShrinkContext.AppAdapter", "com.cneicy.shrink-context-app-adapter", "0.1.3"),
|
||||
new ExpectedPackage("ShrinkContext.Core", "com.cneicy.shrink-context-core", "0.1.0"),
|
||||
new ExpectedPackage("ShrinkContext.EventBusAdapter", "com.cneicy.shrink-context-eventbus-adapter", "0.1.0"),
|
||||
new ExpectedPackage("ShrinkDataSaver", "com.cneicy.shrink-datasaver", "2.2.0"),
|
||||
new ExpectedPackage("ShrinkDataSaver.Integration.App", "com.cneicy.shrink-datasaver-integration-app", "0.1.0"),
|
||||
new ExpectedPackage("ShrinkDataSaver.Integration.EventBus", "com.cneicy.shrink-datasaver-integration-eventbus", "2.1.0"),
|
||||
new ExpectedPackage("ShrinkDataSaver", "com.cneicy.shrink-datasaver", "2.2.1"),
|
||||
new ExpectedPackage("ShrinkDataSaver.Integration.App", "com.cneicy.shrink-datasaver-integration-app", "0.1.1"),
|
||||
new ExpectedPackage("ShrinkDataSaver.Integration.EventBus", "com.cneicy.shrink-datasaver-integration-eventbus", "2.1.1"),
|
||||
new ExpectedPackage("ShrinkEventBus", "com.cneicy.shrink-eventbus", "2.0.0"),
|
||||
new ExpectedPackage("ShrinkEventBus.Entities", "com.cneicy.shrink-eventbus-entities", "0.1.0"),
|
||||
new ExpectedPackage("ShrinkInstaller", "com.cneicy.shrink-installer", "0.1.7"),
|
||||
new ExpectedPackage("ShrinkModFramework", "com.cneicy.shrink-mod-framework", "0.2.1"),
|
||||
new ExpectedPackage("ShrinkNetwork", "com.cneicy.shrink-network", "0.2.0"),
|
||||
new ExpectedPackage("ShrinkNetwork.Integration.App", "com.cneicy.shrink-network-integration-app", "0.1.0"),
|
||||
new ExpectedPackage("ShrinkNetwork.Integration.EventBus", "com.cneicy.shrink-network-integration-eventbus", "0.1.1"),
|
||||
new ExpectedPackage("ShrinkInstaller", "com.cneicy.shrink-installer", "0.2.0"),
|
||||
new ExpectedPackage("ShrinkModFramework", "com.cneicy.shrink-mod-framework", "0.2.2"),
|
||||
new ExpectedPackage("ShrinkNetwork", "com.cneicy.shrink-network", "0.2.1"),
|
||||
new ExpectedPackage("ShrinkNetwork.Integration.App", "com.cneicy.shrink-network-integration-app", "0.1.1"),
|
||||
new ExpectedPackage("ShrinkNetwork.Integration.EventBus", "com.cneicy.shrink-network-integration-eventbus", "0.1.2"),
|
||||
new ExpectedPackage("ShrinkShared.CodeGen", "com.cneicy.shrink-shared-codegen", "0.1.0"),
|
||||
new ExpectedPackage("ShrinkTutorial", "com.cneicy.shrink-tutorial", "0.1.1")
|
||||
new ExpectedPackage("ShrinkTutorial", "com.cneicy.shrink-tutorial", "0.1.2")
|
||||
};
|
||||
|
||||
public static void Run()
|
||||
|
||||
Submodule Assets/Modules/ShrinkApp.Core updated: 0497fd6066...ec91c434b6
Submodule Assets/Modules/ShrinkApp.Starter.Basic updated: 91cae21553...f5e7b898c3
Submodule Assets/Modules/ShrinkCommand.Integration.App updated: c6c2eb08bb...a51a6d712e
Submodule Assets/Modules/ShrinkCommand.Integration.Network updated: 155143930e...b312265c90
Submodule Assets/Modules/ShrinkContext.AppAdapter updated: d89ea4899b...52bda43e3c
Submodule Assets/Modules/ShrinkDataSaver updated: b111c5f437...ec87b0bde3
Submodule Assets/Modules/ShrinkDataSaver.Integration.App updated: 5e613f3c0a...fd5c66a6da
Submodule Assets/Modules/ShrinkDataSaver.Integration.EventBus updated: 320397c092...1486894f52
Submodule Assets/Modules/ShrinkInstaller updated: 9bdc57fd88...96480dd488
Submodule Assets/Modules/ShrinkModFramework updated: 95446018c3...39f6f97707
Submodule Assets/Modules/ShrinkNetwork updated: da609cabb9...dd13a01bc9
Submodule Assets/Modules/ShrinkNetwork.Integration.App updated: 1b04415fd7...da7c8af3ac
Submodule Assets/Modules/ShrinkNetwork.Integration.EventBus updated: 00f50c1289...ac2ee2df1e
Submodule Assets/Modules/ShrinkTutorial updated: fbba140fd6...2f9b0ff512
@@ -86,25 +86,25 @@ ShrinkSDK Workspace/
|
||||
|---|---:|---|
|
||||
| `com.cneicy.shrink-eventbus` | 2.0.0 | 单一事件模型、多 Bus、生成特性订阅、UniTask 调度与零 GC 热路径 |
|
||||
| `com.cneicy.shrink-eventbus-entities` | 0.1.0 | ShrinkEventBus 的 ECS/Burst NativeQueue writer 与 playback 适配 |
|
||||
| `com.cneicy.shrink-datasaver` | 2.2.0 | 多槽位存档、设置、迁移、加密、原子写入与备份 |
|
||||
| `com.cneicy.shrink-datasaver` | 2.2.1 | 多槽位存档、设置、迁移、加密、原子写入与备份 |
|
||||
| `com.cneicy.shrink-command` | 0.2.0 | 路径式命令、权限与同步/异步执行 |
|
||||
| `com.cneicy.shrink-network` | 0.2.0 | 消息、RPC、权限、诊断、TCP/KCP/Loopback 与服务器生成 |
|
||||
| `com.cneicy.shrink-mod-framework` | 0.2.1 | 模组发现、依赖、可逆生命周期、命名空间内容覆盖、外部 DLL revision 与 Harmony lease |
|
||||
| `com.cneicy.shrink-tutorial` | 0.1.1 | 数据驱动引导、遮罩、锚点、触发与持久化 |
|
||||
| `com.cneicy.shrink-network` | 0.2.1 | 消息、RPC、权限、诊断、TCP/KCP/Loopback 与服务器生成 |
|
||||
| `com.cneicy.shrink-mod-framework` | 0.2.2 | 模组发现、依赖、可逆生命周期、命名空间内容覆盖、外部 DLL revision 与 Harmony lease |
|
||||
| `com.cneicy.shrink-tutorial` | 0.1.2 | 数据驱动引导、遮罩、锚点、触发与持久化 |
|
||||
| `com.cneicy.shrink-context-core` | 0.1.0 | 可逆效应、coeffect、fiber、声明式 loader 与诊断 |
|
||||
| `com.cneicy.shrink-app-core` | 0.1.1 | App 设置、服务门面、ClassicHost 兼容面与宿主协议 |
|
||||
| `com.cneicy.shrink-app-starter-basic` | 0.1.2 | 默认 Context 组合根、配置资产和示例入口 |
|
||||
| `com.cneicy.shrink-context-app-adapter` | 0.1.2 | ContextLoader 宿主、Profile/JSON、诊断与基准 |
|
||||
| `com.cneicy.shrink-app-core` | 0.1.2 | App 设置、服务门面、ClassicHost 兼容面与宿主协议 |
|
||||
| `com.cneicy.shrink-app-starter-basic` | 0.2.0 | 默认 Context 组合根、配置资产和示例入口 |
|
||||
| `com.cneicy.shrink-context-app-adapter` | 0.1.3 | ContextLoader 宿主、Profile/JSON、诊断与基准 |
|
||||
| `com.cneicy.shrink-context-eventbus-adapter` | 0.1.0 | EventBus 生成绑定的可逆 EffectAttach 包装 |
|
||||
| `com.cneicy.shrink-datasaver-integration-eventbus` | 2.1.0 | DataSaver 事件桥 |
|
||||
| `com.cneicy.shrink-datasaver-integration-app` | 0.1.0 | DataSaver App installer/原生 Context 组件 |
|
||||
| `com.cneicy.shrink-datasaver-integration-eventbus` | 2.1.1 | DataSaver 事件桥 |
|
||||
| `com.cneicy.shrink-datasaver-integration-app` | 0.1.1 | DataSaver App installer/原生 Context 组件 |
|
||||
| `com.cneicy.shrink-command-integration-eventbus` | 0.1.1 | 命令请求与生命周期事件桥 |
|
||||
| `com.cneicy.shrink-command-integration-network` | 0.1.0 | `command/execute` RPC 桥 |
|
||||
| `com.cneicy.shrink-command-integration-app` | 0.1.0 | Command App installer/原生 Context 组件 |
|
||||
| `com.cneicy.shrink-network-integration-eventbus` | 0.1.1 | 网络事件广播、裁决结果与 delta 去重 |
|
||||
| `com.cneicy.shrink-network-integration-app` | 0.1.0 | Network App installer/原生 Context 组件 |
|
||||
| `com.cneicy.shrink-command-integration-network` | 0.1.1 | `command/execute` RPC 桥 |
|
||||
| `com.cneicy.shrink-command-integration-app` | 0.1.1 | Command App installer/原生 Context 组件 |
|
||||
| `com.cneicy.shrink-network-integration-eventbus` | 0.1.2 | 网络事件广播、裁决结果与 delta 去重 |
|
||||
| `com.cneicy.shrink-network-integration-app` | 0.1.1 | Network App installer/原生 Context 组件 |
|
||||
| `com.cneicy.shrink-shared-codegen` | 0.1.0 | App、Command、Network 共用的 Editor-only IL 后处理注册表生成器 |
|
||||
| `com.cneicy.shrink-installer` | 0.1.7 | 安全合并公开 registry、显示诊断并固定版本安装 Starter 或选定模块的 Editor 引导包 |
|
||||
| `com.cneicy.shrink-installer` | 0.2.0 | UI Toolkit 包管理器:显示真实安装状态,按 Context 分层提供固定版本单包与推荐组合 |
|
||||
|
||||
`ShrinkShared.CodeGen` 不反向引用业务 asmdef,只按程序集名与类型全名读取 Cecil 元数据,因此业务包可以依赖它而不形成包循环。
|
||||
|
||||
@@ -157,7 +157,7 @@ Cordis 迁移的阶段 0 至阶段 5 已进入当前架构,不再是待办计
|
||||
|
||||
`ShrinkAppLoaderBootstrapper.DefaultComposition` 接入 Basic Starter 的七个声明式模块:Command、DataSaver、Network 三个原生组件,Command-Network 集成,以及 Command/DataSaver/Network 的 EventBus 集成。
|
||||
|
||||
`ShrinkAppCompositionProfile` 用 ScriptableObject/JSON 决定条目启用、显式排除、isolate 与 intercept;组件工厂仍由代码注册,配置文件不能按任意类型名反射实例化对象。`ShrinkSDK/Cordis/诊断与组合` 显示 fiber、等待依赖、provider target、事务和外部程序集 revision。
|
||||
`ShrinkAppCompositionProfile` 用 ScriptableObject/JSON 决定条目启用、显式排除、isolate 与 intercept;组件工厂仍由代码注册,配置文件不能按任意类型名反射实例化对象。`ShrinkSDK/上下文/诊断与组合` 显示 fiber、等待依赖、provider target、事务和外部程序集 revision。
|
||||
|
||||
`ShrinkApp.IsRunning` 与 `ShrinkApp.Services` 已接回 LoaderHost。原生组件停用时使用 `TryUnregister(instance)` 撤回对应门面。旧 `IShrinkAppModuleInstaller` 适配仍可用于 ClassicHost,但默认 ContextLoader 不再通过它启动核心模块。
|
||||
|
||||
@@ -206,8 +206,8 @@ Mono 中已加载程序集不能真正卸载。系统只回滚组件实例与效
|
||||
|
||||
菜单入口:
|
||||
|
||||
- `ShrinkSDK/Network/生成完整独立服务器工程`
|
||||
- `ShrinkSDK/Network/刷新独立服务器 Generated 合同`
|
||||
- `ShrinkSDK/网络/生成完整独立服务器工程`
|
||||
- `ShrinkSDK/网络/刷新独立服务器生成合同`
|
||||
|
||||
完整生成分两步:
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@ git submodule update --init --recursive
|
||||
}
|
||||
```
|
||||
|
||||
然后按精确版本添加包,例如 `com.cneicy.shrink-app-starter-basic: 0.1.2`。Git 备用安装同样必须固定标签,例如:
|
||||
然后按精确版本添加包,例如 `com.cneicy.shrink-app-starter-basic: 0.2.0`。Git 备用安装同样必须固定标签,例如:
|
||||
|
||||
```text
|
||||
https://git.crash.work/ShrinkSDK/ShrinkEventBus.git#v2.0.0
|
||||
@@ -37,9 +37,9 @@ https://git.crash.work/ShrinkSDK/ShrinkEventBus.git#v2.0.0
|
||||
也可先通过固定标签安装 Editor 引导包:
|
||||
|
||||
```text
|
||||
https://git.crash.work/ShrinkSDK/Installer.git#v0.1.7
|
||||
https://git.crash.work/ShrinkSDK/Installer.git#v0.2.0
|
||||
```
|
||||
|
||||
随后在 Unity 打开 `ShrinkSDK/Packages`。安装器只合并 `com.cneicy` registry,并将内置目录中的固定版本及其必要的固定 UniTask revision 写入 manifest;它不写认证信息,也不复制模板到 `Assets`。
|
||||
随后在 Unity 打开 `ShrinkSDK/包管理`。UI Toolkit 窗口会显示直接与间接依赖的真实安装状态,并按 Context 组合基础、应用宿主、独立功能和模块集成组织固定版本包与推荐组合。安装器只合并 `com.cneicy` registry 和依赖数据,不写认证信息,也不复制模板到 `Assets`。
|
||||
|
||||
发布、子模块迁移和独立开发宿主生成规则位于 [Tools/RepositoryMigration/Initialize-ShrinkSdkPackageRepositories.ps1](Tools/RepositoryMigration/Initialize-ShrinkSdkPackageRepositories.ps1)。架构约束与跨包验证要求见 [DESIGN.md](DESIGN.md)。
|
||||
|
||||
@@ -40,17 +40,17 @@ $PackageDirectories = @(
|
||||
|
||||
$DevelopmentHostOnlyDependencies = @{
|
||||
'com.cneicy.shrink-command-integration-network' = [ordered]@{
|
||||
'com.cneicy.shrink-command-integration-app' = '0.1.0'
|
||||
'com.cneicy.shrink-datasaver-integration-app' = '0.1.0'
|
||||
'com.cneicy.shrink-network-integration-app' = '0.1.0'
|
||||
'com.cneicy.shrink-command-integration-app' = '0.1.1'
|
||||
'com.cneicy.shrink-datasaver-integration-app' = '0.1.1'
|
||||
'com.cneicy.shrink-network-integration-app' = '0.1.1'
|
||||
}
|
||||
'com.cneicy.shrink-context-app-adapter' = [ordered]@{
|
||||
'com.cneicy.shrink-app-starter-basic' = '0.1.2'
|
||||
'com.cneicy.shrink-app-starter-basic' = '0.2.0'
|
||||
'com.cneicy.shrink-command' = '0.2.0'
|
||||
'com.cneicy.shrink-command-integration-app' = '0.1.0'
|
||||
'com.cneicy.shrink-datasaver-integration-app' = '0.1.0'
|
||||
'com.cneicy.shrink-network' = '0.2.0'
|
||||
'com.cneicy.shrink-network-integration-app' = '0.1.0'
|
||||
'com.cneicy.shrink-command-integration-app' = '0.1.1'
|
||||
'com.cneicy.shrink-datasaver-integration-app' = '0.1.1'
|
||||
'com.cneicy.shrink-network' = '0.2.1'
|
||||
'com.cneicy.shrink-network-integration-app' = '0.1.1'
|
||||
}
|
||||
'com.cneicy.shrink-eventbus-entities' = [ordered]@{
|
||||
'com.unity.modules.physics' = '1.0.0'
|
||||
|
||||
@@ -46,11 +46,11 @@ public static class PublishedUpmConsumerValidator
|
||||
{
|
||||
Run(() =>
|
||||
{
|
||||
VerifyPackage("com.cneicy.shrink-app-starter-basic", "0.1.2", "ShrinkApp.Starter.Basic.Runtime");
|
||||
VerifyPackage("com.cneicy.shrink-context-app-adapter", "0.1.2", "ShrinkContext.AppAdapter.Runtime");
|
||||
VerifyPackage("com.cneicy.shrink-tutorial", "0.1.1", "ShrinkTutorial.Runtime");
|
||||
RequireManifestValue("com.cneicy.shrink-app-starter-basic", "0.1.2");
|
||||
RequireManifestValue("com.cneicy.shrink-tutorial", "0.1.1");
|
||||
VerifyPackage("com.cneicy.shrink-app-starter-basic", "0.2.0", "ShrinkApp.Starter.Basic.Runtime");
|
||||
VerifyPackage("com.cneicy.shrink-context-app-adapter", "0.1.3", "ShrinkContext.AppAdapter.Runtime");
|
||||
VerifyPackage("com.cneicy.shrink-tutorial", "0.1.2", "ShrinkTutorial.Runtime");
|
||||
RequireManifestValue("com.cneicy.shrink-app-starter-basic", "0.2.0");
|
||||
RequireManifestValue("com.cneicy.shrink-tutorial", "0.1.2");
|
||||
RequireManifestValue("com.cysharp.unitask", UniTaskUrl);
|
||||
RequireRegistry("com.cneicy", RegistryUrl);
|
||||
});
|
||||
@@ -72,10 +72,10 @@ public static class PublishedUpmConsumerValidator
|
||||
{
|
||||
try
|
||||
{
|
||||
VerifyPackage("com.cneicy.shrink-installer", "0.1.7", "ShrinkInstaller.Editor");
|
||||
VerifyPackage("com.cneicy.shrink-installer", "0.2.0", "ShrinkInstaller.Editor");
|
||||
RequireManifestValue(
|
||||
"com.cneicy.shrink-installer",
|
||||
"https://git.crash.work/ShrinkSDK/Installer.git#v0.1.7");
|
||||
"https://git.crash.work/ShrinkSDK/Installer.git#v0.2.0");
|
||||
|
||||
var catalog = FindType("ShrinkSDK.Installer.ShrinkSdkPackageCatalog");
|
||||
var starter = catalog.GetField("StarterBasic", BindingFlags.Static | BindingFlags.NonPublic)
|
||||
@@ -85,9 +85,11 @@ public static class PublishedUpmConsumerValidator
|
||||
"EnsurePackageInstallation",
|
||||
BindingFlags.Static | BindingFlags.NonPublic)
|
||||
?? throw new InvalidOperationException("Installer manifest installation method was not found.");
|
||||
install.Invoke(null, new[] { starter });
|
||||
var roots = Array.CreateInstance(starter.GetType(), 1);
|
||||
roots.SetValue(starter, 0);
|
||||
install.Invoke(null, new object[] { roots });
|
||||
|
||||
RequireManifestValue("com.cneicy.shrink-app-starter-basic", "0.1.2");
|
||||
RequireManifestValue("com.cneicy.shrink-app-starter-basic", "0.2.0");
|
||||
RequireManifestValue("com.cysharp.unitask", UniTaskUrl);
|
||||
RequireRegistry("com.cneicy", RegistryUrl);
|
||||
RequireRegistry("com.example", "https://registry.npmjs.org/");
|
||||
@@ -103,10 +105,10 @@ public static class PublishedUpmConsumerValidator
|
||||
{
|
||||
Run(() =>
|
||||
{
|
||||
VerifyPackage("com.cneicy.shrink-installer", "0.1.7", "ShrinkInstaller.Editor");
|
||||
VerifyPackage("com.cneicy.shrink-app-starter-basic", "0.1.2", "ShrinkApp.Starter.Basic.Runtime");
|
||||
VerifyPackage("com.cneicy.shrink-context-app-adapter", "0.1.2", "ShrinkContext.AppAdapter.Runtime");
|
||||
RequireManifestValue("com.cneicy.shrink-app-starter-basic", "0.1.2");
|
||||
VerifyPackage("com.cneicy.shrink-installer", "0.2.0", "ShrinkInstaller.Editor");
|
||||
VerifyPackage("com.cneicy.shrink-app-starter-basic", "0.2.0", "ShrinkApp.Starter.Basic.Runtime");
|
||||
VerifyPackage("com.cneicy.shrink-context-app-adapter", "0.1.3", "ShrinkContext.AppAdapter.Runtime");
|
||||
RequireManifestValue("com.cneicy.shrink-app-starter-basic", "0.2.0");
|
||||
RequireManifestValue("com.cysharp.unitask", UniTaskUrl);
|
||||
RequireRegistry("com.cneicy", RegistryUrl);
|
||||
RequireRegistry("com.example", "https://registry.npmjs.org/");
|
||||
@@ -263,8 +265,8 @@ write_manifest "$registry_project" '{
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"com.cneicy.shrink-app-starter-basic": "0.1.2",
|
||||
"com.cneicy.shrink-tutorial": "0.1.1",
|
||||
"com.cneicy.shrink-app-starter-basic": "0.2.0",
|
||||
"com.cneicy.shrink-tutorial": "0.1.2",
|
||||
"com.cysharp.unitask": "https://github.com/Cysharp/UniTask.git?path=src/UniTask/Assets/Plugins/UniTask#7c0f199fe0d3fc528024488ccd671e6c7b27745b",
|
||||
"com.unity.nuget.newtonsoft-json": "3.2.2"
|
||||
}
|
||||
@@ -291,7 +293,7 @@ write_manifest "$installer_project" '{
|
||||
}
|
||||
],
|
||||
"dependencies": {
|
||||
"com.cneicy.shrink-installer": "https://git.crash.work/ShrinkSDK/Installer.git#v0.1.7",
|
||||
"com.cneicy.shrink-installer": "https://git.crash.work/ShrinkSDK/Installer.git#v0.2.0",
|
||||
"com.unity.nuget.newtonsoft-json": "3.2.2",
|
||||
"com.unity.test-framework": "1.1.33"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user