github.com/mavryk-network/mvgo@v1.19.9/internal/compose/registry.go (about) 1 // Copyright (c) 2023 Blockwatch Data Inc. 2 // Author: alex@blockwatch.cc, abdul@blockwatch.cc 3 4 package compose 5 6 import ( 7 "strings" 8 ) 9 10 type EngineFactory func() Engine 11 12 var ( 13 engineRegistry = make(map[string]EngineFactory) 14 lastVersion string 15 ) 16 17 func RegisterEngine(ver string, v EngineFactory) { 18 ver = strings.ToLower(ver) 19 engineRegistry[ver] = v 20 lastVersion = ver 21 } 22 23 func HasVersion(ver string) bool { 24 _, ok := engineRegistry[ver] 25 return ok 26 } 27 28 func New(ver string) Engine { 29 fn, ok := engineRegistry[ver] 30 if !ok { 31 return nil 32 } 33 return fn() 34 }