refactor: restructure taskfile into separate includes

This commit is contained in:
Brandon T. Kowalski
2026-03-28 00:39:24 -04:00
parent a2b2e168b2
commit 468352f79a
7 changed files with 359 additions and 373 deletions
+37 -373
View File
@@ -1,5 +1,15 @@
version: '3'
output: prefixed
includes:
build: ./taskfiles/build.yml
code: ./taskfiles/code.yml
deploy: ./taskfiles/deploy.yml
i18n: ./taskfiles/i18n.yml
media: ./taskfiles/media.yml
package: ./taskfiles/package.yml
vars:
IMAGE_NAME: grout-build
CONTAINER_NAME: grout-extract
@@ -9,396 +19,50 @@ vars:
tasks:
build-arm64:
desc: Build for ARM64
default:
desc: List available tasks
cmds:
- rm -rf build64
- docker buildx build {{.NO_CACHE}} --platform=linux/arm64 --build-arg GITHUB_ACTIONS=false {{.VERSION_ARG}} --label {{.LABEL}} --load -t {{.IMAGE_NAME}} -f docker/Dockerfile .
- task --list
silent: true
build-amd64:
desc: Build for AMD64 (x86_64)
clean:
desc: Remove build artifacts and dangling Docker images
cmds:
- rm -rf build64
- docker buildx build {{.NO_CACHE}} --load --platform=linux/amd64 --build-arg GITHUB_ACTIONS=false {{.VERSION_ARG}} --label {{.LABEL}} -t {{.IMAGE_NAME}}-amd64 -f docker/Dockerfile .
silent: true
build-x86:
desc: Build for x86 (32-bit)
cmds:
- rm -rf buildx86
- docker buildx build {{.NO_CACHE}} --load --platform=linux/386 --build-arg GITHUB_ACTIONS=false {{.VERSION_ARG}} --label {{.LABEL}} -t {{.IMAGE_NAME}}-x86 -f docker/Dockerfile .
silent: true
build-arm32:
desc: Build for ARM32
cmds:
- rm -rf build32
- docker buildx build {{.NO_CACHE}} --platform=linux/arm/v7 --build-arg GITHUB_ACTIONS=false {{.VERSION_ARG}} --label {{.LABEL}} --load -t {{.IMAGE_NAME}} -f docker/32.Dockerfile .
silent: true
build-arm64-local:
desc: Build for ARM64 using local gabagool workspace
cmds:
- rm -rf build64
- cd .. && docker buildx build {{.NO_CACHE}} --platform=linux/arm64 --build-arg USE_LOCAL_GABAGOOL=true --build-arg GITHUB_ACTIONS=false {{.VERSION_ARG}} --label {{.LABEL}} --load -f grout/docker/Dockerfile -t {{.IMAGE_NAME}} .
silent: true
build-arm32-local:
desc: Build for ARM32 using local gabagool workspace
cmds:
- rm -rf build32
- cd .. && docker buildx build {{.NO_CACHE}} --platform=linux/arm/v7 --build-arg USE_LOCAL_GABAGOOL=true --build-arg GITHUB_ACTIONS=false {{.VERSION_ARG}} --label {{.LABEL}} --load -f grout/docker/32.Dockerfile -t {{.IMAGE_NAME}} .
silent: true
extract-arm64:
desc: Extract binary and libraries from ARM64 Docker image
cmds:
- mkdir -p build64/lib
- docker rm {{.CONTAINER_NAME}} 2>/dev/null || true
- docker create --name {{.CONTAINER_NAME}} --label {{.LABEL}} {{.IMAGE_NAME}}
- docker cp {{.CONTAINER_NAME}}:/build/grout build64/grout
- docker cp {{.CONTAINER_NAME}}:/usr/lib/aarch64-linux-gnu/libSDL2_gfx-1.0.so.0.0.2 build64/lib/libSDL2_gfx-1.0.so.0
- docker rm {{.CONTAINER_NAME}}
silent: true
extract-amd64:
desc: Extract binary and libraries from AMD64 Docker image
cmds:
- mkdir -p build/lib
- docker rm {{.CONTAINER_NAME}} 2>/dev/null || true
- docker create --name {{.CONTAINER_NAME}} --label {{.LABEL}} {{.IMAGE_NAME}}-amd64
- docker cp {{.CONTAINER_NAME}}:/build/grout build/grout
- docker cp {{.CONTAINER_NAME}}:/usr/lib/x86_64-linux-gnu/libSDL2_gfx-1.0.so.0.0.2 build/lib/libSDL2_gfx-1.0.so.0
- docker rm {{.CONTAINER_NAME}}
silent: true
extract-x86:
desc: Extract binary and libraries from x86 Docker image
cmds:
- mkdir -p buildx86/lib
- docker rm {{.CONTAINER_NAME}} 2>/dev/null || true
- docker create --name {{.CONTAINER_NAME}} --label {{.LABEL}} {{.IMAGE_NAME}}-x86
- docker cp {{.CONTAINER_NAME}}:/build/grout buildx86/grout
- docker cp {{.CONTAINER_NAME}}:/usr/lib/i386-linux-gnu/libSDL2_gfx-1.0.so.0.0.2 buildx86/lib/libSDL2_gfx-1.0.so.0
- docker rm {{.CONTAINER_NAME}}
silent: true
extract-arm32:
desc: Extract binary and libraries from ARM32 Docker image
cmds:
- mkdir -p build32/lib
- docker rm {{.CONTAINER_NAME}} 2>/dev/null || true
- docker create --name {{.CONTAINER_NAME}} --label {{.LABEL}} {{.IMAGE_NAME}}
- docker cp {{.CONTAINER_NAME}}:/build/grout build32/grout
# - docker cp {{.CONTAINER_NAME}}:/usr/lib/arm-linux-gnueabihf/libSDL2_gfx-1.0.so.0.0.2 build32/lib/libSDL2_gfx-1.0.so.0 # TODO replace with custom SDL build for Miyoo
- docker rm {{.CONTAINER_NAME}}
silent: true
package:
desc: Package for all platforms
deps: [ package-next, package-muos, package-knulli, package-spruce, package-rocknix, package-trimui, package-allium, package-onion, package-minui, package-minui-arm32, package-batocera, package-batocera-x86, package-batocera-amd64 ]
silent: true
package-next:
desc: Package for NextUI
cmds:
- rm -rf dist/Grout.pak
- mkdir -p dist/Grout.pak/lib
- cp build64/grout scripts/NextUI/launch.sh README.md LICENSE pak.json dist/Grout.pak
- cp -R build64/lib/* dist/Grout.pak/lib/
- chmod a+x dist/Grout.pak/grout dist/Grout.pak/launch.sh
silent: true
package-muos:
desc: Package for muOS
cmds:
- rm -rf dist/muOS dist/Grout.muxapp
- mkdir -p dist/muOS/Grout/lib
- cp build64/grout scripts/muOS/mux_launch.sh README.md LICENSE dist/muOS/Grout
- cp -R build64/lib/* dist/muOS/Grout/lib/
- cp -R scripts/muOS/resources dist/muOS/Grout/
- chmod a+x dist/muOS/Grout/grout dist/muOS/Grout/mux_launch.sh
- cd dist/muOS && zip -r ../Grout.muxapp Grout
silent: true
package-knulli:
desc: Package for Knulli
cmds:
- rm -rf dist/Knulli
- mkdir -p dist/Knulli/Grout/lib
- cp build64/grout scripts/Knulli/Grout.sh scripts/Knulli/logo.png README.md LICENSE dist/Knulli/Grout
- cp -R build64/lib/* dist/Knulli/Grout/lib/
- chmod a+x dist/Knulli/Grout/grout dist/Knulli/Grout/Grout.sh
silent: true
package-spruce:
desc: Package for Spruce
cmds:
- rm -rf dist/Spruce
- mkdir -p dist/Spruce/Grout/grout/lib
- cp scripts/Spruce/* README.md LICENSE dist/Spruce/Grout
- cp build64/grout dist/Spruce/Grout/grout
- cp -R build64/lib/* dist/Spruce/Grout/grout/lib/
- chmod a+x dist/Spruce/Grout/grout/grout dist/Spruce/Grout/launch.sh dist/Spruce/Grout/launch-universal.sh
silent: true
package-allium:
desc: Package for Allium
cmds:
- rm -rf dist/Allium
- mkdir -p dist/Allium/Grout.pak/grout/lib
- cp -R scripts/Allium/* dist/Allium/Grout.pak
- cp build32/grout README.md LICENSE dist/Allium/Grout.pak/grout
- cp -R vendored/miyoo/* dist/Allium/Grout.pak/grout/lib/
silent: true
package-onion:
desc: Package for Onion
cmds:
- rm -rf dist/Onion
- mkdir -p dist/Onion/Grout/grout/lib
- cp -R scripts/Onion/* dist/Onion/Grout
- cp build32/grout README.md LICENSE dist/Onion/Grout/grout
- cp -R vendored/miyoo/* dist/Onion/Grout/grout/lib/
silent: true
package-rocknix:
desc: Package for ROCKNIX
cmds:
- rm -rf dist/ROCKNIX
- mkdir -p dist/ROCKNIX/Grout/lib
- cp scripts/ROCKNIX/Grout.sh dist/ROCKNIX/
- cp build64/grout scripts/ROCKNIX/logo.png README.md LICENSE dist/ROCKNIX/Grout/
- cp -R build64/lib/* dist/ROCKNIX/Grout/lib/
- chmod a+x dist/ROCKNIX/Grout/grout dist/ROCKNIX/Grout.sh
silent: true
package-trimui:
desc: Package for Trimui
cmds:
- rm -rf dist/Trimui
- mkdir -p dist/Trimui/Grout/grout/lib
- cp scripts/Trimui/* README.md LICENSE dist/Trimui/Grout
- cp build64/grout dist/Trimui/Grout/grout
- cp -R build64/lib/* dist/Trimui/Grout/grout/lib/
- chmod a+x dist/Trimui/Grout/grout/grout dist/Trimui/Grout/launch.sh
silent: true
package-minui:
desc: Package MinUI for ARM64
cmds:
- rm -rf dist/MinUI-arm64
- mkdir -p dist/MinUI-arm64/Grout/lib
- cp build64/grout scripts/MinUI/launch.sh README.md LICENSE dist/MinUI-arm64/Grout
- cp -R build64/lib/* dist/MinUI-arm64/Grout/lib/
- chmod a+x dist/MinUI-arm64/Grout/grout dist/MinUI-arm64/Grout/launch.sh
silent: true
package-minui-arm32:
desc: Package MinUI for ARM32
cmds:
- rm -rf dist/MinUI-arm32
- mkdir -p dist/MinUI-arm32/Grout/lib
- cp build32/grout scripts/MinUI/launch.sh README.md LICENSE dist/MinUI-arm32/Grout
- cp -R vendored/miyoo/* dist/MinUI-arm32/Grout/lib/
- chmod a+x dist/MinUI-arm32/Grout/grout dist/MinUI-arm32/Grout/launch.sh
silent: true
package-batocera:
desc: Package for Batocera (ARM64)
cmds:
- rm -rf dist/Batocera-arm64
- mkdir -p dist/Batocera-arm64/Grout/lib
- cp scripts/Batocera/Grout.sh dist/Batocera-arm64/
- cp build64/grout README.md LICENSE dist/Batocera-arm64/Grout/
- cp -R build64/lib/* dist/Batocera-arm64/Grout/lib/
- chmod a+x dist/Batocera-arm64/Grout/grout dist/Batocera-arm64/Grout.sh
silent: true
package-batocera-x86:
desc: Package for Batocera (x86 32-bit)
cmds:
- rm -rf dist/Batocera-x86
- mkdir -p dist/Batocera-x86/Grout/lib
- cp scripts/Batocera/Grout.sh dist/Batocera-x86/
- cp buildx86/grout README.md LICENSE dist/Batocera-x86/Grout/
- cp -R buildx86/lib/* dist/Batocera-x86/Grout/lib/
- chmod a+x dist/Batocera-x86/Grout/grout dist/Batocera-x86/Grout.sh
silent: true
package-batocera-amd64:
desc: Package for Batocera (AMD64/x86_64)
cmds:
- rm -rf dist/Batocera-amd64
- mkdir -p dist/Batocera-amd64/Grout/lib
- cp scripts/Batocera/Grout.sh dist/Batocera-amd64/
- cp build/grout README.md LICENSE dist/Batocera-amd64/Grout/
- cp -R build/lib/* dist/Batocera-amd64/Grout/lib/
- chmod a+x dist/Batocera-amd64/Grout/grout dist/Batocera-amd64/Grout.sh
silent: true
batocera-amd64:
desc: Build and package Batocera for AMD64 (x86_64 PC)
cmds:
- task: build-amd64
- task: extract-amd64
- task: package-batocera-amd64
- rm -rf build64 build buildx86 build32 dist *.log
- docker image prune --filter "label={{.LABEL}}" -f >/dev/null 2>&1 || true
silent: true
all:
desc: Build and package for all platforms
vars:
LOCAL: "false"
deps:
- task: build:arm64
vars: { LOCAL: "{{.LOCAL}}" }
- task: build:arm32
vars: { LOCAL: "{{.LOCAL}}" }
- task: build:x86
- task: build:amd64
cmds:
- task: build-arm64
- task: extract-arm64
- task: build-arm32
- task: extract-arm32
- task: package
- task: package:all
silent: true
all-arm64:
desc: Build and package for all ARM64 platforms
cmds:
- task: build-arm64
- task: extract-arm64
- task: package-next
- task: package-muos
- task: package-knulli
- task: package-spruce
- task: package-rocknix
- task: package-trimui
- task: build:arm64
- task: package:next
- task: package:muos
- task: package:knulli
- task: package:spruce
- task: package:rocknix
- task: package:trimui
silent: true
all-arm32:
desc: Build and package for all ARM32 platforms
cmds:
- task: build-arm32
- task: extract-arm32
- task: package-allium
- task: package-onion
silent: true
all-local:
desc: Build (with local gabagool) and package for all platforms
cmds:
- task: build-arm64-local
- task: extract-arm64
- task: build-arm32-local
- task: extract-arm32
- task: package
silent: true
adb-next:
desc: Deploy to NextUI device via ADB
cmds:
- adb shell rm -rf /mnt/SDCARD/Tools/tg5040/Grout.pak
- adb push dist/Grout.pak /mnt/SDCARD/Tools/tg5040
- adb push config-platformless.json /mnt/SDCARD/Tools/tg5040/Grout.pak/config.json
silent: true
adb-muos-sd1:
desc: Deploy to muOS device via ADB (SD1)
cmds:
- adb shell rm -rf /mnt/mmc/MUOS/application/Grout
- adb push dist/muOS/Grout /mnt/mmc/MUOS/application
- adb push config-platformless.json /mnt/mmc/MUOS/application/Grout/config.json
silent: true
adb-muos-sd2:
desc: Deploy to muOS device via ADB (SD2)
cmds:
- adb shell rm -rf /mnt/sdcard/MUOS/application/Grout
- adb push dist/muOS/Grout /mnt/sdcard/MUOS/application
- adb push config-platformless.json /mnt/sdcard/MUOS/application/Grout/config.json
silent: true
adb-knulli:
desc: Deploy to Knulli device via ADB
cmds:
- adb shell rm -rf /userdata/roms/ports/Grout
- adb push dist/Knulli/Grout /userdata/roms/ports
- adb push config-platformless.json /userdata/roms/ports/Grout/config.json
silent: true
i18n:
desc: Extract messages and find missing translations
cmds:
- task: i18n:extract
- task: i18n:merge
silent: true
i18n:extract:
desc: Extract i18n messages from source code
cmds:
- goi18n extract -format=toml -outdir=resources/locales .
silent: true
i18n:merge:
desc: Find missing translations for all locales
vars:
LANGS: es fr de it pt ja ru
cmds:
- mkdir -p translations_todo
- |
for lang in {{.LANGS}}; do
goi18n merge -sourceLanguage en -outdir resources/locales -format toml \
resources/locales/active.en.toml resources/locales/active.${lang}.toml
if [ -f resources/locales/translate.${lang}.toml ]; then
mv resources/locales/translate.${lang}.toml translations_todo/${lang}.toml
echo "Created translations_todo/${lang}.toml"
else
echo "No missing translations for ${lang}"
fi
done
- |
if [ -z "$(ls -A translations_todo 2>/dev/null)" ]; then
echo "All translations are complete!"
rmdir translations_todo 2>/dev/null || true
else
echo "Translation files needing work are in translations_todo/"
fi
silent: true
lint:
desc: Run Go code style checks (fmt, vet, staticcheck)
cmds:
- go fmt ./...
- go vet ./...
- staticcheck ./...
silent: true
mp4-to-webp:
desc: Convert MP4 to WebP (interactive)
interactive: true
cmds:
- |
read -p "Enter MP4 input path: " INPUT_PATH
read -p "Enter WEBP output path: " OUTPUT_PATH
[[ ! "$OUTPUT_PATH" =~ \.webp$ ]] && OUTPUT_PATH="${OUTPUT_PATH}.webp"
ffmpeg -i "$INPUT_PATH" -vcodec libwebp -filter:v fps=fps=20 -lossless 0 -compression_level 3 -q:v 70 -loop 0 -preset picture -an -vsync 0 -s 1024:768 "$OUTPUT_PATH"
resize-user-guide-images:
desc: Resize user guide images to 1024px width
dir: .github/resources/user_guide
cmds:
- for img in *.png; do sips -Z 1024 "$img" --out "$img"; done
silent: true
gen-platforms:
desc: Generate platforms.json from markdown docs
cmds:
- go run tools/gen-platforms/main.go
silent: true
clean:
desc: Remove build artifacts
cmds:
- rm -rf build64 build buildx86 build32 dist
silent: true
hooks-setup:
desc: Install git hooks for development
cmds:
- git config core.hooksPath .githooks
- echo "Git hooks installed from .githooks/"
- task: build:arm32
- task: package:allium
- task: package:onion
silent: true
+65
View File
@@ -0,0 +1,65 @@
version: '3'
tasks:
_build:
internal: true
silent: true
vars:
LOCAL: "false"
cmds:
- rm -rf {{.BUILD_DIR}}
- echo "Building {{.PLATFORM}}..."
- '{{if eq .LOCAL "true"}}cd .. && {{end}}docker buildx build {{.NO_CACHE}} --load --platform={{.PLATFORM}} --build-arg GITHUB_ACTIONS=false {{.VERSION_ARG}} {{if eq .LOCAL "true"}}--build-arg USE_LOCAL_GABAGOOL=true {{end}}--label {{.LABEL}} -t {{.IMAGE_TAG}} -f {{if eq .LOCAL "true"}}grout/{{end}}{{.DOCKERFILE}} . > {{.BUILD_DIR}}.log 2>&1 || (cat {{.BUILD_DIR}}.log && exit 1)'
- echo "Build {{.PLATFORM}} complete"
_extract:
internal: true
silent: true
cmds:
- mkdir -p {{.BUILD_DIR}}/lib
- docker rm {{.CONTAINER_NAME}}-{{.BUILD_DIR}} >/dev/null 2>&1 || true
- docker create --name {{.CONTAINER_NAME}}-{{.BUILD_DIR}} --label {{.LABEL}} {{.IMAGE_TAG}} >/dev/null 2>&1
- echo "Extracting {{.BUILD_DIR}}..."
- docker cp {{.CONTAINER_NAME}}-{{.BUILD_DIR}}:/build/grout {{.BUILD_DIR}}/grout
- 'if [ -n "{{.LIB_PATH}}" ]; then docker cp {{.CONTAINER_NAME}}-{{.BUILD_DIR}}:{{.LIB_PATH}} {{.BUILD_DIR}}/lib/libSDL2_gfx-1.0.so.0; fi'
- docker rm {{.CONTAINER_NAME}}-{{.BUILD_DIR}} >/dev/null 2>&1
- docker image prune --filter "label={{.LABEL}}" -f >/dev/null 2>&1 || true
- echo "Extract {{.BUILD_DIR}} complete"
arm64:
desc: Build and extract for ARM64
vars:
LOCAL: "false"
cmds:
- task: _build
vars: { PLATFORM: linux/arm64, BUILD_DIR: build64, IMAGE_TAG: "{{.IMAGE_NAME}}-arm64", DOCKERFILE: docker/Dockerfile, LOCAL: "{{.LOCAL}}" }
- task: _extract
vars: { BUILD_DIR: build64, IMAGE_TAG: "{{.IMAGE_NAME}}-arm64", LIB_PATH: /usr/lib/aarch64-linux-gnu/libSDL2_gfx-1.0.so.0.0.2 }
amd64:
desc: Build and extract for AMD64 (x86_64)
cmds:
- task: _build
vars: { PLATFORM: linux/amd64, BUILD_DIR: build, IMAGE_TAG: "{{.IMAGE_NAME}}-amd64", DOCKERFILE: docker/Dockerfile }
- task: _extract
vars: { BUILD_DIR: build, IMAGE_TAG: "{{.IMAGE_NAME}}-amd64", LIB_PATH: /usr/lib/x86_64-linux-gnu/libSDL2_gfx-1.0.so.0.0.2 }
x86:
desc: Build and extract for x86 (32-bit)
cmds:
- task: _build
vars: { PLATFORM: linux/386, BUILD_DIR: buildx86, IMAGE_TAG: "{{.IMAGE_NAME}}-x86", DOCKERFILE: docker/Dockerfile }
- task: _extract
vars: { BUILD_DIR: buildx86, IMAGE_TAG: "{{.IMAGE_NAME}}-x86", LIB_PATH: /usr/lib/i386-linux-gnu/libSDL2_gfx-1.0.so.0.0.2 }
arm32:
desc: Build and extract for ARM32
vars:
LOCAL: "false"
cmds:
- task: _build
vars: { PLATFORM: linux/arm/v7, BUILD_DIR: build32, IMAGE_TAG: "{{.IMAGE_NAME}}-arm32", DOCKERFILE: docker/32.Dockerfile, LOCAL: "{{.LOCAL}}" }
# TODO: add LIB_PATH once custom SDL build for Miyoo is ready
- task: _extract
vars: { BUILD_DIR: build32, IMAGE_TAG: "{{.IMAGE_NAME}}-arm32", LIB_PATH: "" }
+24
View File
@@ -0,0 +1,24 @@
version: '3'
tasks:
lint:
desc: Run Go code style checks (fmt, vet, staticcheck)
cmds:
- go fmt ./...
- go vet ./...
- staticcheck ./...
silent: true
gen-platforms:
desc: Generate platforms.json from markdown docs
cmds:
- go run tools/gen-platforms/main.go
silent: true
hooks-setup:
desc: Install git hooks for development
cmds:
- git config core.hooksPath .githooks
- echo "Git hooks installed from .githooks/"
silent: true
+35
View File
@@ -0,0 +1,35 @@
version: '3'
tasks:
next:
desc: Deploy to NextUI device via ADB
cmds:
- adb shell rm -rf /mnt/SDCARD/Tools/tg5040/Grout.pak
- adb push dist/Grout.pak /mnt/SDCARD/Tools/tg5040
- adb push config-platformless.json /mnt/SDCARD/Tools/tg5040/Grout.pak/config.json
silent: true
muos-sd1:
desc: Deploy to muOS device via ADB (SD1)
cmds:
- adb shell rm -rf /mnt/mmc/MUOS/application/Grout
- adb push dist/muOS/Grout /mnt/mmc/MUOS/application
- adb push config-platformless.json /mnt/mmc/MUOS/application/Grout/config.json
silent: true
muos-sd2:
desc: Deploy to muOS device via ADB (SD2)
cmds:
- adb shell rm -rf /mnt/sdcard/MUOS/application/Grout
- adb push dist/muOS/Grout /mnt/sdcard/MUOS/application
- adb push config-platformless.json /mnt/sdcard/MUOS/application/Grout/config.json
silent: true
knulli:
desc: Deploy to Knulli device via ADB
cmds:
- adb shell rm -rf /userdata/roms/ports/Grout
- adb push dist/Knulli/Grout /userdata/roms/ports
- adb push config-platformless.json /userdata/roms/ports/Grout/config.json
silent: true
+42
View File
@@ -0,0 +1,42 @@
version: '3'
tasks:
default:
desc: Extract messages and find missing translations
cmds:
- task: extract
- task: merge
silent: true
extract:
desc: Extract i18n messages from source code
cmds:
- goi18n extract -format=toml -outdir=resources/locales .
silent: true
merge:
desc: Find missing translations for all locales
vars:
LANGS: es fr de it pt ja ru
cmds:
- mkdir -p translations_todo
- |
for lang in {{.LANGS}}; do
goi18n merge -sourceLanguage en -outdir resources/locales -format toml \
resources/locales/active.en.toml resources/locales/active.${lang}.toml
if [ -f resources/locales/translate.${lang}.toml ]; then
mv resources/locales/translate.${lang}.toml translations_todo/${lang}.toml
echo "Created translations_todo/${lang}.toml"
else
echo "No missing translations for ${lang}"
fi
done
- |
if [ -z "$(ls -A translations_todo 2>/dev/null)" ]; then
echo "All translations are complete!"
rmdir translations_todo 2>/dev/null || true
else
echo "Translation files needing work are in translations_todo/"
fi
silent: true
+21
View File
@@ -0,0 +1,21 @@
version: '3'
tasks:
mp4-to-webp:
desc: Convert MP4 to WebP (interactive)
interactive: true
cmds:
- |
read -p "Enter MP4 input path: " INPUT_PATH
read -p "Enter WEBP output path: " OUTPUT_PATH
[[ ! "$OUTPUT_PATH" =~ \.webp$ ]] && OUTPUT_PATH="${OUTPUT_PATH}.webp"
ffmpeg -i "$INPUT_PATH" -vcodec libwebp -filter:v fps=fps=20 -lossless 0 -compression_level 3 -q:v 70 -loop 0 -preset picture -an -vsync 0 -s 1024:768 "$OUTPUT_PATH"
resize-user-guide-images:
desc: Resize user guide images to 1024px width
dir: .github/resources/user_guide
cmds:
- for img in *.png; do sips -Z 1024 "$img" --out "$img"; done
silent: true
+135
View File
@@ -0,0 +1,135 @@
version: '3'
tasks:
all:
desc: Package for all platforms
deps: [ next, muos, knulli, spruce, rocknix, trimui, allium, onion, minui, minui-arm32, batocera, batocera-x86, batocera-amd64 ]
cmds:
- echo "Packaging complete (13 platforms)"
silent: true
next:
cmds:
- rm -rf dist/Grout.pak
- mkdir -p dist/Grout.pak/lib
- cp build64/grout scripts/NextUI/launch.sh README.md LICENSE pak.json dist/Grout.pak
- cp -R build64/lib/* dist/Grout.pak/lib/
- chmod a+x dist/Grout.pak/grout dist/Grout.pak/launch.sh
silent: true
muos:
cmds:
- rm -rf dist/muOS dist/Grout.muxapp
- mkdir -p dist/muOS/Grout/lib
- cp build64/grout scripts/muOS/mux_launch.sh README.md LICENSE dist/muOS/Grout
- cp -R build64/lib/* dist/muOS/Grout/lib/
- cp -R scripts/muOS/resources dist/muOS/Grout/
- chmod a+x dist/muOS/Grout/grout dist/muOS/Grout/mux_launch.sh
- cd dist/muOS && zip -qr ../Grout.muxapp Grout
silent: true
knulli:
cmds:
- rm -rf dist/Knulli
- mkdir -p dist/Knulli/Grout/lib
- cp build64/grout scripts/Knulli/Grout.sh scripts/Knulli/logo.png README.md LICENSE dist/Knulli/Grout
- cp -R build64/lib/* dist/Knulli/Grout/lib/
- chmod a+x dist/Knulli/Grout/grout dist/Knulli/Grout/Grout.sh
silent: true
spruce:
cmds:
- rm -rf dist/Spruce
- mkdir -p dist/Spruce/Grout/grout/lib
- cp scripts/Spruce/* README.md LICENSE dist/Spruce/Grout
- cp build64/grout dist/Spruce/Grout/grout
- cp -R build64/lib/* dist/Spruce/Grout/grout/lib/
- chmod a+x dist/Spruce/Grout/grout/grout dist/Spruce/Grout/launch.sh dist/Spruce/Grout/launch-universal.sh
silent: true
allium:
cmds:
- rm -rf dist/Allium
- mkdir -p dist/Allium/Grout.pak/grout/lib
- cp -R scripts/Allium/* dist/Allium/Grout.pak
- cp build32/grout README.md LICENSE dist/Allium/Grout.pak/grout
- cp -R vendored/miyoo/* dist/Allium/Grout.pak/grout/lib/
silent: true
onion:
cmds:
- rm -rf dist/Onion
- mkdir -p dist/Onion/Grout/grout/lib
- cp -R scripts/Onion/* dist/Onion/Grout
- cp build32/grout README.md LICENSE dist/Onion/Grout/grout
- cp -R vendored/miyoo/* dist/Onion/Grout/grout/lib/
silent: true
rocknix:
cmds:
- rm -rf dist/ROCKNIX
- mkdir -p dist/ROCKNIX/Grout/lib
- cp scripts/ROCKNIX/Grout.sh dist/ROCKNIX/
- cp build64/grout scripts/ROCKNIX/logo.png README.md LICENSE dist/ROCKNIX/Grout/
- cp -R build64/lib/* dist/ROCKNIX/Grout/lib/
- chmod a+x dist/ROCKNIX/Grout/grout dist/ROCKNIX/Grout.sh
silent: true
trimui:
cmds:
- rm -rf dist/Trimui
- mkdir -p dist/Trimui/Grout/grout/lib
- cp scripts/Trimui/* README.md LICENSE dist/Trimui/Grout
- cp build64/grout dist/Trimui/Grout/grout
- cp -R build64/lib/* dist/Trimui/Grout/grout/lib/
- chmod a+x dist/Trimui/Grout/grout/grout dist/Trimui/Grout/launch.sh
silent: true
minui:
cmds:
- rm -rf dist/MinUI-arm64
- mkdir -p dist/MinUI-arm64/Grout/lib
- cp build64/grout scripts/MinUI/launch.sh README.md LICENSE dist/MinUI-arm64/Grout
- cp -R build64/lib/* dist/MinUI-arm64/Grout/lib/
- chmod a+x dist/MinUI-arm64/Grout/grout dist/MinUI-arm64/Grout/launch.sh
silent: true
minui-arm32:
cmds:
- rm -rf dist/MinUI-arm32
- mkdir -p dist/MinUI-arm32/Grout/lib
- cp build32/grout scripts/MinUI/launch.sh README.md LICENSE dist/MinUI-arm32/Grout
- cp -R vendored/miyoo/* dist/MinUI-arm32/Grout/lib/
- chmod a+x dist/MinUI-arm32/Grout/grout dist/MinUI-arm32/Grout/launch.sh
silent: true
batocera:
cmds:
- rm -rf dist/Batocera-arm64
- mkdir -p dist/Batocera-arm64/Grout/lib
- cp scripts/Batocera/Grout.sh dist/Batocera-arm64/
- cp build64/grout README.md LICENSE dist/Batocera-arm64/Grout/
- cp -R build64/lib/* dist/Batocera-arm64/Grout/lib/
- chmod a+x dist/Batocera-arm64/Grout/grout dist/Batocera-arm64/Grout.sh
silent: true
batocera-x86:
cmds:
- rm -rf dist/Batocera-x86
- mkdir -p dist/Batocera-x86/Grout/lib
- cp scripts/Batocera/Grout.sh dist/Batocera-x86/
- cp buildx86/grout README.md LICENSE dist/Batocera-x86/Grout/
- cp -R buildx86/lib/* dist/Batocera-x86/Grout/lib/
- chmod a+x dist/Batocera-x86/Grout/grout dist/Batocera-x86/Grout.sh
silent: true
batocera-amd64:
cmds:
- rm -rf dist/Batocera-amd64
- mkdir -p dist/Batocera-amd64/Grout/lib
- cp scripts/Batocera/Grout.sh dist/Batocera-amd64/
- cp build/grout README.md LICENSE dist/Batocera-amd64/Grout/
- cp -R build/lib/* dist/Batocera-amd64/Grout/lib/
- chmod a+x dist/Batocera-amd64/Grout/grout dist/Batocera-amd64/Grout.sh
silent: true