mirror of https://github.com/grafana/grafana
Grafana CLI Wire Runner (#41012)
* Set up Wire build graph * Remove enterprise Wire set * Move runner package outside commands * Update Makefile (gen-go path) * Minor prettier fix * Include new Wire enterprise file into .gitignore * Update Wire deps * Update the grabpl version Co-authored-by: Dan Cech <dcech@grafana.com>pull/41841/head
parent
1b99d88337
commit
d49230d291
@ -0,0 +1,27 @@ |
||||
package runner |
||||
|
||||
import ( |
||||
"github.com/grafana/grafana/pkg/services/encryption" |
||||
"github.com/grafana/grafana/pkg/services/secrets" |
||||
"github.com/grafana/grafana/pkg/services/sqlstore" |
||||
"github.com/grafana/grafana/pkg/setting" |
||||
) |
||||
|
||||
type Runner struct { |
||||
Cfg *setting.Cfg |
||||
SQLStore *sqlstore.SQLStore |
||||
SettingsProvider setting.Provider |
||||
EncryptionService encryption.Internal |
||||
SecretsService secrets.Service |
||||
} |
||||
|
||||
func New(cfg *setting.Cfg, sqlStore *sqlstore.SQLStore, settingsProvider setting.Provider, |
||||
encryptionService encryption.Internal, secretsService secrets.Service) Runner { |
||||
return Runner{ |
||||
Cfg: cfg, |
||||
SQLStore: sqlStore, |
||||
SettingsProvider: settingsProvider, |
||||
EncryptionService: encryptionService, |
||||
SecretsService: secretsService, |
||||
} |
||||
} |
@ -0,0 +1,76 @@ |
||||
//go:build wireinject
|
||||
// +build wireinject
|
||||
|
||||
package runner |
||||
|
||||
import ( |
||||
"context" |
||||
|
||||
"github.com/google/wire" |
||||
"github.com/grafana/grafana/pkg/api/routing" |
||||
"github.com/grafana/grafana/pkg/bus" |
||||
"github.com/grafana/grafana/pkg/infra/localcache" |
||||
"github.com/grafana/grafana/pkg/infra/usagestats" |
||||
"github.com/grafana/grafana/pkg/services/secrets" |
||||
secretsDatabase "github.com/grafana/grafana/pkg/services/secrets/database" |
||||
secretsManager "github.com/grafana/grafana/pkg/services/secrets/manager" |
||||
"github.com/grafana/grafana/pkg/services/sqlstore" |
||||
"github.com/grafana/grafana/pkg/setting" |
||||
"github.com/grafana/grafana/pkg/web" |
||||
) |
||||
|
||||
var wireSet = wire.NewSet( |
||||
New, |
||||
localcache.ProvideService, |
||||
bus.ProvideBus, |
||||
wire.Bind(new(bus.Bus), new(*bus.InProcBus)), |
||||
sqlstore.ProvideService, |
||||
wire.InterfaceValue(new(usagestats.Service), noOpUsageStats{}), |
||||
wire.InterfaceValue(new(routing.RouteRegister), noOpRouteRegister{}), |
||||
secretsDatabase.ProvideSecretsStore, |
||||
wire.Bind(new(secrets.Store), new(*secretsDatabase.SecretsStoreImpl)), |
||||
secretsManager.ProvideSecretsService, |
||||
wire.Bind(new(secrets.Service), new(*secretsManager.SecretsService)), |
||||
) |
||||
|
||||
func Initialize(cfg *setting.Cfg) (Runner, error) { |
||||
wire.Build(wireExtsSet) |
||||
return Runner{}, nil |
||||
} |
||||
|
||||
// NoOp implementations of those dependencies that makes no sense to
|
||||
// inject on CLI command executions (like the route registerer, for instance).
|
||||
|
||||
type noOpUsageStats struct{} |
||||
|
||||
func (noOpUsageStats) GetUsageReport(context.Context) (usagestats.Report, error) { |
||||
return usagestats.Report{}, nil |
||||
} |
||||
|
||||
func (noOpUsageStats) RegisterMetricsFunc(_ usagestats.MetricsFunc) {} |
||||
|
||||
func (noOpUsageStats) RegisterSendReportCallback(_ usagestats.SendReportCallbackFunc) {} |
||||
|
||||
func (noOpUsageStats) ShouldBeReported(string) bool { return false } |
||||
|
||||
type noOpRouteRegister struct{} |
||||
|
||||
func (noOpRouteRegister) Get(string, ...web.Handler) {} |
||||
|
||||
func (noOpRouteRegister) Post(string, ...web.Handler) {} |
||||
|
||||
func (noOpRouteRegister) Delete(string, ...web.Handler) {} |
||||
|
||||
func (noOpRouteRegister) Put(string, ...web.Handler) {} |
||||
|
||||
func (noOpRouteRegister) Patch(string, ...web.Handler) {} |
||||
|
||||
func (noOpRouteRegister) Any(string, ...web.Handler) {} |
||||
|
||||
func (noOpRouteRegister) Group(string, func(routing.RouteRegister), ...web.Handler) {} |
||||
|
||||
func (noOpRouteRegister) Insert(string, func(routing.RouteRegister), ...web.Handler) {} |
||||
|
||||
func (noOpRouteRegister) Register(routing.Router) {} |
||||
|
||||
func (noOpRouteRegister) Reset() {} |
@ -0,0 +1,27 @@ |
||||
//go:build wireinject && oss
|
||||
// +build wireinject,oss
|
||||
|
||||
package runner |
||||
|
||||
import ( |
||||
"github.com/google/wire" |
||||
"github.com/grafana/grafana/pkg/registry" |
||||
"github.com/grafana/grafana/pkg/services/encryption" |
||||
"github.com/grafana/grafana/pkg/services/encryption/ossencryption" |
||||
"github.com/grafana/grafana/pkg/services/kmsproviders" |
||||
"github.com/grafana/grafana/pkg/services/kmsproviders/osskmsproviders" |
||||
"github.com/grafana/grafana/pkg/services/sqlstore/migrations" |
||||
"github.com/grafana/grafana/pkg/setting" |
||||
) |
||||
|
||||
var wireExtsSet = wire.NewSet( |
||||
wireSet, |
||||
migrations.ProvideOSSMigrations, |
||||
wire.Bind(new(registry.DatabaseMigrator), new(*migrations.OSSMigrations)), |
||||
setting.ProvideProvider, |
||||
wire.Bind(new(setting.Provider), new(*setting.OSSImpl)), |
||||
osskmsproviders.ProvideService, |
||||
wire.Bind(new(kmsproviders.Service), new(osskmsproviders.Service)), |
||||
ossencryption.ProvideService, |
||||
wire.Bind(new(encryption.Internal), new(*ossencryption.Service)), |
||||
) |
Loading…
Reference in new issue