Skip to content

Commit de8ef49

Browse files
committed
Stamp the binary with git version shortform
1 parent 3e16480 commit de8ef49

File tree

3 files changed

+47
-22
lines changed

3 files changed

+47
-22
lines changed

Makefile

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ builder=builder-$(PROJECT)
1515
GIT ?= $(shell which git)
1616
PWD ?= $(shell pwd)
1717

18+
1819
OCI_IMAGE_CREATED="$(shell date -u +"%Y-%m-%dT%H:%M:%SZ")"
1920
OCI_IMAGE_REVISION?="$(shell $(GIT) rev-parse HEAD)"
2021
OCI_IMAGE_VERSION?="$(shell $(GIT) describe --always --long --tags --dirty)"
@@ -28,10 +29,13 @@ oci-version-point=$(shell echo $(OCI_IMAGE_VERSION) | cut -f 2 -d v | cut -f 1 -
2829
oci-version-minor=$(shell echo $(oci-version-point) | cut -f 1-2 -d .)
2930
oci-version-major=$(shell echo $(oci-version-point) | cut -f 1 -d .)
3031

32+
LD_FLAGS="-X 'main.gitVersion=$(OCI_IMAGE_VERSION)'"
33+
3134
.PHONY: version mod go-telnet-local localdev productiondev rickrolld run container runcontainer clean buildx release
3235

3336
version:
3437
@echo "OCI Version: $(OCI_IMAGE_VERSION)"
38+
@echo "LD_FLAGS: $(LD_FLAGS)"
3539

3640
mod:
3741
go get -u github.com/nugget/go-telnet
@@ -53,7 +57,7 @@ productiondev:
5357
rickrolld:
5458
mkdir -p dist
5559
go mod tidy
56-
cd rickrolld && CGO_ENABLED=0 go build -o ../dist/$(BINARYNAME) .
60+
cd rickrolld && CGO_ENABLED=0 go build -ldflags=$(LD_FLAGS) -o ../dist/$(BINARYNAME) .
5761

5862
run: rickrolld
5963
./dist/$(BINARYNAME) -v

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -67,7 +67,7 @@ These environment variables can be set to override default values:
6767

6868
```.env
6969
# string form of address (for example, "192.0.2.1:25", "[2001:db8::1]:80")
70-
RICKROLL=LISTEN_ADDR=:23
70+
RICKROLL_LISTEN_ADDR=:23
7171
7272
# path to the lyrics file
7373
RICKROLL_LYRICS_FILENAME=lyrics.dat

rickrolld/main.go

Lines changed: 41 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -25,21 +25,22 @@ var (
2525
logLevel *slog.LevelVar
2626
target string
2727
matchLogger *slog.Logger
28-
29-
filename string = "lyrics.dat"
30-
delayWord time.Duration = 200 * time.Millisecond
31-
delayLine time.Duration = 1000 * time.Millisecond
32-
3328
lyricsBytes []byte
29+
30+
listenAddr string = ":23"
31+
lyricsFilename string = "lyrics.dat"
32+
gitVersion string = "unknown"
33+
delayWord time.Duration = 200 * time.Millisecond
34+
delayLine time.Duration = 1000 * time.Millisecond
3435
)
3536

36-
func LoadLyricsFromFile(filename string) (err error) {
37-
lyricsBytes, err = os.ReadFile(filename)
37+
func LoadLyricsFromFile(lyricsFilename string) (err error) {
38+
lyricsBytes, err = os.ReadFile(lyricsFilename)
3839
if err != nil {
3940
return err
4041
}
4142

42-
logger.Info("loaded lyrics from file", "file", filename, "bytes", len(lyricsBytes))
43+
logger.Info("loaded lyrics from file", "file", lyricsFilename, "bytes", len(lyricsBytes))
4344

4445
return nil
4546
}
@@ -248,7 +249,7 @@ func (handler internalTelnetHandler) ServeTELNET(ctx telnet.Context, w telnet.Wr
248249
func LaunchTelnetServer(ctx context.Context) error {
249250
logger.Info("starting telnet server")
250251

251-
err := telnet.ListenAndServe(":23", TelnetHandler)
252+
err := telnet.ListenAndServe(listenAddr, TelnetHandler)
252253
if err != nil {
253254
return err
254255
}
@@ -261,17 +262,22 @@ func run(ctx context.Context, stdout io.Writer, stderr io.Writer, getenv func(st
261262
defer stop()
262263

263264
setupLogger(ctx, stdout)
265+
setupEnv()
264266

265267
commit, buildDate, _ := getBuildInfo()
266268

269+
logger.Info("initializing rickrolld",
270+
"gitVersion", gitVersion,
271+
"buildDate", buildDate,
272+
"commit", commit)
273+
267274
logger.Info("starting rickrolld",
268-
"filename", filename,
275+
"listenAddr", listenAddr,
276+
"lyricsFilename", lyricsFilename,
269277
"delayWord", delayWord,
270-
"delayLine", delayLine,
271-
"commit", commit,
272-
"buildDate", buildDate)
278+
"delayLine", delayLine)
273279

274-
err = LoadLyricsFromFile(filename)
280+
err = LoadLyricsFromFile(lyricsFilename)
275281
if err != nil {
276282
return err
277283
}
@@ -281,19 +287,22 @@ func run(ctx context.Context, stdout io.Writer, stderr io.Writer, getenv func(st
281287
return err
282288
}
283289

284-
logger.Info("Done")
290+
logger.Info("stopping rickrolld",
291+
"gitVersion", gitVersion,
292+
"buildDate", buildDate,
293+
"commit", commit)
285294

286295
return nil
287296
}
288297

289-
func getBuildInfo() (commit, buildDate string, dirty bool) {
298+
func getBuildInfo() (commit, buildDate string, modified bool) {
290299
buildInfo, ok := debug.ReadBuildInfo()
291300

292301
if !ok {
293302
return
294303
}
295304

296-
dirty = false
305+
modified = false
297306

298307
for _, setting := range buildInfo.Settings {
299308
switch setting.Key {
@@ -302,13 +311,25 @@ func getBuildInfo() (commit, buildDate string, dirty bool) {
302311
case "vcs.time":
303312
buildDate = setting.Value
304313
case "vcs.modified":
305-
dirty = true
314+
modified = true
306315
}
307316
}
308317

309318
return
310319
}
311320

321+
func setupEnv() {
322+
if e := os.Getenv("RICKROLL_LISTEN_ADDR"); e != "" {
323+
listenAddr = e
324+
logger.Info("listenAddr loaded from env", "listenAddr", listenAddr)
325+
}
326+
327+
if e := os.Getenv("RICKROLL_LYRICS_FILENAME"); e != "" {
328+
lyricsFilename = e
329+
logger.Info("lyricsFilename loaded from env", "lyricsFilename", lyricsFilename)
330+
}
331+
}
332+
312333
func setupLogger(ctx context.Context, stdout io.Writer) {
313334
logLevel = new(slog.LevelVar)
314335

@@ -320,7 +341,7 @@ func setupLogger(ctx context.Context, stdout io.Writer) {
320341
}
321342

322343
func cleanup() {
323-
logger.Info("Interrupt detected, exiting")
344+
logger.Info("interrupting rickrolld", "gitVersion", gitVersion)
324345
}
325346

326347
// main does as little as we can get away with.
@@ -330,7 +351,7 @@ func main() {
330351
go func() {
331352
<-c
332353
cleanup()
333-
os.Exit(1)
354+
os.Exit(0)
334355
}()
335356

336357
ctx := context.Background()

0 commit comments

Comments
 (0)