Peter Kurfer
d70ba748f5
- merge packages to get a more concise layout because plugins are no more and therefore there's not a lot to be exported - fix test logger - rework config parsing to be easier and more transparent - remove unnecessary APIs because dynamic endpoint handling is rather a won't implement
62 lines
1.9 KiB
Go
62 lines
1.9 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"fmt"
|
|
"os"
|
|
"os/user"
|
|
"time"
|
|
|
|
"github.com/google/uuid"
|
|
"github.com/spf13/cobra"
|
|
"gitlab.com/inetmock/inetmock/internal/app"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
var (
|
|
inetMockSocketPath string
|
|
outputFormat string
|
|
grpcTimeout time.Duration
|
|
cliApp app.App
|
|
conn *grpc.ClientConn
|
|
)
|
|
|
|
func main() {
|
|
healthCmd.AddCommand(generalHealthCmd, containerHealthCmd)
|
|
|
|
cliApp = app.NewApp("imctl", "IMCTL is the CLI app to interact with an INetMock server").
|
|
WithCommands(healthCmd, auditCmd).
|
|
WithInitTasks(func(_ *cobra.Command, _ []string) (err error) {
|
|
return initGRPCConnection()
|
|
}).
|
|
WithLogger()
|
|
|
|
cliApp.RootCommand().PersistentFlags().StringVar(&inetMockSocketPath, "socket-path", "unix:///var/run/inetmock.sock", "Path to the INetMock socket file")
|
|
cliApp.RootCommand().PersistentFlags().StringVarP(&outputFormat, "format", "f", "table", "Output format to use. Possible values: table, json, yaml")
|
|
cliApp.RootCommand().PersistentFlags().DurationVar(&grpcTimeout, "grpc-timeout", 5*time.Second, "Timeout to connect to the gRPC API")
|
|
|
|
currentUser := ""
|
|
if usr, err := user.Current(); err == nil {
|
|
currentUser = usr.Username
|
|
} else {
|
|
currentUser = uuid.New().String()
|
|
}
|
|
|
|
hostname := "."
|
|
if hn, err := os.Hostname(); err == nil {
|
|
hostname = hn
|
|
}
|
|
|
|
watchEventsCmd.PersistentFlags().StringVar(&listenerName, "listener-name", fmt.Sprintf("%s\\%s is watching", hostname, currentUser), "set listener name - defaults to the current username, if the user cannot be determined a random UUID will be used")
|
|
auditCmd.AddCommand(listSinksCmd, watchEventsCmd, addFileCmd, removeFileCmd, readFileCmd)
|
|
|
|
cliApp.MustRun()
|
|
}
|
|
|
|
func initGRPCConnection() (err error) {
|
|
dialCtx, cancel := context.WithTimeout(cliApp.Context(), grpcTimeout)
|
|
conn, err = grpc.DialContext(dialCtx, inetMockSocketPath, grpc.WithInsecure())
|
|
cancel()
|
|
|
|
return
|
|
}
|