Files
steampipe/cmd/plugin-manager.go

66 lines
1.7 KiB
Go

package cmd
import (
"fmt"
"log"
"os"
"path/filepath"
"time"
"github.com/hashicorp/go-hclog"
"github.com/spf13/cobra"
"github.com/turbot/steampipe-plugin-sdk/logging"
"github.com/turbot/steampipe/cmdconfig"
"github.com/turbot/steampipe/constants"
"github.com/turbot/steampipe/plugin_manager"
pb "github.com/turbot/steampipe/plugin_manager/grpc/proto"
"github.com/turbot/steampipe/steampipeconfig"
"github.com/turbot/steampipe/utils"
)
func pluginManagerCmd() *cobra.Command {
cmd := &cobra.Command{
Use: "plugin-manager",
Run: runPluginManagerCmd,
Hidden: true,
}
cmdconfig.OnCmd(cmd)
return cmd
}
func runPluginManagerCmd(cmd *cobra.Command, args []string) {
logger := createPluginManagerLog()
// build config map
steampipeConfig, err := steampipeconfig.LoadConnectionConfig()
if err != nil {
utils.ShowError(err)
os.Exit(1)
}
configMap := make(map[string]*pb.ConnectionConfig)
for k, v := range steampipeConfig.Connections {
configMap[k] = &pb.ConnectionConfig{
Plugin: v.Plugin,
PluginShortName: v.PluginShortName,
Config: v.Config,
}
}
plugin_manager.NewPluginManager(configMap, logger).Serve()
}
func createPluginManagerLog() hclog.Logger {
logName := fmt.Sprintf("plugin-%s.log", time.Now().Format("2006-01-02"))
logPath := filepath.Join(constants.LogDir(), logName)
f, err := os.OpenFile(logPath, os.O_RDWR|os.O_CREATE|os.O_APPEND, 0666)
if err != nil {
fmt.Printf("failed to open plugin manager log file: %s\n", err.Error())
os.Exit(1)
}
logger := logging.NewLogger(&hclog.LoggerOptions{Output: f})
log.SetOutput(logger.StandardWriter(&hclog.StandardLoggerOptions{InferLevels: true}))
log.SetPrefix("")
log.SetFlags(0)
return logger
}