From 544824fdbabeadfa2a627d4b2a968eb6273481d2 Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Wed, 2 Mar 2022 16:10:56 +0100 Subject: [PATCH 01/13] Fix: stderr for logs --- application/logs.go | 3 +-- application/task.go | 2 +- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/application/logs.go b/application/logs.go index 5940659..c523f48 100644 --- a/application/logs.go +++ b/application/logs.go @@ -20,8 +20,7 @@ func (a *Application) renderLogsPageForTask(ctx context.Context, t *task.Task, w } var buffer bytes.Buffer - var dropped bytes.Buffer - _, err = stdcopy.StdCopy(&buffer, &dropped, reader) + _, err = stdcopy.StdCopy(&buffer, &buffer, reader) if err != nil { return err } diff --git a/application/task.go b/application/task.go index 8f3cecd..9d84b56 100644 --- a/application/task.go +++ b/application/task.go @@ -219,7 +219,7 @@ func (a *Application) TaskLogsHandler(latest bool) func(http.ResponseWriter, *ht // just stdout for now // kudos @ndeloof, @rumpl, @glours - _, err = stdcopy.StdCopy(w, nil, reader) + _, err = stdcopy.StdCopy(w, w, reader) if err != nil { l.Error("Task log stdcopy write error", zap.Error(err)) w.WriteHeader(http.StatusInternalServerError) From c90e5accb967664563c778956166189c45dfb18a Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Wed, 2 Mar 2022 16:11:37 +0100 Subject: [PATCH 02/13] Pretty logs for web ui --- application/logs.go | 3 ++- go.mod | 1 + go.sum | 2 ++ 3 files changed, 5 insertions(+), 1 deletion(-) diff --git a/application/logs.go b/application/logs.go index c523f48..475812a 100644 --- a/application/logs.go +++ b/application/logs.go @@ -10,6 +10,7 @@ import ( "github.com/docker/docker/pkg/stdcopy" "github.com/factorysh/microdensity/html" "github.com/factorysh/microdensity/task" + "github.com/robert-nix/ansihtml" ) func (a *Application) renderLogsPageForTask(ctx context.Context, t *task.Task, w http.ResponseWriter) error { @@ -25,7 +26,7 @@ func (a *Application) renderLogsPageForTask(ctx context.Context, t *task.Task, w return err } - data, err := NewTaskPage(t, template.HTML(fmt.Sprintf("
%s
", buffer.String())), a.GitlabURL, "Task Logs", "terminal") + data, err := NewTaskPage(t, template.HTML(fmt.Sprintf("
%s
", ansihtml.ConvertToHTML(buffer.Bytes()))), a.GitlabURL, "Task Logs", "terminal") if err != nil { return err } diff --git a/go.mod b/go.mod index e32c07e..7083f64 100644 --- a/go.mod +++ b/go.mod @@ -101,6 +101,7 @@ require ( github.com/prometheus/client_model v0.2.0 // indirect github.com/prometheus/common v0.32.1 // indirect github.com/prometheus/procfs v0.7.3 // indirect + github.com/robert-nix/ansihtml v1.0.0 // indirect github.com/sanathkr/go-yaml v0.0.0-20170819195128-ed9d249f429b // indirect github.com/sirupsen/logrus v1.8.1 // indirect github.com/spf13/cobra v1.3.0 // indirect diff --git a/go.sum b/go.sum index 7a3d264..80e312a 100644 --- a/go.sum +++ b/go.sum @@ -964,6 +964,8 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.7.3 h1:4jVXhlkAyzOScmCkXBTOLRLTz8EeU+eyjrwB/EPq0VU= github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/tsdb v0.7.1/go.mod h1:qhTCs0VvXwvX/y3TZrWD7rabWM+ijKTux40TwIPHuXU= +github.com/robert-nix/ansihtml v1.0.0 h1:x/M0hHxcs+vCEGwfXtdWVROatZQRSXhn/akMwvPogB8= +github.com/robert-nix/ansihtml v1.0.0/go.mod h1:CJwclxYaTPc2RfcxtanEACsYuTksh4yDXcNeHHKZINE= github.com/rogpeppe/fastuuid v0.0.0-20150106093220-6724a57986af/go.mod h1:XWv6SoW27p1b0cqNHllgS5HIMJraePCO15w5zCzIWYg= github.com/rogpeppe/fastuuid v1.2.0/go.mod h1:jVj6XXZzXRy/MSR5jhDC/2q6DgLz+nrA6LYCDYWNEvQ= github.com/rogpeppe/go-charset v0.0.0-20180617210344-2471d30d28b4/go.mod h1:qgYeAmZ5ZIpBWTGllZSQnw97Dj+woV0toclVaRGI8pc= From 7d6c2dd74a1e10373e7b0bb8d29ba71499d4b2e9 Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Wed, 2 Mar 2022 16:12:06 +0100 Subject: [PATCH 03/13] Unplug raw logs --- application/application.go | 2 -- application/task.go | 8 ++++---- 2 files changed, 4 insertions(+), 6 deletions(-) diff --git a/application/application.go b/application/application.go index cb6f81c..db5cbeb 100644 --- a/application/application.go +++ b/application/application.go @@ -163,7 +163,6 @@ func New(cfg *conf.Conf) (*Application, error) { r.Get("/", a.TaskHandler(false)) r.Get("/volumes/*", a.VolumesHandler(6, false)) r.Get("/logs", a.TaskLogsHandler(false)) - r.Get("/logz", a.TaskLogzHandler(false)) }) r.Group(func(r chi.Router) { r.Use(a.RefererMiddleware) @@ -177,7 +176,6 @@ func New(cfg *conf.Conf) (*Application, error) { r.Get("/", a.TaskHandler(true)) r.Get("/volumes/*", a.VolumesHandler(6, true)) r.Get("/logs", a.TaskLogsHandler(true)) - r.Get("/logz", a.TaskLogzHandler(true)) }) r.Group(func(r chi.Router) { r.Use(a.RefererMiddleware) diff --git a/application/task.go b/application/task.go index 9d84b56..8c79201 100644 --- a/application/task.go +++ b/application/task.go @@ -182,8 +182,8 @@ func (a *Application) TaskIDHandler(w http.ResponseWriter, r *http.Request) { } } -// TaskLogsHandler get a logs for a task -func (a *Application) TaskLogsHandler(latest bool) func(http.ResponseWriter, *http.Request) { +// TaskLogzHandler get a logs for a task +func (a *Application) TaskLogzHandler(latest bool) func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { l := a.logger.With( @@ -232,8 +232,8 @@ func (a *Application) TaskLogsHandler(latest bool) func(http.ResponseWriter, *ht } -// TaskLogzHandler get a logs for a task -func (a *Application) TaskLogzHandler(latest bool) func(http.ResponseWriter, *http.Request) { +// TaskLogsHandler get a logs for a task, used to get row logs from curl, not used for now +func (a *Application) TaskLogsHandler(latest bool) func(http.ResponseWriter, *http.Request) { return func(w http.ResponseWriter, r *http.Request) { l := a.logger.With( From 0054edc6f41a1cb7cd854323893e590efbfa1611 Mon Sep 17 00:00:00 2001 From: Mathieu Lecarme Date: Wed, 2 Mar 2022 16:51:39 +0100 Subject: [PATCH 04/13] magic happens here. --- application/logs.go | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/application/logs.go b/application/logs.go index 475812a..c5257f7 100644 --- a/application/logs.go +++ b/application/logs.go @@ -5,6 +5,7 @@ import ( "context" "fmt" "html/template" + "io" "net/http" "github.com/docker/docker/pkg/stdcopy" @@ -13,6 +14,40 @@ import ( "github.com/robert-nix/ansihtml" ) +type DoubleLogger struct { + Stdout io.Writer + Stderr io.Writer +} + +type simpleLogger struct { + ouptut io.Writer + color string +} + +func (s *simpleLogger) Write(p []byte) (int, error) { + lines := bytes.Split(p, []byte{10}) + n := 0 + for _, line := range lines { + // FIXME use s.color here + i, _ := s.ouptut.Write(line) + n += i + } + return n, nil +} + +func NewDoubleLogger(output io.Writer) *DoubleLogger { + return &DoubleLogger{ + Stdout: &simpleLogger{ + ouptut: output, + color: "blue", + }, + Stderr: &simpleLogger{ + ouptut: output, + color: "red", + }, + } +} + func (a *Application) renderLogsPageForTask(ctx context.Context, t *task.Task, w http.ResponseWriter) error { reader, err := t.Logs(ctx, false) From 3dae7dd370e1ebd6bf3da34746536864c50995d7 Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Wed, 2 Mar 2022 18:21:46 +0100 Subject: [PATCH 05/13] Add branch to task page --- application/task_page.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/application/task_page.go b/application/task_page.go index 4c3ebd3..0979223 100644 --- a/application/task_page.go +++ b/application/task_page.go @@ -14,6 +14,7 @@ type TaskPage struct { Project string Commit string Service string + Branch string ID string CreatedAt string InnerDivClasses string @@ -32,6 +33,7 @@ func NewTaskPage(t *task.Task, inner template.HTML, gitlabDomain, InnerTitle, In Project: prettyPath, GitlabDomain: gitlabDomain, Commit: t.Commit, + Branch: t.Branch, Service: t.Service, ID: t.Id.String(), CreatedAt: t.Creation.Format("2006-01-02 15:04:05"), From 8d8dd6c5e9f4f00d87e89e7822bf92550ef79d9a Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Wed, 2 Mar 2022 18:21:58 +0100 Subject: [PATCH 06/13] Add logs to task page --- application/templates/task.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/application/templates/task.html b/application/templates/task.html index e9991bb..80319a5 100644 --- a/application/templates/task.html +++ b/application/templates/task.html @@ -5,7 +5,7 @@

Task Description

  • Commit : {{ .Commit }}
  • Created At : {{ .CreatedAt }}
  • Service : {{ .Service }}
  • -
  • ID : {{ .ID }}
  • +
  • ID : {{ .ID }} - Logs
  • {{ .InnerTitle }}

    From f6c27b2136c473f176cf28d3fdaa69ea19a41d1b Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Wed, 2 Mar 2022 18:22:15 +0100 Subject: [PATCH 07/13] Add colors to logs to distinguish between stdout and stderr --- application/logs.go | 33 ++++++++++++++++++++++----------- application/logs_test.go | 21 +++++++++++++++++++++ html/templates/styles.css | 8 ++++++++ 3 files changed, 51 insertions(+), 11 deletions(-) create mode 100644 application/logs_test.go diff --git a/application/logs.go b/application/logs.go index c5257f7..e0b8823 100644 --- a/application/logs.go +++ b/application/logs.go @@ -14,36 +14,46 @@ import ( "github.com/robert-nix/ansihtml" ) -type DoubleLogger struct { +type doubleLogger struct { Stdout io.Writer Stderr io.Writer } type simpleLogger struct { ouptut io.Writer - color string + class string } +var space = []byte(" ") +var cr = []byte("\n") + func (s *simpleLogger) Write(p []byte) (int, error) { - lines := bytes.Split(p, []byte{10}) + lines := bytes.Split(p, cr) n := 0 + for _, line := range lines { - // FIXME use s.color here - i, _ := s.ouptut.Write(line) - n += i + if len(line) == 0 { + continue + } + parts := bytes.SplitN(line, space, 2) + parts[0] = []byte(fmt.Sprintf("%s", s.class, parts[0])) + i, _ := s.ouptut.Write(bytes.Join(parts, space)) + j, _ := s.ouptut.Write(cr) + n += i + j } + return n, nil } -func NewDoubleLogger(output io.Writer) *DoubleLogger { - return &DoubleLogger{ +func newDoubleLogger(output io.Writer) *doubleLogger { + return &doubleLogger{ Stdout: &simpleLogger{ ouptut: output, - color: "blue", + class: "stdout-prefix", }, Stderr: &simpleLogger{ ouptut: output, - color: "red", + class: "stderr-prefix", }, } } @@ -56,7 +66,8 @@ func (a *Application) renderLogsPageForTask(ctx context.Context, t *task.Task, w } var buffer bytes.Buffer - _, err = stdcopy.StdCopy(&buffer, &buffer, reader) + logger := newDoubleLogger(&buffer) + _, err = stdcopy.StdCopy(logger.Stdout, logger.Stderr, reader) if err != nil { return err } diff --git a/application/logs_test.go b/application/logs_test.go new file mode 100644 index 0000000..5304ed3 --- /dev/null +++ b/application/logs_test.go @@ -0,0 +1,21 @@ +package application + +import ( + "bytes" + "testing" + + "github.com/stretchr/testify/assert" +) + +func TestDoubleLogger(t *testing.T) { + var out bytes.Buffer + dl := newDoubleLogger(&out) + dl.Stderr.Write([]byte("2022-03-02T14:11:16.733625031Z an error log line")) + dl.Stdout.Write([]byte("2022-03-02T14:13:16.733625031Z an stdout log line")) + + expexted := `2022-03-02T14:11:16.733625031Z an error log line +2022-03-02T14:13:16.733625031Z an stdout log line +` + + assert.Equal(t, expexted, out.String()) +} diff --git a/html/templates/styles.css b/html/templates/styles.css index e6b3911..75ab70b 100644 --- a/html/templates/styles.css +++ b/html/templates/styles.css @@ -88,3 +88,11 @@ h6 { overflow-x: scroll; overflow-y: hidden; } + +.stdout-prefix { + color: #900603; +} + +.stderr-prefix { + color: #028a0f; +} From 6ae9730d45860df60ee846c9c82b56098c524968 Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Wed, 2 Mar 2022 18:52:47 +0100 Subject: [PATCH 08/13] Check for errors --- application/logs_test.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/application/logs_test.go b/application/logs_test.go index 5304ed3..fd550b5 100644 --- a/application/logs_test.go +++ b/application/logs_test.go @@ -10,8 +10,10 @@ import ( func TestDoubleLogger(t *testing.T) { var out bytes.Buffer dl := newDoubleLogger(&out) - dl.Stderr.Write([]byte("2022-03-02T14:11:16.733625031Z an error log line")) - dl.Stdout.Write([]byte("2022-03-02T14:13:16.733625031Z an stdout log line")) + _, err := dl.Stderr.Write([]byte("2022-03-02T14:11:16.733625031Z an error log line")) + assert.NoError(t, err) + _, err = dl.Stdout.Write([]byte("2022-03-02T14:13:16.733625031Z an stdout log line")) + assert.NoError(t, err) expexted := `2022-03-02T14:11:16.733625031Z an error log line 2022-03-02T14:13:16.733625031Z an stdout log line From 6027c4a91761bdff78f7b3aecdc6205ea398eaf2 Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Wed, 2 Mar 2022 18:56:28 +0100 Subject: [PATCH 09/13] Watch for errors --- application/logs.go | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/application/logs.go b/application/logs.go index e0b8823..4c33d01 100644 --- a/application/logs.go +++ b/application/logs.go @@ -37,8 +37,14 @@ func (s *simpleLogger) Write(p []byte) (int, error) { } parts := bytes.SplitN(line, space, 2) parts[0] = []byte(fmt.Sprintf("%s", s.class, parts[0])) - i, _ := s.ouptut.Write(bytes.Join(parts, space)) - j, _ := s.ouptut.Write(cr) + i, err := s.ouptut.Write(bytes.Join(parts, space)) + if err != nil { + return 0, err + } + j, err := s.ouptut.Write(cr) + if err != nil { + return 0, err + } n += i + j } From 9b8ba099b62e1f6e2ba3c4cc2de84a59cf052dea Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Thu, 3 Mar 2022 11:23:52 +0100 Subject: [PATCH 10/13] Simplify logs by using one buffer for both stdout and stderr --- application/logs.go | 54 +--------------------------------------- application/logs_test.go | 23 ----------------- 2 files changed, 1 insertion(+), 76 deletions(-) delete mode 100644 application/logs_test.go diff --git a/application/logs.go b/application/logs.go index 4c33d01..475812a 100644 --- a/application/logs.go +++ b/application/logs.go @@ -5,7 +5,6 @@ import ( "context" "fmt" "html/template" - "io" "net/http" "github.com/docker/docker/pkg/stdcopy" @@ -14,56 +13,6 @@ import ( "github.com/robert-nix/ansihtml" ) -type doubleLogger struct { - Stdout io.Writer - Stderr io.Writer -} - -type simpleLogger struct { - ouptut io.Writer - class string -} - -var space = []byte(" ") -var cr = []byte("\n") - -func (s *simpleLogger) Write(p []byte) (int, error) { - lines := bytes.Split(p, cr) - n := 0 - - for _, line := range lines { - if len(line) == 0 { - continue - } - parts := bytes.SplitN(line, space, 2) - parts[0] = []byte(fmt.Sprintf("%s", s.class, parts[0])) - i, err := s.ouptut.Write(bytes.Join(parts, space)) - if err != nil { - return 0, err - } - j, err := s.ouptut.Write(cr) - if err != nil { - return 0, err - } - n += i + j - } - - return n, nil -} - -func newDoubleLogger(output io.Writer) *doubleLogger { - return &doubleLogger{ - Stdout: &simpleLogger{ - ouptut: output, - class: "stdout-prefix", - }, - Stderr: &simpleLogger{ - ouptut: output, - class: "stderr-prefix", - }, - } -} - func (a *Application) renderLogsPageForTask(ctx context.Context, t *task.Task, w http.ResponseWriter) error { reader, err := t.Logs(ctx, false) @@ -72,8 +21,7 @@ func (a *Application) renderLogsPageForTask(ctx context.Context, t *task.Task, w } var buffer bytes.Buffer - logger := newDoubleLogger(&buffer) - _, err = stdcopy.StdCopy(logger.Stdout, logger.Stderr, reader) + _, err = stdcopy.StdCopy(&buffer, &buffer, reader) if err != nil { return err } diff --git a/application/logs_test.go b/application/logs_test.go deleted file mode 100644 index fd550b5..0000000 --- a/application/logs_test.go +++ /dev/null @@ -1,23 +0,0 @@ -package application - -import ( - "bytes" - "testing" - - "github.com/stretchr/testify/assert" -) - -func TestDoubleLogger(t *testing.T) { - var out bytes.Buffer - dl := newDoubleLogger(&out) - _, err := dl.Stderr.Write([]byte("2022-03-02T14:11:16.733625031Z an error log line")) - assert.NoError(t, err) - _, err = dl.Stdout.Write([]byte("2022-03-02T14:13:16.733625031Z an stdout log line")) - assert.NoError(t, err) - - expexted := `2022-03-02T14:11:16.733625031Z an error log line -2022-03-02T14:13:16.733625031Z an stdout log line -` - - assert.Equal(t, expexted, out.String()) -} From 791756b7cc733b6d16119a7e9705fdbedd7b06d0 Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Thu, 3 Mar 2022 14:35:49 +0100 Subject: [PATCH 11/13] More styling for task page --- application/templates/task.html | 30 +++++++++++++++++++----------- html/templates/styles.css | 4 ++++ 2 files changed, 23 insertions(+), 11 deletions(-) diff --git a/application/templates/task.html b/application/templates/task.html index 80319a5..0a3cc60 100644 --- a/application/templates/task.html +++ b/application/templates/task.html @@ -1,15 +1,23 @@ -

    Task Description

    +
    +

    Task Description

    - + -

    {{ .InnerTitle }}

    +

    Task Actions

    + Logs + Result +
    + +
    +

    {{ .InnerTitle }}

    -
    - {{ .Inner }} +
    + {{ .Inner }} +
    diff --git a/html/templates/styles.css b/html/templates/styles.css index 75ab70b..e6bf8fa 100644 --- a/html/templates/styles.css +++ b/html/templates/styles.css @@ -46,6 +46,10 @@ h6 { padding: 2rem; } +.task-description a { + font-weight: bold; +} + .label { font-weight: bold; } From 95fb0b317eb30dfc54ea5509601f86eab4ed5e39 Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Thu, 3 Mar 2022 14:40:03 +0100 Subject: [PATCH 12/13] Merge logs file with application/task file --- application/logs.go | 45 --------------------------------------------- application/task.go | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 37 insertions(+), 45 deletions(-) delete mode 100644 application/logs.go diff --git a/application/logs.go b/application/logs.go deleted file mode 100644 index 475812a..0000000 --- a/application/logs.go +++ /dev/null @@ -1,45 +0,0 @@ -package application - -import ( - "bytes" - "context" - "fmt" - "html/template" - "net/http" - - "github.com/docker/docker/pkg/stdcopy" - "github.com/factorysh/microdensity/html" - "github.com/factorysh/microdensity/task" - "github.com/robert-nix/ansihtml" -) - -func (a *Application) renderLogsPageForTask(ctx context.Context, t *task.Task, w http.ResponseWriter) error { - - reader, err := t.Logs(ctx, false) - if err != nil { - return err - } - - var buffer bytes.Buffer - _, err = stdcopy.StdCopy(&buffer, &buffer, reader) - if err != nil { - return err - } - - data, err := NewTaskPage(t, template.HTML(fmt.Sprintf("
    %s
    ", ansihtml.ConvertToHTML(buffer.Bytes()))), a.GitlabURL, "Task Logs", "terminal") - if err != nil { - return err - } - - p := html.Page{ - Domain: a.Domain, - Detail: fmt.Sprintf("%s / %s - logs", t.Service, t.Commit), - Partial: html.Partial{ - Template: taskTemplate, - Data: data, - }, - } - - w.WriteHeader(http.StatusOK) - return p.Render(w) -} diff --git a/application/task.go b/application/task.go index 8c79201..c6b079d 100644 --- a/application/task.go +++ b/application/task.go @@ -1,7 +1,11 @@ package application import ( + "bytes" + "context" "encoding/json" + "fmt" + "html/template" "net/http" "net/url" "os" @@ -9,10 +13,12 @@ import ( "github.com/docker/docker/pkg/stdcopy" _claims "github.com/factorysh/microdensity/claims" + "github.com/factorysh/microdensity/html" "github.com/factorysh/microdensity/task" "github.com/go-chi/chi/v5" "github.com/go-chi/render" "github.com/google/uuid" + "github.com/robert-nix/ansihtml" "go.uber.org/zap" ) @@ -267,3 +273,34 @@ func (a *Application) TaskLogsHandler(latest bool) func(http.ResponseWriter, *ht } } } + +func (a *Application) renderLogsPageForTask(ctx context.Context, t *task.Task, w http.ResponseWriter) error { + + reader, err := t.Logs(ctx, false) + if err != nil { + return err + } + + var buffer bytes.Buffer + _, err = stdcopy.StdCopy(&buffer, &buffer, reader) + if err != nil { + return err + } + + data, err := NewTaskPage(t, template.HTML(fmt.Sprintf("
    %s
    ", ansihtml.ConvertToHTML(buffer.Bytes()))), a.GitlabURL, "Task Logs", "terminal") + if err != nil { + return err + } + + p := html.Page{ + Domain: a.Domain, + Detail: fmt.Sprintf("%s / %s - logs", t.Service, t.Commit), + Partial: html.Partial{ + Template: taskTemplate, + Data: data, + }, + } + + w.WriteHeader(http.StatusOK) + return p.Render(w) +} From 679258ab16708f50a0c3ba01e43fa395fa121445 Mon Sep 17 00:00:00 2001 From: Wilfried OLLIVIER Date: Thu, 3 Mar 2022 15:33:30 +0100 Subject: [PATCH 13/13] Remove useless css code --- html/templates/styles.css | 8 -------- 1 file changed, 8 deletions(-) diff --git a/html/templates/styles.css b/html/templates/styles.css index e6bf8fa..b8a1065 100644 --- a/html/templates/styles.css +++ b/html/templates/styles.css @@ -92,11 +92,3 @@ h6 { overflow-x: scroll; overflow-y: hidden; } - -.stdout-prefix { - color: #900603; -} - -.stderr-prefix { - color: #028a0f; -}