diff --git a/packages/app/main.go b/packages/app/main.go index 4804c650..7665514c 100644 --- a/packages/app/main.go +++ b/packages/app/main.go @@ -34,6 +34,7 @@ func main() { l := do.MustInvoke[*logger.Logger](i) do.ProvideNamedValue(i, coreUtil.ServiceAppVersion, util.AppVersion) + do.ProvideNamedValue(i, coreUtil.ServiceAppBuildNumber, util.AppBuildNumber) do.ProvideValue(i, langTag) do.ProvideValue(i, p) diff --git a/packages/app/util/const.go b/packages/app/util/const.go index 421fa349..aa859d27 100644 --- a/packages/app/util/const.go +++ b/packages/app/util/const.go @@ -1,3 +1,6 @@ package util -var AppVersion = "0.0.0" +var ( + AppVersion = "0.0.0" + AppBuildNumber = "0" +) diff --git a/packages/build/tasks/build/compile.ts b/packages/build/tasks/build/compile.ts index 27d9a34f..e66ec63a 100644 --- a/packages/build/tasks/build/compile.ts +++ b/packages/build/tasks/build/compile.ts @@ -1,5 +1,5 @@ import { parallel, series } from 'gulp' -import { koiVersion } from '../../utils/config' +import { koiBuildNumber, koiVersion } from '../../utils/config' import { Exceptions } from '../../utils/exceptions' import { dir } from '../../utils/path' import { exec } from '../../utils/spawn' @@ -16,7 +16,9 @@ export const compileAppDebug = () => '-o', dir('buildPortable', process.platform === 'win32' ? 'koi.exe' : 'koi'), '-ldflags', - `-X gopkg.ilharper.com/koi/app/util.AppVersion=${koiVersion.slice(1)}`, + `-X gopkg.ilharper.com/koi/app/util.AppVersion=${koiVersion.slice( + 1 + )} -X gopkg.ilharper.com/koi/app/util.AppBuildNumber=${koiBuildNumber}`, ], dir('src') ) @@ -32,7 +34,7 @@ export const compileAppRelease = () => '-ldflags', `-w -s -X gopkg.ilharper.com/koi/app/util.AppVersion=${koiVersion.slice( 1 - )}`, + )} -X gopkg.ilharper.com/koi/app/util.AppBuildNumber=${koiBuildNumber}`, ], dir('src') ) diff --git a/packages/build/utils/config.ts b/packages/build/utils/config.ts index 42ee9dc5..1b87363d 100644 --- a/packages/build/utils/config.ts +++ b/packages/build/utils/config.ts @@ -24,6 +24,16 @@ const buildKoiVersion = () => { export const koiVersion = buildKoiVersion() +const buildKoiBuildNumber = () => { + try { + return spawnSyncOutput('git', ['rev-list', '--count', 'HEAD']).trim() + } catch (error) { + return '0' + } +} + +export const koiBuildNumber = buildKoiBuildNumber() + const buildKoiSemver = () => { const spl = koiVersion.split('-') const build = spl.length > 1 ? Number(spl[1]) : 0 diff --git a/packages/core/proc/env.go b/packages/core/proc/env.go index e178bb12..7919af85 100644 --- a/packages/core/proc/env.go +++ b/packages/core/proc/env.go @@ -16,6 +16,7 @@ import ( func environ(i *do.Injector, path string) *[]string { cfg := do.MustInvoke[*koiconfig.Config](i) appVersion := do.MustInvokeNamed[string](i, util.ServiceAppVersion) + appBuildNumber := do.MustInvokeNamed[string](i, util.ServiceAppBuildNumber) env := os.Environ() @@ -75,6 +76,8 @@ func environ(i *do.Injector, path string) *[]string { env = append(env, "PATH="+pathEnv) envutil.UseEnv(&env, "KOISHI_AGENT", fmt.Sprintf("Koishi Desktop/%s", appVersion)) + envutil.UseEnv(&env, "KOI_APP_VERSION", appVersion) + envutil.UseEnv(&env, "KOI_APP_BUILD_NUMBER", appBuildNumber) envutil.UseColorEnv(&env) koiconfig.UseConfigEnv(&env, cfg) diff --git a/packages/core/util/const.go b/packages/core/util/const.go index 8d7575a8..701adc5a 100644 --- a/packages/core/util/const.go +++ b/packages/core/util/const.go @@ -1,6 +1,7 @@ package util const ( - ServiceAppVersion = "gopkg.ilharper.com/koi/app/util.AppVersion" - ServiceExecutable = "gopkg.ilharper.com/koi/app/util.Executable" + ServiceAppVersion = "gopkg.ilharper.com/koi/app/util.AppVersion" + ServiceAppBuildNumber = "gopkg.ilharper.com/koi/app/util.AppBuildNumber" + ServiceExecutable = "gopkg.ilharper.com/koi/app/util.Executable" )