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  }