golangci-lint/pkg/commands/executor.go
2018-09-02 09:34:35 +03:00

48 lines
1.1 KiB
Go

package commands
import (
"github.com/golangci/golangci-lint/pkg/config"
"github.com/golangci/golangci-lint/pkg/lint/lintersdb"
"github.com/golangci/golangci-lint/pkg/logutils"
"github.com/golangci/golangci-lint/pkg/report"
"github.com/spf13/cobra"
)
type Executor struct {
rootCmd *cobra.Command
exitCode int
version, commit, date string
cfg *config.Config
log logutils.Log
reportData report.Data
DBManager *lintersdb.Manager
EnabledLintersSet *lintersdb.EnabledSet
}
func NewExecutor(version, commit, date string) *Executor {
e := &Executor{
cfg: config.NewDefault(),
version: version,
commit: commit,
date: date,
}
e.log = report.NewLogWrapper(logutils.NewStderrLog(""), &e.reportData)
e.DBManager = lintersdb.NewManager()
e.EnabledLintersSet = lintersdb.NewEnabledSet(e.DBManager, &lintersdb.Validator{},
e.log.Child("lintersdb"), e.cfg)
e.initRoot()
e.initRun()
e.initHelp()
e.initLinters()
return e
}
func (e Executor) Execute() error {
return e.rootCmd.Execute()
}