Skip to content

Commit 30ad9ca

Browse files
authored
Merge pull request #40 from nginx-proxy/nocolor
feat: disable colored output if NO_COLOR is defined
2 parents 7cfd546 + b69ab4c commit 30ad9ca

File tree

9 files changed

+54
-20
lines changed

9 files changed

+54
-20
lines changed

.github/workflows/build-publish.yml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@ jobs:
7070
uses: docker/build-push-action@v5
7171
with:
7272
context: .
73+
build-args: FOREGO_VERSION=${{ steps.forego_version.outputs.VERSION }}
7374
platforms: linux/386,linux/amd64,linux/arm/v6,linux/arm/v7,linux/arm64,linux/ppc64le,linux/s390x
7475
file: Dockerfile.${{ matrix.base }}
7576
sbom: true

Dockerfile.alpine

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
ARG FOREGO_VERSION=main
2+
13
# Build forego
24
FROM --platform=$BUILDPLATFORM golang:1.21.5-alpine as go-builder
35

46
ENV CGO_ENABLED=0
57

6-
ARG TARGETOS TARGETARCH TARGETVARIANT
8+
ARG FOREGO_VERSION TARGETOS TARGETARCH TARGETVARIANT
79
ENV GOOS=$TARGETOS GOARCH=$TARGETARCH VARIANT=$TARGETVARIANT
810

911
RUN apk add --no-cache musl-dev
@@ -21,11 +23,14 @@ RUN set -eu; \
2123
*) [ -z "$VARIANT" ] ;; \
2224
esac; \
2325
go env | grep -E 'OS=|ARCH=|ARM=|AMD64='; \
24-
go build -o forego .; \
26+
go build -ldflags "-X main.buildVersion=${FOREGO_VERSION}" -o forego .; \
2527
go clean -cache
2628

2729
FROM --platform=$TARGETPLATFORM alpine:3.19.0
2830

31+
ARG FOREGO_VERSION
32+
ENV FOREGO_VERSION=${FOREGO_VERSION}
33+
2934
RUN apk add --no-cache bash
3035

3136
# Install Forego

Dockerfile.debian

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1+
ARG FOREGO_VERSION=main
2+
13
# Build forego
24
FROM --platform=$BUILDPLATFORM golang:1.21.5 as go-builder
35

46
ENV CGO_ENABLED=0
57

6-
ARG TARGETOS TARGETARCH TARGETVARIANT
8+
ARG FOREGO_VERSION TARGETOS TARGETARCH TARGETVARIANT
79
ENV GOOS=$TARGETOS GOARCH=$TARGETARCH VARIANT=$TARGETVARIANT
810

911
WORKDIR /build
@@ -19,11 +21,14 @@ RUN set -eu; \
1921
*) [ -z "$VARIANT" ] ;; \
2022
esac; \
2123
go env | grep -E 'OS=|ARCH=|ARM=|AMD64='; \
22-
go build -o forego .; \
24+
go build -ldflags "-X main.buildVersion=${FOREGO_VERSION}" -o forego .; \
2325
go clean -cache
2426

2527
FROM --platform=$TARGETPLATFORM debian:12.4-slim
2628

29+
ARG FOREGO_VERSION
30+
ENV FOREGO_VERSION=${FOREGO_VERSION}
31+
2732
# Install Forego
2833
COPY --from=go-builder /build/forego /usr/local/bin/forego
2934

Makefile

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,9 @@
11
BIN = forego
22
SRC = $(shell find . -name '*.go')
33

4+
TAG:=`git describe --tags`
5+
LDFLAGS:=-X main.buildVersion=$(TAG)
6+
47
.PHONY: all build clean lint test
58

69
all: build
@@ -20,4 +23,4 @@ test: lint get-deps build
2023
go test -v -race -cover ./...
2124

2225
$(BIN): $(SRC)
23-
go build -o $@
26+
go build -ldflags "$(LDFLAGS)" -o $@

go.mod

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,4 +7,9 @@ require (
77
github.com/subosito/gotenv v1.6.0
88
)
99

10-
require golang.org/x/text v0.12.0 // indirect
10+
require (
11+
golang.org/x/crypto v0.17.0 // indirect
12+
golang.org/x/sys v0.15.0 // indirect
13+
golang.org/x/term v0.15.0 // indirect
14+
golang.org/x/text v0.14.0 // indirect
15+
)

