mirror of
				https://github.com/superseriousbusiness/gotosocial.git
				synced 2025-11-03 22:52:25 -06:00 
			
		
		
		
	This allows for building GoToSocial with [SQLite transpiled to WASM](https://github.com/ncruces/go-sqlite3) and accessed through [Wazero](https://wazero.io/).
		
			
				
	
	
		
			52 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			52 lines
		
	
	
	
		
			1.5 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
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)
 | 
						|
}
 |