Skip to content

Commit

Permalink
add colored ui
Browse files Browse the repository at this point in the history
  • Loading branch information
ktr0731 committed Jan 8, 2018
1 parent d132aaa commit 56dd921
Show file tree
Hide file tree
Showing 8 changed files with 103 additions and 3 deletions.
4 changes: 4 additions & 0 deletions adapter/controller/cli.go
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import (
arg "github.com/alexflint/go-arg"
multierror "github.com/hashicorp/go-multierror"
"github.com/ktr0731/evans/adapter/gateway"
"github.com/ktr0731/evans/adapter/logger"
"github.com/ktr0731/evans/adapter/presenter"
"github.com/ktr0731/evans/config"
"github.com/ktr0731/evans/entity"
Expand Down Expand Up @@ -86,6 +87,7 @@ func (c *CLI) Usage() {
func (c *CLI) Run(args []string) int {
params := &usecase.InteractorParams{
OutputPort: presenter.NewJSONCLIPresenter(),
Logger: logger.NewStdLogger(config.Get()),
}

c.parser = arg.MustParse(c.options)
Expand Down Expand Up @@ -134,6 +136,8 @@ func (c *CLI) Run(args []string) int {
}
} else {
params.InputterPort = gateway.NewPromptInputter(env)
params.Logger = logger.NewPromptLogger()

interactor := usecase.NewInteractor(params)
r := repl.NewREPL(c.config.REPL, env, repl.NewBasicUI(), interactor)
defer r.Close()
Expand Down
23 changes: 23 additions & 0 deletions adapter/logger/logger.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,23 @@
package logger

import (
"io"
"io/ioutil"
"log"
"os"

"github.com/ktr0731/evans/config"
"github.com/ktr0731/evans/usecase/port"
)

func NewStdLogger(config *config.Config) port.Logger {
return log.New(os.Stdout, config.Log.Prefix, log.LstdFlags)
}

func NewPromptLogger(ui io.Writer, config *config.Config) port.Logger {
return log.New(ui, config.Log.Prefix, log.LstdFlags)
}

func NewNopLogger() port.Logger {
return log.New(ioutil.Discard, "", log.LstdFlags)
}
5 changes: 5 additions & 0 deletions config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -61,13 +61,18 @@ type Config struct {
REPL *REPL `toml:"repl"`
Env *Env `toml:"env"`
Server *Server `toml:"server"`
Log *Log `toml:"log"`
}

type Default struct {
Package string `toml:"package"`
Service string `toml:"service"`
}

type Log struct {
Prefix string `default:"[evans] " toml:"prefix"`
}

type localConfig struct {
Default *Default `toml:"default"`
}
Expand Down
24 changes: 24 additions & 0 deletions repl/repl.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,30 @@ type UI struct {
prompt string
}

func (u *UI) Println(s string) {
fmt.Fprintln(u.Writer, s)
}

func (u *UI) InfoPrintln(s string) {
fmt.Fprintln(u.Writer, s)
}

func (u *UI) ErrPrintln(s string) {
fmt.Fprintln(u.ErrWriter, s)
}

type ColoredUI struct {
UI
}

func (u *ColoredUI) InfoPrintln(s string) {
u.Println(color.BlueString(s))
}

func (u *ColoredUI) ErrPrintln(s string) {
u.ErrPrintln(color.RedString(s))
}

func NewBasicUI() *UI {
return &UI{
Reader: os.Stdin,
Expand Down
4 changes: 3 additions & 1 deletion usecase/interactor.go
Original file line number Diff line number Diff line change
Expand Up @@ -11,6 +11,7 @@ type Interactor struct {
env *entity.Env

outputPort port.OutputPort
logger port.Logger
inputterPort port.Inputter
grpcPort port.GRPCPort
dynamicBuilder port.DynamicBuilder
Expand All @@ -19,6 +20,7 @@ type Interactor struct {
type InteractorParams struct {
OutputPort port.OutputPort
InputterPort port.Inputter
Logger port.Logger
}

func NewInteractor(params *InteractorParams) *Interactor {
Expand All @@ -29,7 +31,7 @@ func NewInteractor(params *InteractorParams) *Interactor {
}

func (i *Interactor) Package(params *port.PackageParams) (*port.PackageResponse, error) {
return Package(params, i.outputPort, i.env)
return Package(params, i.outputPort, i.logger, i.env)
}

func (i *Interactor) Service(params *port.ServiceParams) (*port.ServiceResponse, error) {
Expand Down
7 changes: 5 additions & 2 deletions usecase/package.go
Original file line number Diff line number Diff line change
Expand Up @@ -5,9 +5,12 @@ import (
"github.com/ktr0731/evans/usecase/port"
)

func Package(params *port.PackageParams, outputPort port.OutputPort, env entity.Environment) (*port.PackageResponse, error) {
func Package(params *port.PackageParams, outputPort port.OutputPort, logger port.Logger, env entity.Environment) (*port.PackageResponse, error) {
if err := env.UsePackage(params.PkgName); err != nil {
return nil, err
switch err {
case entity.ErrUnknownPackage:
logger.Printf("unknown package: %s")
}
}
return outputPort.Package()
}
6 changes: 6 additions & 0 deletions usecase/port/logger.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package port

type Logger interface {
Printf(format string, v ...interface{})
Println(v ...interface{})
}
33 changes: 33 additions & 0 deletions usecase/service_test.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
package usecase

import (
"testing"

"github.com/ktr0731/evans/adapter/presenter"
"github.com/ktr0731/evans/entity"
"github.com/ktr0731/evans/usecase/port"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
)

type serviceEnv struct {
entity.Environment

usedService string
}

func (e *serviceEnv) UseService(pkgName string) error {
e.usedService = pkgName
return nil
}

func TestService(t *testing.T) {
expected := "example_service"
params := &port.ServiceParams{expected}
presenter := &presenter.StubPresenter{}
env := &serviceEnv{}

_, err := Service(params, presenter, env)
require.NoError(t, err)
assert.Equal(t, expected, env.usedService)
}

0 comments on commit 56dd921

Please sign in to comment.