go.sum

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,14 @@ github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZb
1010
github.com/stretchr/testify v1.7.5 h1:s5PTfem8p8EbKQOctVV53k6jCJt3UX4IEJzwh+C324Q=
1111
github.com/subosito/gotenv v1.6.0 h1:9NlTDc1FTs4qu0DDq7AEtTPNw6SVm7uBMsUCUjABIf8=
1212
github.com/subosito/gotenv v1.6.0/go.mod h1:Dk4QP5c2W3ibzajGcXpNraDfq2IrhjMIvMSWPKKo0FU=
13+
golang.org/x/crypto v0.17.0 h1:r8bRNjWL3GshPW3gkd+RpvzWrZAwPS49OmTGZ/uhM4k=
14+
golang.org/x/crypto v0.17.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4=
15+
golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc=
16+
golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA=
17+
golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4=
18+
golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0=
1319
golang.org/x/text v0.12.0 h1:k+n5B8goJNdU7hSvEtMUz3d1Q6D/XW4COJSJR6fN0mc=
1420
golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE=
21+
golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ=
22+
golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU=
1523
gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA=

outlet.go

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ import (
1212
)
1313

1414
type OutletFactory struct {
15-
Padding int
15+
LeftFormatter string
1616

1717
sync.Mutex
1818
}
@@ -77,17 +77,20 @@ func (of *OutletFactory) WriteLine(left, right string, leftC, rightC ct.Color, i
7777
of.Lock()
7878
defer of.Unlock()
7979

80-
ct.ChangeColor(leftC, true, ct.None, false)
81-
formatter := fmt.Sprintf("%%-%ds | ", of.Padding)
82-
fmt.Printf(formatter, left)
80+
if colorize {
81+
ct.ChangeColor(leftC, true, ct.None, false)
82+
}
83+
fmt.Printf(of.LeftFormatter, left)
8384

84-
if isError {
85-
ct.ChangeColor(ct.Red, true, ct.None, true)
86-
} else {
87-
ct.ResetColor()
85+
if colorize {
86+
if isError {
87+
ct.ChangeColor(rightC, true, ct.None, true)
88+
} else {
89+
ct.ResetColor()
90+
}
8891
}
8992
fmt.Println(right)
90-
if isError {
93+
if colorize && isError {
9194
ct.ResetColor()
9295
}
9396
}

start.go

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ import (
1111
"sync"
1212
"syscall"
1313
"time"
14+
15+
"golang.org/x/crypto/ssh/terminal"
1416
)
1517

1618
const defaultPort = 5000
@@ -21,6 +23,7 @@ var flagConcurrency string
2123
var flagRestart bool
2224
var flagShutdownGraceTime int
2325
var envs envFiles
26+
var colorize bool
2427

2528
var cmdStart = &Command{
2629
Run: runStart,
@@ -88,6 +91,7 @@ func init() {
8891
cmdStart.Flag.IntVar(&flagShutdownGraceTime, "t", defaultShutdownGraceTime, "shutdown grace time")
8992
err := readConfigFile(".forego", &flagProcfile, &flagPort, &flagConcurrency, &flagShutdownGraceTime)
9093
handleError(err)
94+
colorize = os.Getenv("NO_COLOR") == "" && terminal.IsTerminal(int(os.Stdout.Fd()))
9195
}
9296

9397
func readConfigFile(config_path string, flagProcfile *string, flagPort *int, flagConcurrency *string, flagShutdownGraceTime *int) error {
@@ -277,7 +281,7 @@ func runStart(cmd *Command, args []string) {
277281
handleError(err)
278282

279283
of := NewOutletFactory()
280-
of.Padding = pf.LongestProcessName(concurrency)
284+
of.LeftFormatter = fmt.Sprintf("%%-%ds | ", pf.LongestProcessName(concurrency))
281285

282286
f := &Forego{
283287
outletFactory: of,

unix.go

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
// +build darwin freebsd linux netbsd openbsd
1+
//go:build darwin || freebsd || linux || netbsd || openbsd
22

33
package main
44

@@ -7,7 +7,7 @@ import (
77
"syscall"
88
)
99

10-
var osShell string = "bash"
10+
var osShell string = "/bin/sh"
1111

1212
const osHaveSigTerm = true
1313

@@ -16,8 +16,8 @@ func ShellInvocationCommand(interactive bool, root, command string) []string {
1616
if interactive {
1717
shellArgument = "-ic"
1818
}
19-
shellCommand := fmt.Sprintf("cd \"%s\"; source .profile 2>/dev/null; exec %s", root, command)
20-
return []string{osShell, shellArgument, shellCommand}
19+
shellCommand := fmt.Sprintf("cd \"$1\" || exit 66; test -f .profile && . ./.profile; exec %s", command)
20+
return []string{osShell, shellArgument, shellCommand, "sh", root}
2121
}
2222

2323
func (p *Process) PlatformSpecificInit() {

0 commit comments

Comments
 (0)