Logs the error messages to the screen and resets the log when the build passes.

master
Zed A. Shaw 3 weeks ago
parent 16aa91742c
commit c79fac58e2
  1. 18
      builder/build.go
  2. 1
      data/types.go
  3. 10
      game/engine.go
  4. 10
      main.go
  5. 5
      ui.go

@ -17,7 +17,6 @@ import (
. "lcthw.dev/go/ttarpit/debug" . "lcthw.dev/go/ttarpit/debug"
) )
type ErrorHandler func (data.ErrInfo)
const ( const (
START=0 START=0
@ -29,16 +28,19 @@ const (
type Builder struct { type Builder struct {
settings config.Config settings config.Config
OnError ErrorHandler OnError ErrorHandler
OnPass PassHandler
BuildState int BuildState int
HadErrors bool HadErrors bool
} }
func New(settings config.Config, handler ErrorHandler) (*Builder) { type ErrorHandler func (data.ErrInfo)
type PassHandler func ()
func New(settings config.Config) (*Builder) {
builder := new(Builder) builder := new(Builder)
builder.settings = settings builder.settings = settings
builder.OnError = handler
return builder return builder
} }
@ -65,6 +67,8 @@ func (build *Builder) ParseErrInfo(line string, reg *regexp.Regexp) (data.ErrInf
info.Message = matches[reg.SubexpIndex("Message")] info.Message = matches[reg.SubexpIndex("Message")]
info.Raw = matches[0]
return info, true return info, true
} }
@ -90,6 +94,13 @@ func (build *Builder) LaunchLogger(in io.Reader, out io.Writer, err error) {
}() }()
} }
func (build *Builder) SetOnError(errhandler ErrorHandler) {
build.OnError = errhandler
}
func (build *Builder) SetOnPass(passhandler PassHandler) {
build.OnPass = passhandler
}
func (build *Builder) LaunchProcess(proc *config.Process) { func (build *Builder) LaunchProcess(proc *config.Process) {
proc.ExecCmd = exec.Command(proc.Command, proc.Args...) proc.ExecCmd = exec.Command(proc.Command, proc.Args...)
@ -145,6 +156,7 @@ func (build *Builder) EndBuild() {
build.BuildState = FAILED build.BuildState = FAILED
} else { } else {
build.BuildState = PASSED build.BuildState = PASSED
build.OnPass()
} }
} }

@ -6,5 +6,6 @@ type ErrInfo struct {
Col int Col int
ErrType string ErrType string
Message string Message string
Raw string
} }

@ -3,6 +3,7 @@ package game
import ( import (
"lcthw.dev/go/ttarpit/config" "lcthw.dev/go/ttarpit/config"
"lcthw.dev/go/ttarpit/data" "lcthw.dev/go/ttarpit/data"
"lcthw.dev/go/ttarpit/builder"
. "lcthw.dev/go/ttarpit/debug" . "lcthw.dev/go/ttarpit/debug"
"time" "time"
) )
@ -14,6 +15,7 @@ type Game struct {
Errors int Errors int
StartTime time.Time StartTime time.Time
EndTime time.Time EndTime time.Time
ErrorLog []data.ErrInfo
} }
func New(settings config.Config) *Game { func New(settings config.Config) *Game {
@ -33,11 +35,17 @@ func New(settings config.Config) *Game {
return game return game
} }
func (game *Game) TakeHit(errinfo data.ErrInfo) { func (game *Game) BuildPass() {
game.ErrorLog = game.ErrorLog[:0]
}
func (game *Game) TakeHit(build *builder.Builder, errinfo data.ErrInfo) {
Log.Println("!!!!!!!!!!!!!!!!!", errinfo) Log.Println("!!!!!!!!!!!!!!!!!", errinfo)
game.Errors++ game.Errors++
game.HP-- game.HP--
game.ErrorLog = append(game.ErrorLog, errinfo)
Log.Println("============== PROCESS EXIT") Log.Println("============== PROCESS EXIT")
Log.Printf("==== HP: %d Errors: %d =====\n", Log.Printf("==== HP: %d Errors: %d =====\n",
game.HP, game.Errors) game.HP, game.Errors)

@ -15,8 +15,14 @@ func main() {
g := game.New(settings) g := game.New(settings)
build := builder.New(settings, func (errinfo data.ErrInfo) { build := builder.New(settings)
g.TakeHit(errinfo)
build.SetOnError(func (errinfo data.ErrInfo) {
g.TakeHit(build, errinfo)
})
build.SetOnPass(func () {
g.BuildPass()
}) })
go build.WatchDir() go build.WatchDir()

@ -64,7 +64,10 @@ func (ui *UI) Render(data *game.Game, build *builder.Builder) {
ui.StyleText(0, 5, "Build: FAILED", red) ui.StyleText(0, 5, "Build: FAILED", red)
} }
// show the errors for i := len(data.ErrorLog) - 1 ; i >= 0; i-- {
errinfo := data.ErrorLog[i]
ui.DrawText(0, 8 + (i % 10), errinfo.Raw)
}
ui.Screen.Show() ui.Screen.Show()
} }

Loading…
Cancel
Save