11 Commits

Author SHA1 Message Date
821703a989 fix badge 2025-11-26 20:49:48 +01:00
b7d04097bb fix more of them 2025-11-26 20:44:51 +01:00
718f30578d fix linting errors 2025-11-26 20:40:35 +01:00
dafcaad0ef fix linter deps 2025-11-26 20:29:06 +01:00
daef8fa8bc +y 2025-11-26 20:27:01 +01:00
086e1613a2 no sudo 2025-11-26 20:25:36 +01:00
97a8d4b210 add deps 2025-11-26 20:22:42 +01:00
42c971cac6 moving to codeberg 2025-11-26 20:11:38 +01:00
a3c1a80e15 fixed code spacing 2024-04-08 10:29:27 +02:00
868ad2c32d bump version 2024-03-26 18:40:01 +01:00
fb70f8284c fixed github path, rm mkrel 2024-03-26 18:35:11 +01:00
11 changed files with 153 additions and 112 deletions

65
.goreleaser.yaml Normal file
View File

@@ -0,0 +1,65 @@
# vim: set ts=2 sw=2 tw=0 fo=cnqoj
version: 2
before:
hooks:
- go mod tidy
gitea_urls:
api: https://codeberg.org/api/v1
download: https://codeberg.org
builds:
- env:
- CGO_ENABLED=0
goos:
- linux
- freebsd
archives:
- formats: [tar.gz]
# this name template makes the OS and Arch compatible with the results of `uname`.
name_template: >-
{{ .ProjectName }}_
{{- title .Os }}_
{{- if eq .Arch "amd64" }}x86_64
{{- else if eq .Arch "386" }}i386
{{- else }}{{ .Arch }}{{ end }}
{{- if .Arm }}v{{ .Arm }}{{ end }}_{{ .Tag }}
# use zip for windows archives
format_overrides:
- goos: windows
formats: [zip]
- goos: linux
formats: [tar.gz,binary]
files:
- src: "*.md"
strip_parent: true
- src: Makefile.dist
dst: Makefile
wrap_in_directory: true
changelog:
sort: asc
filters:
exclude:
- "^docs:"
- "^test:"
groups:
- title: Improved
regexp: '^.*?(feat|add|new)(\([[:word:]]+\))??!?:.+$'
order: 0
- title: Fixed
regexp: '^.*?(bug|fix)(\([[:word:]]+\))??!?:.+$'
order: 1
- title: Changed
order: 999
release:
header: "# Release Notes"
footer: >-
---
Full Changelog: [{{ .PreviousTag }}...{{ .Tag }}](https://codeberg.org/scip/kageviewer/compare/{{ .PreviousTag }}...{{ .Tag }})

31
.woodpecker/build.yaml Normal file
View File

@@ -0,0 +1,31 @@
matrix:
platform:
- linux/amd64
goversion:
- 1.24
labels:
platform: ${platform}
steps:
build:
when:
event: [push]
image: golang:${goversion}
commands:
- apt-get update
- apt-get install -y libasound2-dev libgl1-mesa-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev libxxf86vm-dev
- go get
- go build
linter:
when:
event: [push]
image: golang:${goversion}
commands:
- apt-get update
- apt-get install -y libasound2-dev libgl1-mesa-dev libxcursor-dev libxi-dev libxinerama-dev libxrandr-dev libxxf86vm-dev
- curl -sSfL https://raw.githubusercontent.com/golangci/golangci-lint/HEAD/install.sh | sh -s -- -b $(go env GOPATH)/bin v2.5.0
- golangci-lint --version
- golangci-lint run ./...
depends_on: [build]

15
.woodpecker/release.yaml Normal file
View File

@@ -0,0 +1,15 @@
# build release
labels:
platform: linux/amd64
steps:
goreleaser:
image: goreleaser/goreleaser
when:
event: [tag]
environment:
GITEA_TOKEN:
from_secret: DEPLOY_TOKEN
commands:
- goreleaser release --clean --verbose

View File

@@ -72,11 +72,8 @@ cover-report:
goupdate: goupdate:
go get -t -u=patch ./... go get -t -u=patch ./...
buildall:
./mkrel.sh $(tool) $(VERSION)
release: release:
gh release create v$(VERSION) --generate-notes releases/* gh release create v$(VERSION) --generate-notes
show-versions: buildlocal show-versions: buildlocal
@echo "### kageviewer version:" @echo "### kageviewer version:"

18
Makefile.dist Normal file
View File

@@ -0,0 +1,18 @@
# -*-make-*-
.PHONY: install all
tool = rpn
PREFIX = /usr/local
UID = root
GID = 0
all:
@echo "Type 'sudo make install' to install the tool."
@echo "To change prefix, type 'sudo make install PREFIX=/opt'"
install:
install -d -o $(UID) -g $(GID) $(PREFIX)/bin
install -d -o $(UID) -g $(GID) $(PREFIX)/share/doc
install -o $(UID) -g $(GID) -m 555 $(tool) $(PREFIX)/sbin/
install -o $(UID) -g $(GID) -m 444 *.md $(PREFIX)/share/doc/

View File

@@ -1,9 +1,10 @@
# kageviewer - Viewer for shaders written in Kage, similar to glslviewer # kageviewer - Viewer for shaders written in Kage, similar to glslviewer
![Logo](https://github.com/TLINDEN/kageviewer/blob/main/.github/assets/logo.png) ![Logo](https://codeberg.org/scip/kageviewer/raw/branch/main/.github/assets/logo.png)
[![License](https://img.shields.io/badge/license-GPL-blue.svg)](https://github.com/tlinden/kageviewer/blob/master/LICENSE) [![License](https://img.shields.io/badge/license-GPL-blue.svg)](https://codeberg.org/scip/kageviewer/raw/branch/main/LICENSE)
[![Go Report Card](https://goreportcard.com/badge/github.com/tlinden/kageviewer)](https://goreportcard.com/report/github.com/tlinden/kageviewer) [![Go Report Card](https://goreportcard.com/badge/codeberg.org/scip/kageviewer)](https://goreportcard.com/report/codeberg.org/scip/kageviewer)
[![status-badge](https://ci.codeberg.org/api/badges/15617/status.svg)](https://ci.codeberg.org/repos/15617)
This little tool can be used to test shaders written in This little tool can be used to test shaders written in
[Kage](https://ebitengine.org/en/documents/shader.html), a shader meta [Kage](https://ebitengine.org/en/documents/shader.html), a shader meta
@@ -15,7 +16,7 @@ will be printed to STDOUT. The same applies for images.
## Screenshot ## Screenshot
![Screenshot](https://github.com/TLINDEN/kageviewer/blob/main/.github/assets/screenshot.png) ![Screenshot](https://codeberg.org/scip/kageviewer/raw/branch/main/.github/assets/screenshot.png)
## Installation ## Installation
@@ -25,7 +26,7 @@ pre built binaries are provided.
### Installation with go ### Installation with go
```shell ```shell
go install github.com/tlinden/kageviewer@latest go install codeberg.org/scip/kageviewer@latest
``` ```
### Installation from source ### Installation from source
@@ -128,7 +129,7 @@ Possible parameters equal the long command line options.
# Report bugs # Report bugs
[Please open an issue](https://github.com/TLINDEN/kageviewer/issues). Thanks! [Please open an issue](https://codeberg.org/scip/kageviewer/issues). Thanks!
# License # License

View File

@@ -18,6 +18,7 @@ along with this program. If not, see <http://www.gnu.org/licenses/>.
package main package main
import ( import (
"errors"
"fmt" "fmt"
"os" "os"
"path/filepath" "path/filepath"
@@ -32,7 +33,7 @@ import (
) )
const ( const (
VERSION string = "0.0.5" VERSION string = "0.0.6"
Usage string = `This is kageviewer, a shader viewer. Usage string = `This is kageviewer, a shader viewer.
Usage: kageviewer [-vd] [-c <config file>] [-g geom] [-p geom] \ Usage: kageviewer [-vd] [-c <config file>] [-g geom] [-p geom] \
@@ -52,8 +53,7 @@ Options:
--map-slider <name> Map Slider uniform to <name> --map-slider <name> Map Slider uniform to <name>
--map-mouse <name> Map Mouse uniform to <name> --map-mouse <name> Map Mouse uniform to <name>
-d --debug Show debugging output -d --debug Show debugging output
-v --version Show program version -v --version Show program version`
`
) )
type Config struct { type Config struct {
@@ -81,7 +81,7 @@ func InitConfig() (*Config, error) {
// setup custom usage // setup custom usage
flagset := flag.NewFlagSet("config", flag.ContinueOnError) flagset := flag.NewFlagSet("config", flag.ContinueOnError)
flagset.Usage = func() { flagset.Usage = func() {
fmt.Println(Usage) _, _ = fmt.Println(Usage)
os.Exit(0) os.Exit(0)
} }
@@ -165,13 +165,13 @@ func SanitiyCheck(conf *Config) error {
geo := strings.Split(conf.Geo, "x") geo := strings.Split(conf.Geo, "x")
if len(geo) != 2 { if len(geo) != 2 {
return fmt.Errorf(geoerr) return errors.New(geoerr)
} }
w, errw := strconv.Atoi(geo[0]) w, errw := strconv.Atoi(geo[0])
h, errh := strconv.Atoi(geo[1]) h, errh := strconv.Atoi(geo[1])
if errw != nil || errh != nil { if errw != nil || errh != nil {
return fmt.Errorf(geoerr) return errors.New(geoerr)
} }
conf.Width = w conf.Width = w
@@ -181,13 +181,13 @@ func SanitiyCheck(conf *Config) error {
pos := strings.Split(conf.Posision, "x") pos := strings.Split(conf.Posision, "x")
if len(geo) != 2 { if len(geo) != 2 {
return fmt.Errorf(poserr) return errors.New(poserr)
} }
x, errx := strconv.Atoi(pos[0]) x, errx := strconv.Atoi(pos[0])
y, erry := strconv.Atoi(pos[1]) y, erry := strconv.Atoi(pos[1])
if errx != nil || erry != nil { if errx != nil || erry != nil {
return fmt.Errorf(poserr) return errors.New(poserr)
} }
conf.X = x conf.X = x
@@ -195,11 +195,3 @@ func SanitiyCheck(conf *Config) error {
return nil return nil
} }
func fileExists(filename string) bool {
info, err := os.Stat(filename)
if os.IsNotExist(err) {
return false
}
return !info.IsDir()
}

View File

@@ -46,7 +46,9 @@ func LoadImage(name string) (*ebiten.Image, error) {
if err != nil { if err != nil {
return nil, err return nil, err
} }
defer fd.Close() defer func() {
_ = fd.Close()
}()
img, _, err := image.Decode(fd) img, _, err := image.Decode(fd)
if err != nil { if err != nil {
@@ -89,7 +91,7 @@ func (game *Game) Init() error {
game.Shader = shader game.Shader = shader
// user can customize TPS // user can customize TPS
ebiten.SetMaxTPS(game.Conf.TPS) ebiten.SetTPS(game.Conf.TPS)
// setup shader bounds, by default we use window size // setup shader bounds, by default we use window size
game.ShaderBounds = image.Rect(0, 0, game.Conf.Width, game.Conf.Height) game.ShaderBounds = image.Rect(0, 0, game.Conf.Width, game.Conf.Height)

2
go.mod
View File

@@ -1,4 +1,4 @@
module github.com/TLINDEN/kageviewer module codeberg.org/scip/kageviewer
go 1.22 go 1.22

View File

@@ -64,7 +64,7 @@ func main() {
ebiten.SetWindowSize(game.Conf.Width, game.Conf.Height) ebiten.SetWindowSize(game.Conf.Width, game.Conf.Height)
ebiten.SetWindowTitle("Kage shader viewer") ebiten.SetWindowTitle("Kage shader viewer")
ebiten.SetWindowResizable(true) ebiten.SetWindowResizingMode(ebiten.WindowResizingModeEnabled)
if err := ebiten.RunGame(game); err != nil { if err := ebiten.RunGame(game); err != nil {
log.Fatal(err) log.Fatal(err)

View File

@@ -1,80 +0,0 @@
#!/bin/bash
# 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 <http://www.gnu.org/licenses/>.
# get list with: go tool dist list
DIST="darwin/amd64
freebsd/amd64
linux/amd64
netbsd/amd64
openbsd/amd64
windows/amd64
freebsd/arm64
linux/arm64
netbsd/arm64
openbsd/arm64
windows/arm64"
DIST="linux/amd64
windows/amd64
windows/arm64"
tool="$1"
version="$2"
if test -z "$version"; then
echo "Usage: $0 <tool name> <release version>"
exit 1
fi
rm -rf releases
mkdir -p releases
for D in $DIST; do
os=${D/\/*/}
arch=${D/*\//}
binfile="releases/${tool}-${os}-${arch}-${version}"
if test "$os" = "windows"; then
binfile="${binfile}.exe"
fi
tardir="${tool}-${os}-${arch}-${version}"
tarfile="releases/${tool}-${os}-${arch}-${version}.tar.gz"
set -x
#GOOS=${os} GOARCH=${arch} go build -tags osusergo,netgo -ldflags "-extldflags=-static" -o ${binfile}
GOOS=${os} GOARCH=${arch} go build -o ${binfile}
mkdir -p ${tardir}
cp ${binfile} README.md LICENSE ${tardir}/
echo 'tool = kageviewer
PREFIX = /usr/local
UID = root
GID = 0
install:
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/' > ${tardir}/Makefile
tar cpzf ${tarfile} ${tardir}
sha256sum ${binfile} | cut -d' ' -f1 > ${binfile}.sha256
sha256sum ${tarfile} | cut -d' ' -f1 > ${tarfile}.sha256
rm -rf ${tardir}
set +x
done