mirror of
https://github.com/superseriousbusiness/gotosocial
synced 2025-06-05 21:59:39 +02:00
[experiment] add alternative wasm sqlite3 implementation available via build-tag (#2863)
This allows for building GoToSocial with [SQLite transpiled to WASM](https://github.com/ncruces/go-sqlite3) and accessed through [Wazero](https://wazero.io/).
This commit is contained in:
52
vendor/github.com/tetratelabs/wazero/internal/version/version.go
generated
vendored
Normal file
52
vendor/github.com/tetratelabs/wazero/internal/version/version.go
generated
vendored
Normal file
@ -0,0 +1,52 @@
|
||||
package version
|
||||
|
||||
import (
|
||||
"runtime/debug"
|
||||
"strings"
|
||||
)
|
||||
|
||||
// Default is the default version value used when none was found.
|
||||
const Default = "dev"
|
||||
|
||||
// version holds the current version from the go.mod of downstream users or set by ldflag for wazero CLI.
|
||||
var version string
|
||||
|
||||
// GetWazeroVersion returns the current version of wazero either in the go.mod or set by ldflag for wazero CLI.
|
||||
//
|
||||
// If this is not CLI, this assumes that downstream users of wazero imports wazero as "github.com/tetratelabs/wazero".
|
||||
// To be precise, the returned string matches the require statement there.
|
||||
// For example, if the go.mod has "require github.com/tetratelabs/wazero 0.1.2-12314124-abcd",
|
||||
// then this returns "0.1.2-12314124-abcd".
|
||||
//
|
||||
// Note: this is tested in ./testdata/main_test.go with a separate go.mod to pretend as the wazero user.
|
||||
func GetWazeroVersion() (ret string) {
|
||||
if len(version) != 0 {
|
||||
return version
|
||||
}
|
||||
|
||||
info, ok := debug.ReadBuildInfo()
|
||||
if ok {
|
||||
for _, dep := range info.Deps {
|
||||
// Note: here's the assumption that wazero is imported as github.com/tetratelabs/wazero.
|
||||
if strings.Contains(dep.Path, "github.com/tetratelabs/wazero") {
|
||||
ret = dep.Version
|
||||
}
|
||||
}
|
||||
|
||||
// In wazero CLI, wazero is a main module, so we have to get the version info from info.Main.
|
||||
if versionMissing(ret) {
|
||||
ret = info.Main.Version
|
||||
}
|
||||
}
|
||||
if versionMissing(ret) {
|
||||
return Default // don't return parens
|
||||
}
|
||||
|
||||
// Cache for the subsequent calls.
|
||||
version = ret
|
||||
return ret
|
||||
}
|
||||
|
||||
func versionMissing(ret string) bool {
|
||||
return ret == "" || ret == "(devel)" // pkg.go defaults to (devel)
|
||||
}
|
Reference in New Issue
Block a user