Skip to content

bbsmc/minotaur

 
 

Repository files navigation

一个用于直接与 BBSMC 交互的 Gradle 插件,支持上传构建产物和同步项目描述。

本项目 fork 自 Modrinth 的 Minotaur,适配 BBSMC 平台使用。

使用指南

要使用此插件,您必须将其添加到 Gradle 构建脚本中。之后,您可以使用 bbsmc 任务将版本上传到 BBSMC。

Minotaur 需要具有以下权限范围的个人访问令牌:

  • CREATE_VERSION(如果运行 bbsmc 任务)
  • PROJECT_WRITE(如果运行 bbsmcSyncBody 任务)

您可以在 BBSMC 账户设置页面 生成令牌。如果您提供的令牌没有所有必需的权限范围,您将收到 Invalid Authentication Credentials 错误。

Groovy

Groovy DSL
// build.gradle
plugins {
    id "net.bbsmc.minotaur" version "2.+"
    // 使用 2.+ 最安全,可以获得最新功能和
    // 错误修复,而无需担心破坏性更改。
}

// settings.gradle
// 这可能已经存在。
pluginManagement {
    repositories {
        gradlePluginPortal()
    }
}

下一步是配置上传到 BBSMC 的任务。这允许您配置上传并控制何时以及如何上传版本。

// build.gradle
bbsmc {
    token = System.getenv("BBSMC_TOKEN") // 记得设置 BBSMC_TOKEN 环境变量,否则会失败 - 确保它保持私密!
    projectId = "my-project" // 可以是项目 ID 或 slug。两者都可以!
    versionNumber = "1.0.0" // 您不需要手动设置。如果 BBSMC 已有此版本会失败
    versionType = "release" // 这是默认值 -- 也可以是 `beta` 或 `alpha`
    uploadFile = jar // 使用 Loom 时,必须设置为 `remapJar` 而不是 `jar`!
    gameVersions = ["1.18", "1.18.1"] // 必须是数组,即使只有一个版本
    loaders = ["fabric"] // 也必须是数组 - 如果您使用 Loom 或 ForgeGradle 则无需指定
    dependencies { // 用于创建依赖的特殊 DSL
        // scope.type
        // scope 可以是 `required`、`optional`、`incompatible` 或 `embedded`
        // type 可以是 `project` 或 `version`
        required.project "fabric-api" // 创建对 Fabric API 的必需依赖
        optional.version "sodium", "mc1.19.3-0.4.8" // 创建对特定版本 Sodium 的可选依赖
    }
}

Kotlin

Kotlin DSL
// build.gradle.kts
plugins {
    id("net.bbsmc.minotaur") version "2.+"
    // 使用 2.+ 最安全,可以获得最新功能和
    // 错误修复,而无需担心破坏性更改。
}


// settings.gradle.kts
// 这可能已经存在。
pluginManagement {
    repositories {
        gradlePluginPortal()
    }
}

下一步是配置上传到 BBSMC 的任务。这允许您配置上传并控制何时以及如何上传版本。

// build.gradle.kts
bbsmc {
    token.set(System.getenv("BBSMC_TOKEN")) // 记得设置 BBSMC_TOKEN 环境变量,否则会失败 - 确保它保持私密!
    projectId.set("my-project") // 可以是项目 ID 或 slug。两者都可以!
    versionNumber.set("1.0.0") // 您不需要手动设置。如果 BBSMC 已有此版本会失败
    versionType.set("release") // 这是默认值 -- 也可以是 `beta` 或 `alpha`
    uploadFile.set(tasks.jar) // 使用 Loom 时,必须设置为 `remapJar` 而不是 `jar`!
    gameVersions.addAll("1.18", "1.18.1") // 必须是数组,即使只有一个版本
    loaders.add("fabric") // 也必须是数组 - 如果您使用 Loom 或 ForgeGradle 则无需指定
    dependencies { // 用于创建依赖的特殊 DSL
        // scope.type
        // scope 可以是 `required`、`optional`、`incompatible` 或 `embedded`
        // type 可以是 `project` 或 `version`
        required.project("fabric-api") // 创建对 Fabric API 的必需依赖
        optional.version("sodium", "mc1.19.3-0.4.8") // 创建对特定版本 Sodium 的可选依赖
    }
}

