mirror of
https://github.com/mudler/LocalAI.git
synced 2024-12-30 01:18:52 +00:00
9729d2ae37
Signed-off-by: Ettore Di Giacinto <mudler@localai.io>
50 lines
1.6 KiB
Go
50 lines
1.6 KiB
Go
package cli
|
|
|
|
import (
|
|
"context"
|
|
"time"
|
|
|
|
cliContext "github.com/mudler/LocalAI/core/cli/context"
|
|
"github.com/mudler/LocalAI/core/explorer"
|
|
"github.com/mudler/LocalAI/core/http"
|
|
)
|
|
|
|
type ExplorerCMD struct {
|
|
Address string `env:"LOCALAI_ADDRESS,ADDRESS" default:":8080" help:"Bind address for the API server" group:"api"`
|
|
PoolDatabase string `env:"LOCALAI_POOL_DATABASE,POOL_DATABASE" default:"explorer.json" help:"Path to the pool database" group:"api"`
|
|
ConnectionTimeout string `env:"LOCALAI_CONNECTION_TIMEOUT,CONNECTION_TIMEOUT" default:"2m" help:"Connection timeout for the explorer" group:"api"`
|
|
ConnectionErrorThreshold int `env:"LOCALAI_CONNECTION_ERROR_THRESHOLD,CONNECTION_ERROR_THRESHOLD" default:"3" help:"Connection failure threshold for the explorer" group:"api"`
|
|
|
|
WithSync bool `env:"LOCALAI_WITH_SYNC,WITH_SYNC" default:"false" help:"Enable sync with the network" group:"api"`
|
|
OnlySync bool `env:"LOCALAI_ONLY_SYNC,ONLY_SYNC" default:"false" help:"Only sync with the network" group:"api"`
|
|
}
|
|
|
|
func (e *ExplorerCMD) Run(ctx *cliContext.Context) error {
|
|
|
|
db, err := explorer.NewDatabase(e.PoolDatabase)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
dur, err := time.ParseDuration(e.ConnectionTimeout)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if e.WithSync {
|
|
ds := explorer.NewDiscoveryServer(db, dur, e.ConnectionErrorThreshold)
|
|
go ds.Start(context.Background(), true)
|
|
}
|
|
|
|
if e.OnlySync {
|
|
ds := explorer.NewDiscoveryServer(db, dur, e.ConnectionErrorThreshold)
|
|
ctx := context.Background()
|
|
|
|
return ds.Start(ctx, false)
|
|
}
|
|
|
|
appHTTP := http.Explorer(db)
|
|
|
|
return appHTTP.Listen(e.Address)
|
|
}
|