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