From f0068f0905069a032203869f33092475d79ff658 Mon Sep 17 00:00:00 2001 From: Thomas von Dein Date: Thu, 13 Nov 2025 20:11:00 +0100 Subject: [PATCH] repackage code to cmd --- Makefile | 104 ++++++++++++++++-- .../assets/fonts/NotoSans-Regular.ttf | Bin {src => cmd}/assets/shaders/row.kg | 0 .../assets/sprites/button-9slice1.png | Bin .../assets/sprites/button-9slice2.png | Bin .../assets/sprites/button-9slice3.png | Bin .../assets/sprites/checkbox-9slice1.png | Bin .../assets/sprites/checkbox-9slice2.png | Bin {src => cmd}/assets/src/button-9slice.ase | Bin {src => cmd}/assets/src/checkbox-9slice.ase | Bin {src => cmd}/camera.go | 2 +- {src => cmd}/config.go | 2 +- {src => cmd}/game.go | 2 +- {src => cmd}/generics.go | 2 +- {src => cmd}/grid.go | 2 +- {src => cmd}/keybindings.go | 2 +- {src => cmd}/loader-fonts.go | 2 +- {src => cmd}/loader-shaders.go | 2 +- {src => cmd}/loader-sprites.go | 2 +- {src => cmd}/menu.go | 2 +- {src => cmd}/options.go | 2 +- {src => cmd}/play.go | 2 +- {src => cmd}/rule.go | 2 +- {src => cmd}/scene.go | 2 +- {src => cmd}/system.go | 2 +- {src => cmd}/theme.go | 2 +- {src => cmd}/widgets.go | 2 +- src/main.go => main.go | 11 +- src/Makefile | 97 ---------------- 29 files changed, 118 insertions(+), 128 deletions(-) rename {src => cmd}/assets/fonts/NotoSans-Regular.ttf (100%) rename {src => cmd}/assets/shaders/row.kg (100%) rename {src => cmd}/assets/sprites/button-9slice1.png (100%) rename {src => cmd}/assets/sprites/button-9slice2.png (100%) rename {src => cmd}/assets/sprites/button-9slice3.png (100%) rename {src => cmd}/assets/sprites/checkbox-9slice1.png (100%) rename {src => cmd}/assets/sprites/checkbox-9slice2.png (100%) rename {src => cmd}/assets/src/button-9slice.ase (100%) rename {src => cmd}/assets/src/checkbox-9slice.ase (100%) rename {src => cmd}/camera.go (99%) rename {src => cmd}/config.go (99%) rename {src => cmd}/game.go (99%) rename {src => cmd}/generics.go (95%) rename {src => cmd}/grid.go (99%) rename {src => cmd}/keybindings.go (99%) rename {src => cmd}/loader-fonts.go (99%) rename {src => cmd}/loader-shaders.go (98%) rename {src => cmd}/loader-sprites.go (99%) rename {src => cmd}/menu.go (99%) rename {src => cmd}/options.go (99%) rename {src => cmd}/play.go (99%) rename {src => cmd}/rule.go (98%) rename {src => cmd}/scene.go (98%) rename {src => cmd}/system.go (93%) rename {src => cmd}/theme.go (99%) rename {src => cmd}/widgets.go (99%) rename src/main.go => main.go (76%) delete mode 100644 src/Makefile diff --git a/Makefile b/Makefile index 02f6ec1..3ef7807 100644 --- a/Makefile +++ b/Makefile @@ -1,15 +1,101 @@ -.PHONY all: -all: build +# Copyright © 2024 Thomas von Dein -.PHONY: build -build: - make -C src - mv src/golsky . +# This program is free software: you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation, either version 3 of the License, or +# (at your option) any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + + +# +# no need to modify anything below +tool = golsky +VERSION = $(shell grep VERSION main.go | head -1 | cut -d '"' -f2) +archs = darwin freebsd linux windows +PREFIX = /usr/local +UID = root +GID = 0 +HAVE_POD := $(shell pod2text -h 2>/dev/null) +#TAGS = -tags=ebitenginedebug + +all: buildlocal + + +buildlocal: + go build $(TAGS) -o $(tool) + +install: buildlocal + install -d -o $(UID) -g $(GID) $(PREFIX)/bin + install -d -o $(UID) -g $(GID) $(PREFIX)/man/man1 + install -o $(UID) -g $(GID) -m 555 $(tool) $(PREFIX)/sbin/ + install -o $(UID) -g $(GID) -m 444 $(tool).1 $(PREFIX)/man/man1/ -.PHONY: clean clean: - make -C src clean - rm -f dump* rect* + rm -rf $(tool) coverage.out testdata t/out + +test: clean + mkdir -p t/out + go test ./... $(ARGS) + +testlint: test lint + +lint: + golangci-lint run + +lint-full: + golangci-lint run --enable-all --exclude-use-default --disable exhaustivestruct,exhaustruct,depguard,interfacer,deadcode,golint,structcheck,scopelint,varcheck,ifshort,maligned,nosnakecase,godot,funlen,gofumpt,cyclop,noctx,gochecknoglobals,paralleltest + +testfuzzy: clean + go test -fuzz ./... $(ARGS) + +singletest: + @echo "Call like this: make singletest TEST=TestPrepareColumns ARGS=-v" + go test -run $(TEST) $(ARGS) + +cover-report: + go test ./... -cover -coverprofile=coverage.out + go tool cover -html=coverage.out + +goupdate: + go get -t -u=patch ./... + +buildall: + ./mkrel.sh $(tool) $(VERSION) + +release: buildall + gh release create $(VERSION) --generate-notes releases/* + +show-versions: buildlocal + @echo "### golsky version:" + @./golsky -V + + @echo + @echo "### go module versions:" + @go list -m all + + @echo + @echo "### go version used for building:" + @grep -m 1 go go.mod + +# lint: +# golangci-lint run -p bugs -p unused + +buildwasm: + env GOOS=js GOARCH=wasm go build -o $(tool).wasm $(LDFLAGS) . + +zipwasm: + zip -r openquell-$(SHORTVERSION).zip index.html $(tool).wasm wasm_exec.js + +wasm: buildwasm zipwasm + @ls -l $(tool)-$(SHORTVERSION).zip + .PHONY: profile profile: build diff --git a/src/assets/fonts/NotoSans-Regular.ttf b/cmd/assets/fonts/NotoSans-Regular.ttf similarity index 100% rename from src/assets/fonts/NotoSans-Regular.ttf rename to cmd/assets/fonts/NotoSans-Regular.ttf diff --git a/src/assets/shaders/row.kg b/cmd/assets/shaders/row.kg similarity index 100% rename from src/assets/shaders/row.kg rename to cmd/assets/shaders/row.kg diff --git a/src/assets/sprites/button-9slice1.png b/cmd/assets/sprites/button-9slice1.png similarity index 100% rename from src/assets/sprites/button-9slice1.png rename to cmd/assets/sprites/button-9slice1.png diff --git a/src/assets/sprites/button-9slice2.png b/cmd/assets/sprites/button-9slice2.png similarity index 100% rename from src/assets/sprites/button-9slice2.png rename to cmd/assets/sprites/button-9slice2.png diff --git a/src/assets/sprites/button-9slice3.png b/cmd/assets/sprites/button-9slice3.png similarity index 100% rename from src/assets/sprites/button-9slice3.png rename to cmd/assets/sprites/button-9slice3.png diff --git a/src/assets/sprites/checkbox-9slice1.png b/cmd/assets/sprites/checkbox-9slice1.png similarity index 100% rename from src/assets/sprites/checkbox-9slice1.png rename to cmd/assets/sprites/checkbox-9slice1.png diff --git a/src/assets/sprites/checkbox-9slice2.png b/cmd/assets/sprites/checkbox-9slice2.png similarity index 100% rename from src/assets/sprites/checkbox-9slice2.png rename to cmd/assets/sprites/checkbox-9slice2.png diff --git a/src/assets/src/button-9slice.ase b/cmd/assets/src/button-9slice.ase similarity index 100% rename from src/assets/src/button-9slice.ase rename to cmd/assets/src/button-9slice.ase diff --git a/src/assets/src/checkbox-9slice.ase b/cmd/assets/src/checkbox-9slice.ase similarity index 100% rename from src/assets/src/checkbox-9slice.ase rename to cmd/assets/src/checkbox-9slice.ase diff --git a/src/camera.go b/cmd/camera.go similarity index 99% rename from src/camera.go rename to cmd/camera.go index f5a2885..e3d043c 100644 --- a/src/camera.go +++ b/cmd/camera.go @@ -1,6 +1,6 @@ // this comes from the camera example but I enhanced it a little bit -package main +package cmd import ( "fmt" diff --git a/src/config.go b/cmd/config.go similarity index 99% rename from src/config.go rename to cmd/config.go index dcd994e..e0b2c5e 100644 --- a/src/config.go +++ b/cmd/config.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "errors" diff --git a/src/game.go b/cmd/game.go similarity index 99% rename from src/game.go rename to cmd/game.go index a21240f..40a090d 100644 --- a/src/game.go +++ b/cmd/game.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "github.com/hajimehoshi/ebiten/v2" diff --git a/src/generics.go b/cmd/generics.go similarity index 95% rename from src/generics.go rename to cmd/generics.go index c71e1da..1547c3f 100644 --- a/src/generics.go +++ b/cmd/generics.go @@ -1,4 +1,4 @@ -package main +package cmd // find an item in a list, generic variant func Contains[E comparable](s []E, v E) bool { diff --git a/src/grid.go b/cmd/grid.go similarity index 99% rename from src/grid.go rename to cmd/grid.go index 35de88a..e782c5b 100644 --- a/src/grid.go +++ b/cmd/grid.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "bufio" diff --git a/src/keybindings.go b/cmd/keybindings.go similarity index 99% rename from src/keybindings.go rename to cmd/keybindings.go index db68f60..23beda7 100644 --- a/src/keybindings.go +++ b/cmd/keybindings.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "image/color" diff --git a/src/loader-fonts.go b/cmd/loader-fonts.go similarity index 99% rename from src/loader-fonts.go rename to cmd/loader-fonts.go index e144762..79329ed 100644 --- a/src/loader-fonts.go +++ b/cmd/loader-fonts.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "log" diff --git a/src/loader-shaders.go b/cmd/loader-shaders.go similarity index 98% rename from src/loader-shaders.go rename to cmd/loader-shaders.go index e3d460f..147388e 100644 --- a/src/loader-shaders.go +++ b/cmd/loader-shaders.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "bytes" diff --git a/src/loader-sprites.go b/cmd/loader-sprites.go similarity index 99% rename from src/loader-sprites.go rename to cmd/loader-sprites.go index 4ef3e50..5611b3c 100644 --- a/src/loader-sprites.go +++ b/cmd/loader-sprites.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "embed" diff --git a/src/menu.go b/cmd/menu.go similarity index 99% rename from src/menu.go rename to cmd/menu.go index 909bdf8..f4715ea 100644 --- a/src/menu.go +++ b/cmd/menu.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "image/color" diff --git a/src/options.go b/cmd/options.go similarity index 99% rename from src/options.go rename to cmd/options.go index 5d44879..a935763 100644 --- a/src/options.go +++ b/cmd/options.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "image/color" diff --git a/src/play.go b/cmd/play.go similarity index 99% rename from src/play.go rename to cmd/play.go index 33aaba2..6158924 100644 --- a/src/play.go +++ b/cmd/play.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "fmt" diff --git a/src/rule.go b/cmd/rule.go similarity index 98% rename from src/rule.go rename to cmd/rule.go index 3f2ad05..d4b437c 100644 --- a/src/rule.go +++ b/cmd/rule.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "log" diff --git a/src/scene.go b/cmd/scene.go similarity index 98% rename from src/scene.go rename to cmd/scene.go index ac1818c..d4a86d1 100644 --- a/src/scene.go +++ b/cmd/scene.go @@ -1,4 +1,4 @@ -package main +package cmd import "github.com/hajimehoshi/ebiten/v2" diff --git a/src/system.go b/cmd/system.go similarity index 93% rename from src/system.go rename to cmd/system.go index d819ad7..c65b72b 100644 --- a/src/system.go +++ b/cmd/system.go @@ -1,4 +1,4 @@ -package main +package cmd import "runtime" diff --git a/src/theme.go b/cmd/theme.go similarity index 99% rename from src/theme.go rename to cmd/theme.go index 3c2e894..de3eaca 100644 --- a/src/theme.go +++ b/cmd/theme.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "fmt" diff --git a/src/widgets.go b/cmd/widgets.go similarity index 99% rename from src/widgets.go rename to cmd/widgets.go index e27a4c8..28edce0 100644 --- a/src/widgets.go +++ b/cmd/widgets.go @@ -1,4 +1,4 @@ -package main +package cmd import ( "image/color" diff --git a/src/main.go b/main.go similarity index 76% rename from src/main.go rename to main.go index b09a890..a1bb56a 100644 --- a/src/main.go +++ b/main.go @@ -8,6 +8,7 @@ import ( _ "net/http/pprof" + "codeberg.org/scip/golsky/cmd" "github.com/hajimehoshi/ebiten/v2" ) @@ -18,22 +19,22 @@ func main() { directstart = true } - config, err := ParseCommandline() + config, err := cmd.ParseCommandline() if err != nil { log.Fatal(err) } if config.ShowVersion { - fmt.Printf("This is golsky version %s\n", VERSION) + fmt.Printf("This is golsky version %s\n", cmd.VERSION) os.Exit(0) } - start := Play + start := cmd.Play if !directstart { - start = Menu + start = cmd.Menu config.DelayedStart = true } - game := NewGame(config, SceneName(start)) + game := cmd.NewGame(config, cmd.SceneName(start)) if config.ProfileFile != "" { // enable cpu profiling. Do NOT use q to stop the game but diff --git a/src/Makefile b/src/Makefile deleted file mode 100644 index c3beded..0000000 --- a/src/Makefile +++ /dev/null @@ -1,97 +0,0 @@ -# Copyright © 2024 Thomas von Dein - -# This program is free software: you can redistribute it and/or modify -# it under the terms of the GNU General Public License as published by -# the Free Software Foundation, either version 3 of the License, or -# (at your option) any later version. - -# This program is distributed in the hope that it will be useful, -# but WITHOUT ANY WARRANTY; without even the implied warranty of -# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -# GNU General Public License for more details. - -# You should have received a copy of the GNU General Public License -# along with this program. If not, see . - - -# -# no need to modify anything below -tool = golsky -VERSION = $(shell grep VERSION main.go | head -1 | cut -d '"' -f2) -archs = darwin freebsd linux windows -PREFIX = /usr/local -UID = root -GID = 0 -HAVE_POD := $(shell pod2text -h 2>/dev/null) -#TAGS = -tags=ebitenginedebug - -all: buildlocal - - -buildlocal: - go build $(TAGS) -o $(tool) - -install: buildlocal - install -d -o $(UID) -g $(GID) $(PREFIX)/bin - install -d -o $(UID) -g $(GID) $(PREFIX)/man/man1 - install -o $(UID) -g $(GID) -m 555 $(tool) $(PREFIX)/sbin/ - install -o $(UID) -g $(GID) -m 444 $(tool).1 $(PREFIX)/man/man1/ - -clean: - rm -rf $(tool) coverage.out testdata t/out - -test: clean - mkdir -p t/out - go test ./... $(ARGS) - -testlint: test lint - -lint: - golangci-lint run - -lint-full: - golangci-lint run --enable-all --exclude-use-default --disable exhaustivestruct,exhaustruct,depguard,interfacer,deadcode,golint,structcheck,scopelint,varcheck,ifshort,maligned,nosnakecase,godot,funlen,gofumpt,cyclop,noctx,gochecknoglobals,paralleltest - -testfuzzy: clean - go test -fuzz ./... $(ARGS) - -singletest: - @echo "Call like this: make singletest TEST=TestPrepareColumns ARGS=-v" - go test -run $(TEST) $(ARGS) - -cover-report: - go test ./... -cover -coverprofile=coverage.out - go tool cover -html=coverage.out - -goupdate: - go get -t -u=patch ./... - -buildall: - ./mkrel.sh $(tool) $(VERSION) - -release: buildall - gh release create $(VERSION) --generate-notes releases/* - -show-versions: buildlocal - @echo "### golsky version:" - @./golsky -V - - @echo - @echo "### go module versions:" - @go list -m all - - @echo - @echo "### go version used for building:" - @grep -m 1 go go.mod - -# lint: -# golangci-lint run -p bugs -p unused - -buildwasm: - env GOOS=js GOARCH=wasm go build -o $(tool).wasm $(LDFLAGS) . - -zipwasm: - zip -r openquell-$(SHORTVERSION).zip index.html $(tool).wasm wasm_exec.js - -wasm: buildwasm zipwasm - @ls -l $(tool)-$(SHORTVERSION).zip