1.1.0 - bump a3interface & refactor to new api

This commit is contained in:
2023-10-08 14:40:21 -07:00
parent 5dc3b5cb03
commit 1892805fe9
10 changed files with 117 additions and 64 deletions

2
.gitignore vendored
View File

@@ -9,3 +9,5 @@ hemtt
hemtt.exe hemtt.exe
*.biprivatekey *.biprivatekey
*.bk *.bk
releases/

10
README
View File

@@ -204,24 +204,24 @@ docker pull x1unix/go-mingw:1.20
# version is semantic + build date + git hash # version is semantic + build date + git hash
# e.g. 1.0.0-2021-05-30-1a2b3c4d # e.g. 1.0.0-2021-05-30-1a2b3c4d
$versionSem = '0.2.0' $versionSem = '1.1.0'
$dateStr = Get-Date -Format 'yyyyMMdd' $dateStr = Get-Date -Format 'yyyyMMdd'
$version = "$versionSem-$dateStr-$(git rev-parse --short HEAD)" $version = "$versionSem-$dateStr-$(git rev-parse --short HEAD)"
# Compile x64 Windows DLL # Compile x64 Windows DLL
docker run --rm -it -v ${PWD}:/go/work -w /go/work x1unix/go-mingw:1.20 go build -o dist/AttendanceTracker_x64.dll -buildmode=c-shared -ldflags "-w -s -X main.EXTENSION_VERSION=$version" ./cmd docker run --rm -it -v ${PWD}:/go/work -w /go/work -e GOARCH=amd64 -e CGO_ENABLED=1 x1unix/go-mingw:1.20 go build -o dist/AttendanceTracker_x64.dll -buildmode=c-shared -ldflags "-w -s -X main.EXTENSION_VERSION=$version" ./cmd
# Compile x86 Windows DLL # Compile x86 Windows DLL
docker run --rm -it -v ${PWD}:/go/work -w /go/work -e GOARCH=386 x1unix/go-mingw:1.20 go build -o dist/AttendanceTracker.dll -buildmode=c-shared -ldflags "-w -s -X main.EXTENSION_VERSION=$version" ./cmd docker run --rm -it -v ${PWD}:/go/work -w /go/work -e GOARCH=386 -e CGO_ENABLED=1 x1unix/go-mingw:1.20 go build -o dist/AttendanceTracker.dll -buildmode=c-shared -ldflags "-w -s -X main.EXTENSION_VERSION=$version" ./cmd
# Compile x64 Windows EXE # Compile x64 Windows EXE
docker run --rm -it -v ${PWD}:/go/work -w /go/work x1unix/go-mingw:1.20 go build -o dist/AttendanceTracker_x64.exe -ldflags "-w -s -X main.EXTENSION_VERSION=$version" ./cmd docker run --rm -it -v ${PWD}:/go/work -w /go/work -e GOARCH=amd64 -e CGO_ENABLED=1 x1unix/go-mingw:1.20 go build -o dist/AttendanceTracker_x64.exe -ldflags "-w -s -X main.EXTENSION_VERSION=$version" ./cmd
``` ```
#### COMPILING FOR LINUX #### COMPILING FOR LINUX
```bash ```bash
docker build -t indifox926/build-a3go:linux-so -f ./build/Dockerfile.build ./cmd docker build -t indifox926/build-a3go:linux-so -f ./build/Dockerfile.build .
# Compile x64 Linux .so # Compile x64 Linux .so
docker run --rm -it -v ${PWD}:/app -e GOOS=linux -e GOARCH=amd64 -e CGO_ENABLED=1 -e CC=gcc indifox926/build-a3go:linux-so go build -o dist/AttendanceTracker_x64.so -linkshared -ldflags "-w -s -X main.EXTENSION_VERSION=$version" ./cmd docker run --rm -it -v ${PWD}:/app -e GOOS=linux -e GOARCH=amd64 -e CGO_ENABLED=1 -e CC=gcc indifox926/build-a3go:linux-so go build -o dist/AttendanceTracker_x64.so -linkshared -ldflags "-w -s -X main.EXTENSION_VERSION=$version" ./cmd

