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
*.biprivatekey
*.bk
releases/

10
README
View File

@@ -204,24 +204,24 @@ docker pull x1unix/go-mingw:1.20
# version is semantic + build date + git hash
# e.g. 1.0.0-2021-05-30-1a2b3c4d
$versionSem = '0.2.0'
$versionSem = '1.1.0'
$dateStr = Get-Date -Format 'yyyyMMdd'
$version = "$versionSem-$dateStr-$(git rev-parse --short HEAD)"
# 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
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
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
```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
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 MINOR 2
#define MAJOR 1
#define MINOR 1
#define PATCH 0
#define BUILD 20231003
#define VERSION 0.2
#define VERSION 1.1
#define VERSION_STR MAJOR##.##MINOR##.##PATCH##.##BUILD
#define VERSION_AR MAJOR,MINOR,PATCH,BUILD

Binary file not shown.

View File

@@ -57,8 +57,35 @@ var (
func init() {
a3interface.SetVersion(EXTENSION_VERSION)
a3interface.RegisterRvExtensionChannels(RVExtensionChannels)
a3interface.RegisterRvExtensionArgsChannels(RVExtensionArgsChannels)
a3interface.NewRegistration(":START:").
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() {
var err error
@@ -126,8 +153,6 @@ func init() {
logger.Log.Error().Err(err).Msgf(`Error migrating database schema`)
}
startA3CallHandlers()
initSuccess = true
a3interface.WriteArmaCallback(
EXTENSION_NAME,
@@ -138,23 +163,28 @@ func init() {
}()
}
func startA3CallHandlers() error {
go func() {
for {
select {
case <-RVExtensionChannels[":START:"]:
func onStartCommand(
ctx a3interface.ArmaExtensionContext,
data string,
) (string, error) {
logger.Log.Trace().Msgf(`RVExtension :START: requested`)
if !initSuccess {
logger.Log.Warn().Msgf(`Received another :START: command before init was complete, ignoring.`)
continue
return "Initing!", nil
} else {
logger.RotateLogs()
a3interface.WriteArmaCallback(
EXTENSION_NAME,
":READY:",
)
return "Ready!", nil
}
case <-RVExtensionChannels[":MISSION:HASH:"]:
}
func onMissionHashCommand(
ctx a3interface.ArmaExtensionContext,
data string,
) (string, error) {
logger.Log.Trace().Msgf(`RVExtension :MISSION:HASH: requested`)
timestamp, hash := getMissionHash()
a3interface.WriteArmaCallback(
@@ -163,12 +193,22 @@ func startA3CallHandlers() error {
timestamp,
hash,
)
case <-RVExtensionChannels[":GET:SETTINGS:"]:
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`)
continue
return "", err
}
logger.Log.Trace().Str("armaConfig", armaConfig).Send()
a3interface.WriteArmaCallback(
@@ -176,18 +216,29 @@ func startA3CallHandlers() error {
":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 armaConfig, nil
}
}
}()
return 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

View File

@@ -4,7 +4,7 @@ go 1.20
require (
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/spf13/viper v1.16.0
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/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/indig0fox/a3go v0.2.0 h1:2r1fyUePCH9KLMBzVXBigkQT2zS39mpHZAm5egmIrNk=
github.com/indig0fox/a3go v0.2.0/go.mod h1:8htVwBiIAVKpT1Jyb+5dm7GuLAAevTXgw7UKxSlOawY=
github.com/indig0fox/a3go v0.3.1 h1:T1UxVrk7oicM5djyID+ppNuTc+0pEGbbGWS466eS29k=
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/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
github.com/jinzhu/now v1.1.5 h1:/o9tlHleP7gOFmsnYNz3RGnqzefHA47wQpKrrdTIwXQ=