mod bininfo comment

pull/2/head
q191201771 5 years ago
parent 1a53a6da3d
commit d97d098e5b

@ -33,7 +33,7 @@ pkg/ ...... 源码包
|-- assert/ ...... 提供了单元测试时的断言功能,减少一些模板代码
|-- nazastring/ ...... string 和 []byte 相关的操作
|-- consistenthash/ ...... 一致性哈希
|-- bininfo/ ...... 将编译时的 git commit 日志时间Go 编译器信息打入程序中
|-- bininfo/ ...... 将编译时源码的 git 版本信息(当前 commit log 的 sha 值和 commit message编译时间Go 版本,平台打入程序中
|-- bele/ ...... 提供了大小端的转换操作
|-- nazaatomic/ ...... 原子操作
|-- nazajson/ ...... json 操作

@ -2,20 +2,18 @@
set -x
ROOT_DIR=`pwd`
if [ ! -d ${ROOT_DIR}/bin ]; then
mkdir bin
fi
# 获取源码最近一次 git commit log包含 commit sha 值,以及 commit message
GitCommitLog=`git log --pretty=oneline -n 1`
# 将 log 原始字符串中的单引号替换成双引号
GitCommitLog=${GitCommitLog//\'/\"}
# 检查源码在git commit 基础上,是否有本地修改,且未提交的内容
GitStatus=`git status -s`
# 获取当前时间
BuildTime=`date +'%Y.%m.%d.%H%M%S'`
# 获取 Go 的版本
BuildGoVersion=`go version`
# 将以上变量序列化至 LDFlags 变量中
LDFlags=" \
-X 'github.com/q191201771/naza/pkg/bininfo.GitCommitLog=${GitCommitLog}' \
-X 'github.com/q191201771/naza/pkg/bininfo.GitStatus=${GitStatus}' \
@ -23,6 +21,14 @@ LDFlags=" \
-X 'github.com/q191201771/naza/pkg/bininfo.BuildGoVersion=${BuildGoVersion}' \
"
ROOT_DIR=`pwd`
# 如果可执行程序输出目录不存在,则创建
if [ ! -d ${ROOT_DIR}/bin ]; then
mkdir bin
fi
# 编译多个可执行程序
cd ${ROOT_DIR}/demo/add_blog_license && go build -ldflags "$LDFlags" -o ${ROOT_DIR}/bin/add_blog_license &&
cd ${ROOT_DIR}/demo/add_go_license && go build -ldflags "$LDFlags" -o ${ROOT_DIR}/bin/add_go_license &&
cd ${ROOT_DIR}/demo/taskpool && go build -ldflags "$LDFlags" -o ${ROOT_DIR}/bin/taskpool &&

@ -6,7 +6,9 @@
//
// Author: Chef (191201771@qq.com)
// Package bininfo 将编译时的 git commit 日志时间Go 编译器信息打入程序中
// Package bininfo
// 将编译时源码的 git 版本信息(当前 commit log 的 sha 值和 commit message编译时间Go 版本,平台打入程序中
// 编译时传入这些信息的方式见 naza 的编译脚本: https://github.com/q191201771/naza/blob/master/build.sh
package bininfo
import (
@ -15,46 +17,34 @@ import (
"strings"
)
// 编译时通过如下方式传入编译时信息
//
// GitCommitLog=`git log --pretty=oneline -n 1`
// # 将 log 原始字符串中的单引号替换成双引号
// GitCommitLog=${GitCommitLog//\'/\"}
//
// GitStatus=`git status -s`
// BuildTime=`date +'%Y.%m.%d.%H%M%S'`
// BuildGoVersion=`go version`
//
// LDFlags=" \
// -X 'github.com/q191201771/naza/pkg/bininfo.GitCommitLog=${GitCommitLog}' \
// -X 'github.com/q191201771/naza/pkg/bininfo.GitStatus=${GitStatus}' \
// -X 'github.com/q191201771/naza/pkg/bininfo.BuildTime=${BuildTime}' \
// -X 'github.com/q191201771/naza/pkg/bininfo.BuildGoVersion=${BuildGoVersion}' \
// "
//
// go build -ldflags "$LDFlags"
var (
// 初始化为 unknown如果编译时没有传入这些值则为 unknown
GitCommitLog = "unknown"
GitStatus = "unknown"
BuildTime = "unknown"
BuildGoVersion = "unknown"
)
// 返回多行格式
func StringifySingleLine() string {
return fmt.Sprintf("GitCommitLog=%s. GitStatus=%s. BuildTime=%s. GoVersion=%s. runtime=%s/%s.",
GitCommitLog, GitStatus, BuildTime, BuildGoVersion, runtime.GOOS, runtime.GOARCH)
}
// 返回单行格式
func StringifyMultiLine() string {
return fmt.Sprintf("GitCommitLog=%s\nGitStatus=%s\nBuildTime=%s\nGoVersion=%s\nruntime=%s/%s\n",
GitCommitLog, GitStatus, BuildTime, BuildGoVersion, runtime.GOOS, runtime.GOARCH)
}
// 对一些值做美化处理
func beauty() {
if GitStatus == "" {
// GitStatus 为空时,说明本地源码与最近的 commit 记录一致,无修改
// 为它赋一个特殊值
GitStatus = "cleanly"
} else {
// 将多行结果合并为一行
GitStatus = strings.Replace(strings.Replace(GitStatus, "\r\n", " |", -1), "\n", " |", -1)
}
}

Loading…
Cancel
Save