Explorar o código

添加第三方引用和开发用Git钩子

新增了`dev-git-hooks`目录及相关的`pre-commit`脚本,用于开发阶段的Git钩子管理;同时在`third-party`目录下完整引用了`github.com/SongZihuan/BackendServerTemplate`项目的核心文件(包括`LICENSE`、`CHANGELOG`等),并补充了相关说明文档。此外,调整了部分文件路径的相对引用格式以确保一致性。
SongZihuan hai 1 día
pai
achega
5bf08a7c29

+ 1 - 1
CHANGELOG.md

@@ -2,7 +2,7 @@
 
 本项目所有显著变更都将记录在此文件中。
 
-其格式基于 [CHANGELOG 准则](/CHANGELOG_SPECIFICATION.md) 。
+其格式基于 [CHANGELOG 准则](./CHANGELOG_SPECIFICATION.md) 。
 
 ## [0.12.0] - 2025/04/25 Asia/Shanghai
 

+ 1 - 1
CHANGELOG_SPECIFICATION.md

@@ -1,6 +1,6 @@
 # 变更日志规范 - CHANGELOG SPECIFICATION
 
-本项目所有显著变更都将记录在此 [CHANGELOG.md](CHANGELOG.md) 文件中。
+本项目所有显著变更都将记录在此 [CHANGELOG.md](./CHANGELOG.md) 文件中。
 
 文件格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/) ,文件版本号(程序版本号)遵循 [语义化版本控制](https://semver.org/lang/zh-CN/) 。
 

+ 6 - 0
dev-git-hooks/README.md

@@ -0,0 +1,6 @@
+# BackendServerTemplate Develop Git Hooks (模板程序开发用Git勾子)
+## 简介
+
+本目录包含了用于开发本程序(BackendServerTemplate)所使用的`Git Hooks`函数。
+
+**注意:当使用本项目作为模板开发时,不需要使用这些勾子(`Hooks`)函数。**

+ 19 - 0
dev-git-hooks/pre-commit

@@ -0,0 +1,19 @@
+#!/bin/sh
+
+mkdir -p third-party/github.com.SongZihuan.BackendServerTemplate/
+
+cp LICENSE third-party/github.com.SongZihuan.BackendServerTemplate/LICENSE
+cp REPORT third-party/github.com.SongZihuan.BackendServerTemplate/REPORT
+
+cp CHANGELOG.md third-party/github.com.SongZihuan.BackendServerTemplate/CHANGELOG.md
+cp CHANGELOG_SPECIFICATION.md third-party/github.com.SongZihuan.BackendServerTemplate/CHANGELOG_SPECIFICATION.md
+
+cp .git/hooks/pre-commit dev-git-hooks/pre-commit
+
+git add third-party/github.com.SongZihuan.BackendServerTemplate/LICENSE
+git add third-party/github.com.SongZihuan.BackendServerTemplate/REPORT
+
+git add third-party/github.com.SongZihuan.BackendServerTemplate/CHANGELOG.md
+git add third-party/github.com.SongZihuan.BackendServerTemplate/CHANGELOG_SPECIFICATION.md
+
+git add dev-git-hooks/pre-commit

+ 5 - 0
third-party/README.md

@@ -0,0 +1,5 @@
+# 第三方代码引用
+
+## 模板/框架
+
+引用自`Go`项目:[github.com/SongZihuan/BackendServerTemplate](https://github.com/SongZihuan/BackendServerTemplate)

+ 259 - 0
third-party/github.com.SongZihuan.BackendServerTemplate/CHANGELOG.md

@@ -0,0 +1,259 @@
+# 变更日志 - Changelog
+
+本项目所有显著变更都将记录在此文件中。
+
+其格式基于 [CHANGELOG 准则](./CHANGELOG_SPECIFICATION.md) 。
+
+## [0.12.0] - 2025/04/25 Asia/Shanghai
+
+### 其他
+
+- 新增`CodeQL流水线`。
+- 修复流水线生成`release_info.md`时的一些问题。
+
+## [0.11.0] - 2025/04/25 Asia/Shanghai
+
+### 新增
+
+- 在`Windows`平台上可以使用`Windows`时区信息(最终转换为`IANA`时区信息呈现)。
+- 配置文件可以交叉输出了,输入`yaml`配置文件,通过`check`子命令可输出为`json`。
+- 新增安静模式,启用后标准输入、标准输出、标准错误输出都会输出到`NUL`或`/dev/null`。
+- 强制所以`cmd`下的可执行程序包都必须显示导入`prerun`包。
+- 强制`prerun`包必须显示导入`global`包。
+- 默认导入`time/tzdata`时区数据包,除非添加`systemtzdata`标签,表示使用操作系统自带的数据包。
+- 在 `go gerenate` 中添加发布信息(`release_info.md`),但因为该文件需要被忽略,因此修改为:`release_info.md.ignore`。
+
+### 修改
+
+- 去除运行函数的反向配置文件输出能力,仅`check`子命令可以反向输出配置文件。
+- 添加`ENV_PREFIX`文件,用于决定咋爱获取与项目有关的环境变量时的前缀。
+
+### 修复
+
+- 修复`format`中遗漏的测试函数。
+- 在`Console API`调用前进行`HasConsole`判断,以避免一些潜在的错误。
+
+### 重构
+
+- 完善时区系统,获取本地时间时可以读取到`IANA`时区信息。
+- 重构了退出机制。将`main`程序移到`command`程序,将原本的`os.Exit`替换成`return`一个`ExitCode`,最后在`main`函数在使用`os.Exit`退出程序。有效的解决了以前直接在`main`使用`os.Exit`导致`defer`函数无法释放。
+- 将 `go generate` 从原本的 `Shell` 脚本(`.sh`和`.ps1`)换成由 `go run` 直接执行的 `.go` 程序。 同时,数据文件以 `.dat` 作为文件后缀(除特殊的 `VERSION`,`NAME`,`REPORT`,`LICENSE`,`ENV_PREFIX`),并且需要忽略的文件以 `.ignore`  作为后缀。
+
+### 文档
+
+- 添加行为准则。
+- 完善`README.md`文档。
+- 在贡献者指南中把 《Go 编码最佳实际》 列为参考。
+- 添加变更日志准则。
+- 完善变更日志。
+- 删除对`GitHub Wiki`的引用。
+
+### 其他
+
+- 调整`GitHub`的`PR`模板。
+- 使用`GitHub Action`流水线创建`Release`时使用`markdown`文件:`release_info.md`。
+
+## [0.10.0] - 2025-04-23 Asia/Shanghai
+
+### 新增
+
+- 添加线程独占任务功能。
+
+### 重构
+
+- 重构日志输出系统(格式化函数、控制台输出ANSI转义序列)。
+
+## [0.9.0] - 2025-04-23 Asia/Shanghai
+
+### 重构
+
+- 重构了自动重启机制。
+
+### 文档
+
+- 完善文档关于命令行参数的讲解。
+
+## [0.8.0] - 2025-04-22 Asia/Shanghai
+
+### 新增
+
+- 添加配置文件检测器。
+
+### 修复
+
+- 修复了配置文件反向输出的问题。
+
+### 重构
+
+- 修改`utils`包下的命名。
+- 使用`viper`重构配置文件读取。
+- 支持文件重载后,完整重启系统(用于调试功能)。
+
+## [0.7.0] - 2025-04-21 Asia/Shanghai
+
+### 重构
+
+- 优化了命令行匹配系统。
+
+### 文档
+
+- 完善`README.md`文档关于版本号的描述。
+
+## [0.6.0] - 2025-04-19 Asia/Shanghai
+
+### 修复
+
+- 修复`strconvutils.ReadTimeDuration`中把`uint`转换程`int`可能带来的风险问题,并新增`ReadTimeDurationPositive`函数。
+
+### 重构
+
+- 优化了命令行匹配系统,使其能够支持更复杂的命令行(子命令、标志、参数)。
+
+### 文档
+
+- 完善`README.md`文档关于版本号的描述。
+
+### 其他
+
+- 添加对`Github Dependabot` 的支持。
+
+## [0.5.0] - 2025-04-19 Asia/Shanghai
+
+### 修改
+
+- 服务描述限制为一行。
+- 语义化版本号中的构建信息部分,使用`.`作为分隔符(原使用`-`作为分隔符)。
+
+### 文档
+
+- 新增`SECURITY.md`、`CONTRIBUTORS.md`和`CONTRIBUTING.md`。
+- 为一些文档添加了`Wiki`引用。
+- 简单修改了一下`README.md`。
+- 提供了参考性的`MIT LICENSE`翻译。
+- 为部分文件添加遗漏的版权声明。
+
+## [0.4.6] - 2025-04-19 Asia/Shanghai
+
+### 文档
+
+- 修复了 0.4.x 系列更新日期问题。
+- 补全了 0.4.x 系列更新的日志缺失。
+
+## [0.4.5] - 2025-04-19 Asia/Shanghai
+
+### 其他
+
+- 修复了 Github Action 无权限生成 Release 的问题。
+
+## [0.4.4] - 2025-04-19 Asia/Shanghai
+
+### 其他
+
+- 添加 GitHub 的 Issue 和 Pull Request 模板。
+- Github Action 添加对 Windows的编译支持。
+- 修复 Windows 在 Github Action 中的环境变量问题。
+- 修改 Github Action 的一项流水线的名字。
+- PR合并不再触发 Github Action。
+
+## [0.4.3] - 2025-04-19 Asia/Shanghai
+
+### 其他
+
+- 修复 GitHub Action 生成 Release 时的标题问题(标题中版本号原为`refs/tags/v1.0.0`,现在修改为仅包含`v1.0.0`)。
+
+## [0.4.2] - 2025-04-19 Asia/Shanghai
+
+### 其他
+
+- 修复 GitHub Action 获取版本号标签的问题(标签原为`refs/tags/v1.0.0`,现在修改为仅包含`v1.0.0`)。
+
+## [0.4.1] - 2025-04-19 Asia/Shanghai
+
+### 修复
+
+- 修复编译问题(删除不受支持的 `gcflag` 参数)。
+
+## [0.4.0] - 2025-04-19 Asia/Shanghai
+
+### 新增
+
+- 新增单元测试(以后关于测试的代码变化将记录于 “测试” 小节中)。
+- 添加 GitHub Action 配置。
+- 新增`resource`包的测试。
+
+## [0.3.0] - 2025-04-17 Asia/Shanghai
+
+### 新增
+
+- 新增版本号获取功能(仅输出版本号,不输出其他任何内容,不以字母v或V开头)。
+- 加入对 `Windows Console` 的支持。
+- 添加对机器可读日志的支持(`json`格式)。
+- 添加对`Windows`服务的支持。
+
+### 修复
+
+- 修复日志记录器中的按日期分割日志文件记录器丢失日志数据的问题。
+
+### 重构
+
+- 优化了人类可读日志的输出格式。
+- 部分原生 `panic` 语句改写为 `logger.Panic` 日志记录。
+- 优化命令行参数读取。
+
+## [0.2.0] - 2025-04-16 Asia/Shanghai
+
+### 新增
+
+- 获取构建时时间。
+- 获取构建时`Git`信息(若有):当前`commit hash`、当前最新`tag`(若有)、以及`tag`(若有)对应的`commit hash`(若有)。
+- 清洗通过`go:embed`读取的文件:仅保留第一行(某些文件),删除`BOM`,删除`\r`。
+- 新增程序案件退出(`exitutils.SuccessExitQuite()`函数)。
+
+### 修改
+
+- 修改语义化版本号获取。
+  - 从`VERSION`文件获取(第一优先级,可以以`v/V`开头,必须满足语义化版本哈规定)。
+  - 从`git`获取最新的`tag`(第二优先级,可以以`v/V`开头,必须满足语义化版本哈规定)。
+    - 当该`tag`对应的并非当前`commit`时,`tag`会加上`+dev`标签。
+    - 当该`tag`以`0.`开头时,`tag`会加上`+dev`标签。
+  - 采用版本号`0.0.0`。
+    - 若无`commit hash`,则最终版本号为`0.0.0+dev-1744225466`,其中`1744225466`为编译时间戳。
+    - 若有`commit hash`,则最终版本号为`0.0.0+1744225466-be8f4ff51e6ed2e01171b38459406dc5dac306ea`,其中`1744225466`为编译时间戳,`be8f4ff51e6ed2e01171b38459406dc5dac306ea`为`commit hash`。
+- `Server.Example1`例子更完善,输出更多信息。
+- 命令行参数`--version`输出更多信息:版本号、编译时间(UTC和Local)、编译的Go版本号、系统、架构。
+- 应用`exitutils.SuccessExitQuite()`函数到命令行参数的阻断执行退出中。
+- 对日志系统进行跳转:错误日志默认输出到`stderr`。
+- 删除`log-name`配置项。
+
+### 修复
+
+- 修复无法读取`tag`对应`commit`值的漏洞。
+- 修复`Output Config File`逻辑判断错误。
+- 修复设置`SigQuitExit`默认动作的错误。
+- 修复了退出日志的日志等级。
+- 修复了命令行参数`--report`不会阻断服务运行的错误。
+- 修复命令行`Usage`对短参数的前缀使用错误(原:`--c`,现:`-c`)。
+
+### 重构
+
+- 减少`import resource "github.com/SongZihuan/BackendServerTemplate"`的引用。
+- 在设定情况下,`config`在执行完`setDefault()`函数后,进行配置文件反向输出(若存在输出路径)。
+
+### 文档
+
+- 详细更新了`README.md`文档。
+
+## [0.1.0] - 2025-04-03 Asia/Shanghai
+
+### 新增
+
+- 日志(支持投递到标准输出、文件、日期切割的文件、自定义输出、多输出合并)。
+- 命令行参数(支持`string`、`bool`、`uint`、`int`)。
+- 配置文件(支持`json`和`yaml`格式,也可以自定义解析器)。
+- 退出信号量捕获(在`posix`系统上可以使用信号量捕获退出信号,并做清理操作。在`win32`上,命令行的`ctrl+c`也可被捕获,但当程序作为服务在后台运行时,相关停止、重启操作暂未内捕获)。
+- 全局变量和资源(打包了`Version`、`License`、`Name`、`Report`等变量)。
+- 服务模式(可使用控制单元启动多服务,或直接启动单服务)。
+
+### 其他
+
+- 删除`test_self`文件夹。

+ 29 - 0
third-party/github.com.SongZihuan.BackendServerTemplate/CHANGELOG_SPECIFICATION.md

@@ -0,0 +1,29 @@
+# 变更日志规范 - CHANGELOG SPECIFICATION
+
+本项目所有显著变更都将记录在此 [CHANGELOG.md](./CHANGELOG.md) 文件中。
+
+文件格式基于 [Keep a Changelog](https://keepachangelog.com/zh-CN/1.1.0/) ,文件版本号(程序版本号)遵循 [语义化版本控制](https://semver.org/lang/zh-CN/) 。
+
+## 分类
+
+- 新增:新增此前从未有过的功能。
+- 修改:修改此前存在的功能,且目的不是为了修复错误,修改后功能的使用方法和表现形式与原来不同。**注意:当功能改动范围巨大时,应归类为重构。**
+- 修复:修复错误和漏洞。**注意:当功能改动范围巨大时,应归类为重构。**
+- 删除:删除已经存在的功能。**注意:并不是删除文件就代表该归类为“删除”,只有删除功能时才能算作“删除”,而只是删除配置文件等则只能算作“其他”。**
+- 重构:修改此前存在的功能,修改后功能的使用方法和表现形式与原来基本一致;**或进行重大改动现有的功能。**
+- 文档:不涉及代码修改,而是对文档文件或代码注释的改动。
+- 其他:其他非代码和文档类的新增、改动、删除等,例如:`GitHub Action`的改动。
+
+分类出现的顺序为:新增、修改、修复、删除、重构、文档、其他。
+
+## 时区
+
+- 为了避免造成,每次版本更新的时间条目中应标注时区。并且在该版本的变更日志中涉及到的时间均为此时区。
+- 为了避免争议和误解,请使用 IANA(Internet Assigned Numbers Authority) 的时区数据库中的时区标识符。 
+  例如,使用`Asia/Shanghai`代替`CST`来表示北京时间。因为后者`CST`可以解释为:北美的中部地区(Central Standard Time)、中国标准时间(China Standard Time)、澳大利亚中部标准时间(Central Standard Time (Australia));容易造成误解。
+
+## 条目
+
+- 分类下的每个条目原则上是各自独立的,在特殊情况下两个条目可能有关联(若可以,应以树状形式展开)。
+- 处于不同分类的条目之间不能有关联。
+- 每个条目都是完整的句子,以句号结尾。

+ 19 - 0
third-party/github.com.SongZihuan.BackendServerTemplate/LICENSE

@@ -0,0 +1,19 @@
+The MIT License (MIT)
+Copyright © 2025 宋子桓(Song Zihuan)
+
+Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
+
+The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+
+--- 下述为中文翻译,仅供参考,以上述英文协议原文为准。 ---
+
+MIT 许可证 (MIT)
+版权所有 © 2025 宋子桓(Song Zihuan)
+
+特此授予获得本软件及相关文档文件(以下简称“软件”)副本的任何人免费且无限制地处理本软件的许可,包括但不限于使用、复制、修改、合并、发布、分发、再许可和/或销售本软件副本的权利,以及允许获得本软件的人员进行上述操作的权利,但须遵守以下条件:
+
+上述版权声明和本许可声明应包含在软件的所有副本或重要部分中。
+
+本软件“按原样”提供,不提供任何形式的明示或暗示的保证,包括但不限于适销性、特定用途适用性和不侵权性的保证。在任何情况下,作者或版权持有者均不对任何索赔、损害或其他责任负责,无论是合同行为、侵权行为还是其他行为,无论是由软件或软件的使用或其他交易引起、引起或与之有关。

+ 16 - 0
third-party/github.com.SongZihuan.BackendServerTemplate/REPORT

@@ -0,0 +1,16 @@
+How to report of BackendServerTemplate
+
+Security: When submitting feedback, please be sure to read the Security Docs.
+Security Docs: https://github.com/SongZihuan/BackendServerTemplate/blob/master/SECURITY.md
+
+Author: 宋子桓(Song Zihuan)
+Author Github: https://github.com/SongZihuan
+Author Website: https://song-zh.com
+Author Email: contact@song-zh.com
+
+Github: https://github.com/SongZihuan/BackendServerTemplate
+Github Issues: https://github.com/SongZihuan/BackendServerTemplate/issues
+
+Report: You can report issues and contact the author through Github Issues or Author Email.
+Quality Assurance: If you only have the license in the LICENSE file in the root directory of this project, you will not get any quality assurance. But the author is happy to solve the problem for you, unless this project has been archived as read-only.
+Other Fork versions: Please contact the author of the Fork version for assistance.