prompt: adds ls, help, mark
This commit is contained in:
84
main.go
84
main.go
@@ -1,68 +1,68 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"os"
|
||||
"flag"
|
||||
"net/http"
|
||||
"flag"
|
||||
"net/http"
|
||||
"os"
|
||||
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
"github.com/rs/zerolog"
|
||||
"github.com/rs/zerolog/log"
|
||||
|
||||
"code.severnaya.net/kordophone-mock/v2/web"
|
||||
"code.severnaya.net/kordophone-mock/v2/prompt"
|
||||
"code.severnaya.net/kordophone-mock/v2/prompt"
|
||||
"code.severnaya.net/kordophone-mock/v2/web"
|
||||
)
|
||||
|
||||
type LoggingHook struct{
|
||||
prompt *prompt.Prompt
|
||||
type LoggingHook struct {
|
||||
prompt *prompt.Prompt
|
||||
}
|
||||
|
||||
func (t *LoggingHook) Run(e *zerolog.Event, level zerolog.Level, message string) {
|
||||
t.prompt.CleanAndRefreshForLogging()
|
||||
t.prompt.CleanAndRefreshForLogging()
|
||||
}
|
||||
|
||||
func setupLogging() {
|
||||
debug := flag.Bool("debug", false, "enable debug logging")
|
||||
flag.Parse()
|
||||
debug := flag.Bool("debug", false, "enable debug logging")
|
||||
flag.Parse()
|
||||
|
||||
// Pretty logging
|
||||
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
|
||||
// Pretty logging
|
||||
log.Logger = log.Output(zerolog.ConsoleWriter{Out: os.Stderr})
|
||||
|
||||
// Default level for this example is info, unless debug flag is present
|
||||
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
||||
if *debug {
|
||||
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
||||
}
|
||||
// Default level for this example is info, unless debug flag is present
|
||||
zerolog.SetGlobalLevel(zerolog.InfoLevel)
|
||||
if *debug {
|
||||
zerolog.SetGlobalLevel(zerolog.DebugLevel)
|
||||
}
|
||||
}
|
||||
|
||||
func main() {
|
||||
setupLogging()
|
||||
setupLogging()
|
||||
|
||||
c := web.MockHTTPServerConfiguration{
|
||||
AuthEnabled: false,
|
||||
}
|
||||
c := web.MockHTTPServerConfiguration{
|
||||
AuthEnabled: false,
|
||||
}
|
||||
|
||||
addr := ":5738"
|
||||
s := web.NewMockHTTPServer(c)
|
||||
httpServer := &http.Server{
|
||||
Addr: addr,
|
||||
Handler: s,
|
||||
}
|
||||
addr := ":5738"
|
||||
s := web.NewMockHTTPServer(c)
|
||||
httpServer := &http.Server{
|
||||
Addr: addr,
|
||||
Handler: s,
|
||||
}
|
||||
|
||||
// Populate with test data
|
||||
s.Server.PopulateWithTestData()
|
||||
log.Info().Msgf("Generated test data. %d conversations", len(s.Server.Conversations()))
|
||||
// Populate with test data
|
||||
s.Server.PopulateWithTestData()
|
||||
log.Info().Msgf("Generated test data. %d conversations", len(s.Server.Conversations()))
|
||||
|
||||
log.Info().Msgf("Listening on %s", addr)
|
||||
go httpServer.ListenAndServe()
|
||||
log.Info().Msgf("Listening on %s", addr)
|
||||
go httpServer.ListenAndServe()
|
||||
|
||||
rl := prompt.NewPrompt()
|
||||
rl := prompt.NewPrompt(&s.Server)
|
||||
|
||||
// Hook logging so we can refresh the prompt when something is logged.
|
||||
log.Logger = log.Logger.Hook(&LoggingHook{prompt: rl})
|
||||
// Hook logging so we can refresh the prompt when something is logged.
|
||||
log.Logger = log.Logger.Hook(&LoggingHook{prompt: rl})
|
||||
|
||||
// Read indefinitely
|
||||
err := rl.StartInteractive()
|
||||
if err != nil {
|
||||
log.Error().Err(err)
|
||||
}
|
||||
// Read indefinitely
|
||||
err := rl.StartInteractive()
|
||||
if err != nil {
|
||||
log.Error().Err(err)
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user