同步项目描述

结合 bbsmc {...} 块中的 syncBodyFrom 属性,您可以设置同步,例如将项目的 README.md 与 BBSMC 上的项目描述同步。

例如:

// build.gradle
bbsmc {
    // ...
    syncBodyFrom = rootProject.file("README.md").text
}

这将把项目根目录中 README.md 文件的内容同步到您的项目。

如果您有一些内容想保留在 README.md 中但不想出现在 BBSMC 项目描述中,您也可以在文件中添加注释。<!-- bbsmc_exclude.start --><!-- bbsmc_exclude.end --> 之间的任何内容都将被排除。

这不会在 bbsmc 任务中发生;您必须单独使用 bbsmcSyncBody 任务来完成此操作。您可以通过使 bbsmcSyncBody 任务依赖于 bbsmc 来确保每次发布时都同步项目描述:

tasks.bbsmc.dependsOn(tasks.bbsmcSyncBody)

请谨慎使用此任务!一旦描述被更改,您无法恢复。您可以使用 debugMode 来确保要上传的内容是您想要的。

可用属性

以下属性可以在 bbsmc {...} 块中设置。

属性 必需 描述 默认值
apiURL 用于上传文件的 API 端点 URL。 https://api.bbsmc.net/v2
token BBSMC API 的有效 API 令牌。 BBSMC_TOKEN 环境变量
projectId 要上传到的项目 ID。
versionNumber 版本的版本号。 version 声明
versionName 版本的名称。 versionNumber
changelog 文件的更新日志。允许 Markdown 格式。 No changelog was specified.
uploadFile 要上传的文件。可以是实际文件或文件任务。
additionalFiles 要上传到版本的附加文件数组。
versionType 版本的稳定性级别。可以是 releasebetaalpha release
gameVersions 此版本支持的游戏版本数组。 根据您使用的 Gradle 插件自动检测
loaders 此版本支持的模组加载器数组。 根据您使用的 Gradle 插件自动检测
dependencies 上传版本的依赖项。
failSilently 当为 true 时,上传失败不会导致构建失败。 false
detectLoaders 是否自动检测模组加载器。 true
autoAddDependsOn 是否自动从上传文件添加任务依赖。 true
debugMode 不实际上传版本,而是打印要上传的数据。 false
syncBodyFrom bbsmcSyncBody 任务中用于同步描述的文本。

注意: 在大多数情况下,gameVersionsloaders 属性可以自动检测。这在使用 ForgeGradle 和 Fabric Loom 的环境中完成。

附加属性

以下属性只能通过 tasks.bbsmc.<property> 访问。

名称 描述
uploadInfo 来自 API 服务器的响应。仅在上传成功完成后存在。
errorInfo 来自 API 服务器的响应。仅在上传失败后存在。
wasUploadSuccessful() 检查上传是否成功。应在访问 uploadInfo 或 errorInfo 之前使用。

上传信息

属性 类型 描述
id String 上传版本的 ID。
projectId String 此版本所属模组的 ID。
authorId String 发布此版本的作者 ID。
featured Boolean 版本是否被推荐。
name String 此版本的名称。
versionNumber String 版本号。理想情况下应遵循语义化版本。
changelog String 此模组版本的更新日志。
datePublished Date 此版本发布的日期。
downloads Integer 此特定版本的下载次数。
versionType VersionType 发布类型 - alphabetarelease
files List 此版本可供下载的文件列表。
gameVersions List 此模组版本支持的 Minecraft 版本列表。
loaders List 此版本支持的加载器。
dependency Dependency 此版本依赖的模组列表。

错误信息

属性 类型 描述
error String 发生的错误类型,例如授权错误。
description String 来自 API 的错误消息。

开发信息

本项目 fork 自 Modrinth/minotaur,适配 BBSMC 平台。

About

Gradle plugin for deploying build artifacts to Modrinth.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 100.0%