Enable plain TTY logging mode + loose-data processing

This commit is contained in:
2026-05-14 15:11:08 +02:00
parent 2cef662e8e
commit 9384d905d1
5 changed files with 115 additions and 28 deletions
+17 -3
View File
@@ -139,6 +139,20 @@ func isInteractiveTTY(w io.Writer) bool {
return (info.Mode() & os.ModeCharDevice) != 0
}
func spinnerEnabledFor(w io.Writer, level logLevel) bool {
mode := strings.TrimSpace(strings.ToLower(os.Getenv("SOW_TOOLS_TTY_MODE")))
switch mode {
case "plain", "off", "0", "false", "no":
return false
case "spinner", "on", "1", "true", "yes":
return level == logLevelNormal && isInteractiveTTY(w)
case "", "auto":
return isInteractiveTTY(w) && strings.TrimSpace(os.Getenv("CI")) == "" && level == logLevelNormal
default:
return isInteractiveTTY(w) && strings.TrimSpace(os.Getenv("CI")) == "" && level == logLevelNormal
}
}
var commands = []command{
{
name: "build",
@@ -605,7 +619,7 @@ func newProjectConsole(ctx context, p *project.Project, commandName string) *pro
commandName: commandName,
commandLabel: projectCommandLabel(commandName),
level: ctx.logLevel,
spinnerEnabled: isInteractiveTTY(ctx.stderr) && strings.TrimSpace(os.Getenv("CI")) == "" && ctx.logLevel == logLevelNormal,
spinnerEnabled: spinnerEnabledFor(ctx.stderr, ctx.logLevel),
}
}
@@ -787,7 +801,7 @@ func newBuildHAKConsole(ctx context, p *project.Project, opts buildHAKOptions) *
projectName: p.Config.Module.Name,
planOnly: opts.planOnly,
level: opts.logLevel,
spinnerEnabled: isInteractiveTTY(ctx.stderr) && strings.TrimSpace(os.Getenv("CI")) == "" && opts.logLevel == logLevelNormal,
spinnerEnabled: spinnerEnabledFor(ctx.stderr, opts.logLevel),
}
}
@@ -962,7 +976,7 @@ func newTopdataConsole(ctx context, p *project.Project, commandName string) *top
commandName: commandName,
commandLabel: topdataCommandLabel(commandName),
level: ctx.logLevel,
spinnerEnabled: isInteractiveTTY(ctx.stderr) && strings.TrimSpace(os.Getenv("CI")) == "" && ctx.logLevel == logLevelNormal,
spinnerEnabled: spinnerEnabledFor(ctx.stderr, ctx.logLevel),
}
}