View File

@@ -1,8 +1,8 @@
#define MAJOR 0 #define MAJOR 1
#define MINOR 2 #define MINOR 1
#define PATCH 0 #define PATCH 0
#define BUILD 20231003 #define BUILD 20231003
#define VERSION 0.2 #define VERSION 1.1
#define VERSION_STR MAJOR##.##MINOR##.##PATCH##.##BUILD #define VERSION_STR MAJOR##.##MINOR##.##PATCH##.##BUILD
#define VERSION_AR MAJOR,MINOR,PATCH,BUILD #define VERSION_AR MAJOR,MINOR,PATCH,BUILD

Binary file not shown.

View File

@@ -57,8 +57,35 @@ var (
func init() { func init() {
a3interface.SetVersion(EXTENSION_VERSION) a3interface.SetVersion(EXTENSION_VERSION)
a3interface.RegisterRvExtensionChannels(RVExtensionChannels) a3interface.NewRegistration(":START:").
a3interface.RegisterRvExtensionArgsChannels(RVExtensionArgsChannels) SetDefaultResponse(`["Extension beginning init process"]`).
SetFunction(onStartCommand).
SetRunInBackground(true).
Register()
a3interface.NewRegistration(":MISSION:HASH:").
SetDefaultResponse(`["Retrieving mission hash"]`).
SetFunction(onMissionHashCommand).
SetRunInBackground(true).
Register()
a3interface.NewRegistration(":GET:SETTINGS:").
SetDefaultResponse(`["Retrieving settings"]`).
SetFunction(onGetSettingsCommand).
SetRunInBackground(true).
Register()
a3interface.NewRegistration(":LOG:MISSION:").
SetDefaultResponse(`["Logging mission data"]`).
SetArgsFunction(onLogMissionArgsCommand).
SetRunInBackground(true).
Register()
a3interface.NewRegistration(":LOG:PRESENCE:").
SetDefaultResponse(`["Logging presence data"]`).
SetArgsFunction(onLogPresenceArgsCommand).
SetRunInBackground(true).
Register()
go func() { go func() {
var err error var err error
@@ -126,8 +153,6 @@ func init() {
logger.Log.Error().Err(err).Msgf(`Error migrating database schema`) logger.Log.Error().Err(err).Msgf(`Error migrating database schema`)
} }
startA3CallHandlers()
initSuccess = true initSuccess = true
a3interface.WriteArmaCallback( a3interface.WriteArmaCallback(
EXTENSION_NAME, EXTENSION_NAME,
@@ -138,56 +163,82 @@ func init() {
}() }()
} }
func startA3CallHandlers() error { func onStartCommand(
go func() { ctx a3interface.ArmaExtensionContext,
for { data string,
select { ) (string, error) {
case <-RVExtensionChannels[":START:"]: logger.Log.Trace().Msgf(`RVExtension :START: requested`)
logger.Log.Trace().Msgf(`RVExtension :START: requested`) if !initSuccess {
if !initSuccess { logger.Log.Warn().Msgf(`Received another :START: command before init was complete, ignoring.`)
logger.Log.Warn().Msgf(`Received another :START: command before init was complete, ignoring.`) return "Initing!", nil
continue } else {
} else { logger.RotateLogs()
logger.RotateLogs() a3interface.WriteArmaCallback(
a3interface.WriteArmaCallback( EXTENSION_NAME,
EXTENSION_NAME, ":READY:",
":READY:", )
) return "Ready!", nil
} }
case <-RVExtensionChannels[":MISSION:HASH:"]: }
logger.Log.Trace().Msgf(`RVExtension :MISSION:HASH: requested`)
timestamp, hash := getMissionHash()
a3interface.WriteArmaCallback(
EXTENSION_NAME,
":MISSION:HASH:",
timestamp,
hash,
)
case <-RVExtensionChannels[":GET:SETTINGS:"]:
logger.Log.Trace().Msg(`Settings requested`)
armaConfig, err := util.ConfigArmaFormat()
if err != nil {
logger.Log.Error().Err(err).Msg(`Error when marshaling arma config`)
continue
}
logger.Log.Trace().Str("armaConfig", armaConfig).Send()
a3interface.WriteArmaCallback(
EXTENSION_NAME,
":GET:SETTINGS:",
armaConfig,
)
case v := <-RVExtensionArgsChannels[":LOG:MISSION:"]:
go func(data []string) {
writeWorldInfo(v[1])
writeMission(v[0])
}(v)
case v := <-RVExtensionArgsChannels[":LOG:PRESENCE:"]:
go writeAttendance(v[0])
}
}
}()
return nil func onMissionHashCommand(
ctx a3interface.ArmaExtensionContext,
data string,
) (string, error) {
logger.Log.Trace().Msgf(`RVExtension :MISSION:HASH: requested`)
timestamp, hash := getMissionHash()
a3interface.WriteArmaCallback(
EXTENSION_NAME,
":MISSION:HASH:",
timestamp,
hash,
)
return fmt.Sprintf(
`[%q, %q]`,
timestamp,
hash,
), nil
}
func onGetSettingsCommand(
ctx a3interface.ArmaExtensionContext,
data string,
) (string, error) {
logger.Log.Trace().Msg(`Settings requested`)
armaConfig, err := util.ConfigArmaFormat()
if err != nil {
logger.Log.Error().Err(err).Msg(`Error when marshaling arma config`)
return "", err
}
logger.Log.Trace().Str("armaConfig", armaConfig).Send()
a3interface.WriteArmaCallback(
EXTENSION_NAME,
":GET:SETTINGS:",
armaConfig,
)
return armaConfig, nil
}
func onLogMissionArgsCommand(
ctx a3interface.ArmaExtensionContext,
command string,
args []string,
) (string, error) {
go func(data []string) {
writeWorldInfo(data[1])
writeMission(data[0])
}(args)
return `["Logging mission data"]`, nil
}
func onLogPresenceArgsCommand(
ctx a3interface.ArmaExtensionContext,
command string,
args []string,
) (string, error) {
go writeAttendance(args[0])
return `["Logging presence data"]`, nil
} }
// getMissionHash will return the current time in UTC and an md5 hash of that time // getMissionHash will return the current time in UTC and an md5 hash of that time

View File

@@ -4,7 +4,7 @@ go 1.20
require ( require (
github.com/go-sql-driver/mysql v1.7.1 github.com/go-sql-driver/mysql v1.7.1
github.com/indig0fox/a3go v0.2.0 github.com/indig0fox/a3go v0.3.1
github.com/rs/zerolog v1.30.0 github.com/rs/zerolog v1.30.0
github.com/spf13/viper v1.16.0 github.com/spf13/viper v1.16.0
gopkg.in/natefinch/lumberjack.v2 v2.2.1 gopkg.in/natefinch/lumberjack.v2 v2.2.1

View File

@@ -127,8 +127,8 @@ github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4=
github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ=
github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc=
github.com/indig0fox/a3go v0.2.0 h1:2r1fyUePCH9KLMBzVXBigkQT2zS39mpHZAm5egmIrNk= github.com/indig0fox/a3go v0.3.1 h1:T1UxVrk7oicM5djyID+ppNuTc+0pEGbbGWS466eS29k=
github.com/indig0fox/a3go v0.2.0/go.mod h1:8htVwBiIAVKpT1Jyb+5dm7GuLAAevTXgw7UKxSlOawY= github.com/indig0fox/a3go v0.3.1/go.mod h1:8htVwBiIAVKpT1Jyb+5dm7GuLAAevTXgw7UKxSlOawY=
github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E= github.com/jinzhu/inflection v1.0.0 h1:K317FqzuhWc8YvSVlFMCCUb36O/S9MCKRDI7QkRKD/E=
github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc= github.com/jinzhu/inflection v1.0.0/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ= github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=