|
2a607f1129
|
fix(extension): 修复 ExtensionClassLoader 无法过滤非扩展包内 BotExtensionFactory 对象的问题.
按照 ServiceLoader 的规范, 文件应该是在 META-INF/services/{class} 这里的, 但当时忘记这个设计了, 导致直接判断 name == class, 然后失效.
修复好了.
|
2022-08-15 02:00:34 +08:00 |
|
|
255a02c93c
|
refactor(config): 重构 AppPaths 的构造方法, 应对将来 Kotlin 更新中的特性.
先前的方法是利用了初始化与调用的顺序, 来实现的 Supplier 互补(虽然在代码中, 确实存在未初始化调用的情况, 但实际运行的时候, 会先初始化, 再调用 Supplier),
但是未来 Kotlin 的更新中,编译器会把这个操作视为未初始化错误, 所以在这次改动中修复掉这个 bug 操作.
|
2022-08-15 01:38:08 +08:00 |
|
|
dce28be9c7
|
fix(logging): 修复日志滚动文件路径错误.
由于在滚动格式中没有使用 DATA_LOGS 占位符, 导致在日志滚动时会把日志归档文件保存在运行目录下, 而不是指定的数据目录,
该改动已修复该问题.
|
2022-08-13 13:19:09 +08:00 |
|
|
673c6d8392
|
build: 为项目支持可重现构建.
为确保项目的使用者(无论是开发者, 还是最终用户)可以完全重现构建, 确保安全, 故调整相关配置, 以实现"可重现构建".
有关可重现构建, 可以看这个: https://reproducible-builds.org/
|
2022-08-06 03:23:35 +08:00 |
|
|
d586ca378e
|
fix(launch): 修复缺省的 Maven 中央库不遵循代理规则的问题.
这个属于漏网之鱼, 已修复.
|
2022-08-05 00:23:13 +08:00 |
|
|
b6013e2fbe
|
refactor(extension): 将构件下载请求跟构件解析请求对齐.
防止在构件处理过程中因仓库原因出现问题, 因此统一两个请求所使用的仓库列表.
|
2022-07-16 20:55:24 +08:00 |
|
|
f79a4e4ff3
|
refactor(extension): 在 MavenRepositoryExtensionFinder 增加一个扩展包信息日志.
当初写的时候没留意这个问题, 结果最近给坑了, 所以补个日志, 打印出 Maven 搜索器所解析出来的构件信息.
|
2022-07-16 20:51:06 +08:00 |
|
|
93b9c6b727
|
refactor(launch): 统一代理的使用.
之前的版本中, 如果未指定 Maven 仓库的独立代理配置, 同时 Bot 拥有独立代理配置的情况下, Aether 将不会使用 Bot
的独立代理配置, 这样弄比较乱, 因此统一代理配置的使用顺序:
- 如果配置中包括了代理配置, 则优先使用独立代理配置;
- 如果不包括独立代理配置, 则使用关联 Bot 的独立代理配置;
- 如果关联 Bot 没有独立代理配置, 则使用 AppConfig 中的全局配置(如无配置则直连访问).
|
2022-07-16 20:46:15 +08:00 |
|
|
a8a0a9576f
|
build(dependencies): 更新 TelegramBots 依赖项的版本 (6.0.1 -> 6.1.0)
更新版本将有利于开发者和用户使用新的功能.
|
2022-07-16 20:30:22 +08:00 |
|
|
93685e9440
|
test(config): 优化单元测试.
将 AppPaths 的单元测试也覆盖了, 直接方便了.
|
2022-07-12 01:29:19 +08:00 |
|
|
92b7e84b3a
|
test(config): 补充相关的单元测试.
经检查, 已确定完全覆盖代码, 为完成单元测试的编写, 稍微改了一下 AppPaths 的代码, 不会有影响的 :P
|
2022-07-12 01:20:53 +08:00 |
|
|
8c4e48e3eb
|
refactor(launch): 更改初始化配置中, 退出进程的时机.
为了能在单元测试中检查 initialFiles 是否正常, 故将 exitProcess 移到 main 方法中, 方便进行测试.
|
2022-07-12 00:27:18 +08:00 |
|
|
441991b705
|
docs(extension): 补充部分扩展组件的 KDoc.
补充部分方法的文档, 不过文档内容嘛...有待加强.
|
2022-07-09 01:20:57 +08:00 |
|
|
51d036c4c6
|
feat(launch): 延后 BotConfig 的反序列化时机.
通过将 BotConfig 的反序列化时机延后到启动机器人的时候, 可以避免因某个机器人配置错误导致所有机器人都无法启动的问题.
注意, 语法错误还是会在启动时报错, 只是说部分序列化器会检查字段值是否有误, 通过延后反序列化来防止全反序列化的时候一个配置炸了影响全部而已.
|
2022-07-04 16:40:17 +08:00 |
|
|
c144755913
|
feat(config): 增加 BotAccountSerializer, 主要用于检查字段值.
增加 BotAccount 的序列化器, 便于检查有关字段的值是否有效.
|
2022-07-03 02:32:37 +08:00 |
|
|
9b7fc30512
|
fix(config): 修复因使用了错误的 Gson 对象而导致的配置初始化警告.
导致的原因是在初始化 app.json 时错误的使用了 botConfigGson, 而 botConfigGson 未配置用于 MetricsServer 的 UsernameAuthenticator 序列化器, 导致在初始化配置文件中序列化 AppConfig 时, Gson 会反射调用 BasicAuthenticator, 导致被 Java 模块系统拦截并报错, 现已修复该问题.
|
2022-07-02 22:01:05 +08:00 |
|
|
27dc26160d
|
refactor(config): 对配置文件的 AppPath 对象更名.
先前为确保后续可以增加指定配置文件路径的功能, 在命名上标记的 DEFAULT 在现在已经不符合实际意义了, 故将 DEFAULT 前缀移除.
|
2022-06-30 00:15:07 +08:00 |
|
|
ae411ce829
|
refactor(metrics): 调整 MetricsHttpServer 注册关闭钩子的时机.
将关闭钩子的时机调整到 main 方法中, 可以减少多余的钩子注册(比如测试时无需注册钩子, 却还是注册了).
|
2022-06-29 03:06:15 +08:00 |
|
|
1afe0f07a8
|
perf(extension): 优化 printExtensionFileConflictError 日志输出.
Kotlin-logging 在日志输出方法中做了检查, 如果级别未开启则不会调用方法获取日志内容,
故将内容构造部分移入 error 代码块以避免无意义的生成日志内容.
|
2022-06-29 03:03:16 +08:00 |
|
|
099c452fe7
|
feat(meta): 新增 meta 模块.
将与配置相关的内容迁移到 scalabot-meta 模块.
其他项目可以使用 meta 模块来生成 ScalaBot 的配置文件, 通过配置文件管理 ScalaBot 的运行.
BREAKING CHANGE: 与配置有关的类迁移到了 scalabot-meta 模块.
目前仅所有配置类 (以 `Config` 结尾的 Class) 和相应的序列化类 (以 `Serializer` 结尾的) 都迁移到了 meta 模块, 但其工具方法则作为扩展函数保留在 app 模块中.
这么做的好处是为了方便其他应用 (例如 ScalaBot 外部管理程序) 根据需要生成配置文件.
scalabot-meta 将会作为依赖项发布, 可根据需要获取 ScalaBot-meta 生成 ScalaBot 的配置.
+ 此次改动普通用户无需迁移。
|
2022-06-27 19:24:52 +08:00 |
|
|
581eeba20b
|
feat(config): 新增 HTTPS 代理类型, 增加 Maven 对 HTTPS 代理的支持.
为 ProxyType 增加 HTTPS 类型, 同时为 Aether 增加 Https 代理支持, 方便用户使用现有的公开代理下载依赖包.
|
2022-06-25 23:00:51 +08:00 |
|
|
896305f4a3
|
style: 改一下代码格式.
把“宝塔”改掉, 看起来太难受了.
|
2022-06-25 21:17:27 +08:00 |
|
|
4a160ad42b
|
refactor(config): 更改 BotConfig.enabled 的默认值为 false.
更改 enabled 的默认值, 以防止意外启动 Bot.
同时让 bot.json 在初始化时设为 true, 方便用户改完就能启动.
|
2022-06-24 19:10:39 +08:00 |
|
|
a1790a0716
|
perf(config): 优化配置使用过程中的判断.
通过调整部分属性的 null-safety 特性, 移除了部分 non-null 判断, 略微(真的很略微)提高了性能(虽然仅限于启动).
|
2022-06-24 19:08:41 +08:00 |
|
|
8a33448b19
|
refactor(config): 调整方法访问权.
迁移前, createDefaultRepositoryId 方法和 checkRepositoryLayout 方法已经是 Private 了,
迁移中出现差错导致变更为 internal, 现已修复.
Pull Request #8
|
2022-06-23 03:52:04 +08:00 |
|
|
45244c1fb1
|
build: 将子项目间共用的 Plugin 声明在根项目.
根据 Gradle 建议[1], 可以将子项目中都有使用的插件, 更改到根项目中, 这么做可以让我们仅更新根项目的插件版本, 让 Gradle 自动同步子项目的插件版本.
---------------------------------
[1]: https://docs.gradle.org/current/userguide/plugins.html#sec:subprojects_plugins_dsl
|
2022-06-22 15:02:30 +08:00 |
|
|
c64f5e739b
|
refactor(database): 为旧版数据库适配器添加 @Deprecated 注解.
添加注解以表明该适配器已弃用, 但仍然保留适配器以保证旧版数据库正常使用(并迁移到新版数据库).
|
2022-06-21 01:43:54 +08:00 |
|
|
289b9678f2
|
refactor(config): 将与配置相关的内容迁移到 scalabot-meta 模块.
通过将配置迁移到单独的模块, 可以方便使用其他程序扩展 ScaleBot, 而不仅仅是让 ScaleBot 成为扩展的平台.
BREAKING CHANGE: 与配置有关的 Class 移动到了 scalabot-meta 模块.
目前仅所有配置类(以 `Config` 结尾的 Class)和相应的序列化类(以 `Serializer` 结尾的)都迁移到了 meta 模块, 但其工具方法则作为扩展函数保留在 app 模块中.
这么做的好处是为了方便其他应用(例如 ScalaBot 外部管理程序)根据需要生成配置文件.
scalabot-meta 将会作为依赖项发布, 可根据需要获取 ScalaBot-meta 生成 ScalaBot 的配置.
此次改动普通用户无需迁移.
|
2022-06-20 20:55:04 +08:00 |
|
|
dbc4232dd6
|
test(config): 调整 BotAccount 的单元测试代码.
调整代码有利于后续更新测试用例时减少出错的可能性(虽然基本不换), 修复一个词汇错误.
|
2022-06-20 16:01:35 +08:00 |
|
|
c662b970f0
|
test(utils): 补充 deepListFiles 的单元测试.
补充单元测试项, 目前已实现 Utils 单元测试全覆盖(Logger Class 不算).
|
2022-06-19 02:47:26 +08:00 |
|
|
f148c21390
|
fix(utils): 修复 deepListFiles 错误地返回了 null 的情况.
预期中, deepListFiles 返回 null 与否是与 listFiles 相同的, 当 File 无法访问, 或者不是一个目录的情况下才会返回 null,
但由于语法疏漏, 导致可能出现即使 listFiles 返回 null 时 deepListFiles 也不返回 null 的情况.
现已修复该问题.
|
2022-06-19 02:07:24 +08:00 |
|
|
c41aac735c
|
build: 更新依赖项版本.
已确定无兼容性问题.
|
2022-06-18 09:57:03 +08:00 |
|
|
ae64de00e7
|
test(config): 完善 AppPaths 类的单元测试.
补充分支测试内容.
|
2022-06-18 09:53:45 +08:00 |
|
|
215a4670db
|
feat(metrics): 运行指标服务端支持设置 HTTP 认证.
支持对运行指标服务端设置 HTTP 认证, 以防止运行指标被非法获取.
|
2022-06-18 09:20:46 +08:00 |
|
|
c5fe96c02d
|
test: 新增对 BotAccount.id 字段的单元测试.
该测试有助于确保 id 能正常地从 Token 中获取.
|
2022-06-15 02:22:58 +08:00 |
|
|
508f14f271
|
test: 新增对 Artifact.equalsArtifact 的完整单元测试.
该测试已确保完全覆盖(100%).
|
2022-06-15 02:19:14 +08:00 |
|
|
35c77f6093
|
perf: 优化 Artifact 的判断条件.
根据相关文档[1], baseVersion 和 Version 不需要同时判断, 只需要单独判断 Version 即可确认版本是否符合.
另外, 如果 Version 不符, 那么 isSnapshot 就没有必要判断(不可能出现 Version 相同的情况下, 一个是快照版, 一个是发布版的情况), 故移除对 baseVersion 和 isSnapshot 的检查.
另外, Properties 属于 Aether 内部的非持久化信息交换方式, 不是必须纳入检查的项目, 故新增参数用于选择是否检查 Properties 是否相同.
------------------------------------
[1]: https://community.sonatype.com/t/what-is-the-differences-between-maven-baseversion-and-maven-version/2937
|
2022-06-15 02:18:01 +08:00 |
|
|
7e48f4bf0b
|
build(test): 增加 Kover 测试覆盖率插件, 升级 Mockk 依赖项版本(1.12.3 -> 1.12.4).
Kover 是 Kotlin 官方为弥补 Kotlin 不能使用 Jacoco 所推出的替代品, 目前使用上没有问题.
顺便更新一下 Mockk 版本.
|
2022-06-15 01:20:35 +08:00 |
|
|
9c05726849
|
refactor(config): 改进配置读取错误时输出的错误信息.
改进后的信息有助于让用户了解到底发生了什么, 可帮助用户找到出错的配置文件并修复错误的配置格式.
|
2022-06-11 16:19:08 +08:00 |
|
|
b5c85e213b
|
test: 完善序列化器的单元测试.
目前经测试, 已完善到 100% 覆盖率.
|
2022-05-19 23:54:27 +08:00 |
|
|
746221a085
|
feat(config): 简化凭证配置过程.
由于先前的配置过程较为麻烦, 故将凭证配置简化为只有用户名和密码.
|
2022-05-19 23:53:25 +08:00 |
|
|
24f34aa27f
|
refactor: 调整 checkJsonKey 的所在类, 以便于编写测试用例.
通过调整所在类, 可更好的在单元测试中获取方法对象, 进行测试调用.
|
2022-05-19 18:20:46 +08:00 |
|
|
31366575a9
|
test: 补充部分序列化单元测试.
补充一部分测试内容.
|
2022-05-19 17:55:36 +08:00 |
|
|
37c3275bb6
|
fix(config): 修复因 Maven 仓库配置中未包括 layout 属性导致解析错误的问题.
当 Maven 仓库采用 JsonObject 形式配置, 且未配置 "layout" 属性时, 将会引发 NPE,
该改动已修复该问题.
|
2022-05-19 16:54:47 +08:00 |
|
|
72e26bd677
|
fix(config): 更改 MavenRepositoryConfig.proxy 的默认值.
防止因默认值导致出现错误的代理配置, 故将默认值更改为无代理(null).
|
2022-05-19 16:43:25 +08:00 |
|
|
9aab3c2a24
|
feat(config): 将代理类型为 null 的情况视为不使用代理.
为简化用户配置难度, 关闭代理可选择将 type 设为 null, 来表示不需要使用代理.
|
2022-05-19 15:46:18 +08:00 |
|
|
cac055bb08
|
test: 完善 AppPaths 中对 BOT_DATA_PATH 环境变量的测试流程.
通过使用 System-Lambda 库, 补充 AppPaths 中对环境变量使用的测试.
|
2022-05-19 15:01:16 +08:00 |
|
|
5e18149640
|
feat(config): 支持限定 Maven 仓库构件类型.
增加 Maven 仓库配置, 支持限定仓库可获取的构件发布类型(发布或快照).
此改动有利于用户增加仓库约束, 防止意外使用错误的扩展包版本.
|
2022-05-18 15:57:49 +08:00 |
|
|
0a5313e94a
|
fix(extension): 修复 Maven 仓库扩展搜索器无法从第三方仓库获取扩展的问题.
由于在加载仓库配置时, 未设置仓库 Id, 导致 Aether 将仓库排除, 进而导致无法通过第三方仓库获取插件.
改动后, 将在未配置仓库 Id 的情况下, 为其生成一个 Id 名称.
|
2022-05-18 15:40:33 +08:00 |
|
|
a0afde52ac
|
fix(launch): 修复 Maven 本地仓库文件夹未初始化的问题.
由于 Maven 本地仓库文件夹未初始化, 将导致启动时发生错误, 现已修复该问题.
|
2022-05-17 19:59:04 +08:00 |
|