Monorepo for Tangled

spindle/models: interface-ify WorkflowLogger

Signed-off-by: oppiliappan <me@oppi.li>

authored by

oppiliappan and committed by tangled.org dcbccab0 f9e255e0

+14 -10
+14 -10
spindle/models/logger.go
··· 9 "strings" 10 ) 11 12 - type WorkflowLogger struct { 13 file *os.File 14 encoder *json.Encoder 15 mask *SecretMask 16 } 17 18 - func NewWorkflowLogger(baseDir string, wid WorkflowId, secretValues []string) (*WorkflowLogger, error) { 19 path := LogFilePath(baseDir, wid) 20 - 21 file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) 22 if err != nil { 23 return nil, fmt.Errorf("creating log file: %w", err) 24 } 25 - 26 - return &WorkflowLogger{ 27 file: file, 28 encoder: json.NewEncoder(file), 29 mask: NewSecretMask(secretValues), ··· 35 return logFilePath 36 } 37 38 - func (l *WorkflowLogger) Close() error { 39 return l.file.Close() 40 } 41 42 - func (l *WorkflowLogger) DataWriter(idx int, stream string) io.Writer { 43 return &dataWriter{ 44 logger: l, 45 idx: idx, ··· 47 } 48 } 49 50 - func (l *WorkflowLogger) ControlWriter(idx int, step Step, stepStatus StepStatus) io.Writer { 51 return &controlWriter{ 52 logger: l, 53 idx: idx, ··· 57 } 58 59 type dataWriter struct { 60 - logger *WorkflowLogger 61 idx int 62 stream string 63 } ··· 75 } 76 77 type controlWriter struct { 78 - logger *WorkflowLogger 79 idx int 80 step Step 81 stepStatus StepStatus
··· 9 "strings" 10 ) 11 12 + type WorkflowLogger interface { 13 + Close() error 14 + DataWriter(idx int, stream string) io.Writer 15 + ControlWriter(idx int, step Step, stepStatus StepStatus) io.Writer 16 + } 17 + 18 + type FileWorkflowLogger struct { 19 file *os.File 20 encoder *json.Encoder 21 mask *SecretMask 22 } 23 24 + func NewFileWorkflowLogger(baseDir string, wid WorkflowId, secretValues []string) (*FileWorkflowLogger, error) { 25 path := LogFilePath(baseDir, wid) 26 file, err := os.OpenFile(path, os.O_CREATE|os.O_WRONLY|os.O_APPEND, 0644) 27 if err != nil { 28 return nil, fmt.Errorf("creating log file: %w", err) 29 } 30 + return &FileWorkflowLogger{ 31 file: file, 32 encoder: json.NewEncoder(file), 33 mask: NewSecretMask(secretValues), ··· 39 return logFilePath 40 } 41 42 + func (l *FileWorkflowLogger) Close() error { 43 return l.file.Close() 44 } 45 46 + func (l *FileWorkflowLogger) DataWriter(idx int, stream string) io.Writer { 47 return &dataWriter{ 48 logger: l, 49 idx: idx, ··· 51 } 52 } 53 54 + func (l *FileWorkflowLogger) ControlWriter(idx int, step Step, stepStatus StepStatus) io.Writer { 55 return &controlWriter{ 56 logger: l, 57 idx: idx, ··· 61 } 62 63 type dataWriter struct { 64 + logger *FileWorkflowLogger 65 idx int 66 stream string 67 } ··· 79 } 80 81 type controlWriter struct { 82 + logger *FileWorkflowLogger 83 idx int 84 step Step 85 stepStatus StepStatus