func NewBasicCompilerManager(ctx context.Context,
	log logger.Logger,
	configManager configmanager.ConfigManager,
	pluginManager pluginmanager.PluginManager,
) (*BasicCompilerManager, error) {
	return &BasicCompilerManager{
		Logger:        log.NewLogger("compilermanager"),
		configManager: configManager,
		pluginManager: pluginManager,
		tree:          map[string]Compiler{},
	}, nil
}
NewBasicCompilerManager is used to create basic CompilerManager
package compilermanager
import (
	"context"
	"sync"
	"github.com/storyicon/powerproto/pkg/component/configmanager"
	"github.com/storyicon/powerproto/pkg/component/pluginmanager"
	"github.com/storyicon/powerproto/pkg/util/logger"
)
type CompilerManager interface {
	GetCompiler(ctx context.Context, protoFilePath string) (Compiler, error)
}
type BasicCompilerManager struct {
	logger.Logger
	configManager configmanager.ConfigManager
	pluginManager pluginmanager.PluginManager
	tree     map[string]Compiler
	treeLock sync.RWMutex
}
var _ CompilerManager = &BasicCompilerManager{}
func NewCompilerManager(ctx context.Context,
	log logger.Logger,
	configManager configmanager.ConfigManager,
	pluginManager pluginmanager.PluginManager,
) (CompilerManager, error) {
	return NewBasicCompilerManager(ctx, log, configManager, pluginManager)
}