mirror of
https://github.com/crawlab-team/crawlab.git
synced 2026-01-22 17:31:03 +01:00
31 lines
487 B
Go
31 lines
487 B
Go
package utils
|
|
|
|
import (
|
|
"github.com/crawlab-team/crawlab/core/interfaces"
|
|
"sync"
|
|
)
|
|
|
|
var moduleInitializedMap = sync.Map{}
|
|
|
|
func InitModule(id interfaces.ModuleId, fn func() error) (err error) {
|
|
res, ok := moduleInitializedMap.Load(id)
|
|
if ok {
|
|
initialized, _ := res.(bool)
|
|
if initialized {
|
|
return nil
|
|
}
|
|
}
|
|
|
|
if err := fn(); err != nil {
|
|
return err
|
|
}
|
|
|
|
moduleInitializedMap.Store(id, true)
|
|
|
|
return nil
|
|
}
|
|
|
|
func ForceInitModule(fn func() error) (err error) {
|
|
return fn()
|
|
}
|