mirror of
https://github.com/open-goal/jak-project.git
synced 2024-11-23 06:09:57 +00:00
e76a4399e5
Some checks failed
Build / 🖥️ Windows (push) Has been cancelled
Build / 🐧 Linux (push) Has been cancelled
Build / 🍎 MacOS (push) Has been cancelled
Inform Pages Repo / Generate Documentation (push) Has been cancelled
Lint / 📝 Formatting (push) Has been cancelled
Lint / 📝 Required Checks (push) Has been cancelled
Lint / 📝 Optional Checks (push) Has been cancelled
Update Controller Database / update-controller-db (push) Has been cancelled
This is so I can get rid of wgpu from the launcher, where it's only purpose is to figure out the GPU name for the support package. The problem with it is that on some environments, it errors, but the function cannot have it's errors gracefully handled (it panics and crashes instead). So I'm tired of it, do it ourselves. ![image](https://github.com/user-attachments/assets/fa8ae365-b3f7-4794-81ed-fde0c2ffc651)
202 lines
9.9 KiB
YAML
202 lines
9.9 KiB
YAML
version: 3
|
|
|
|
includes:
|
|
build: ./scripts/tasks/Taskfile_{{OS}}.yml
|
|
|
|
dotenv:
|
|
- ./scripts/tasks/.env
|
|
- ./scripts/tasks/.env.default
|
|
|
|
tasks:
|
|
# SETTINGS / CONFIGURATION
|
|
settings:
|
|
- 'python ./scripts/tasks/update-env.py --info'
|
|
set-game-jak1:
|
|
- 'python ./scripts/tasks/update-env.py --game jak1'
|
|
set-game-jak2:
|
|
- 'python ./scripts/tasks/update-env.py --game jak2'
|
|
set-game-jak3:
|
|
- 'python ./scripts/tasks/update-env.py --game jak3'
|
|
set-decomp-ntscv1:
|
|
desc: "aka black label"
|
|
cmds:
|
|
- 'python ./scripts/tasks/update-env.py --decomp_config ntscv1'
|
|
set-decomp-ntscv2:
|
|
desc: "aka red label"
|
|
cmds:
|
|
- 'python ./scripts/tasks/update-env.py --decomp_config ntscv2'
|
|
set-decomp-pal:
|
|
desc: "PAL region version"
|
|
cmds:
|
|
- 'python ./scripts/tasks/update-env.py --decomp_config pal'
|
|
set-decomp-ntscjp:
|
|
desc: "NTSC-J region version"
|
|
cmds:
|
|
- 'python ./scripts/tasks/update-env.py --decomp_config ntscjp'
|
|
set-decomp-ntscko:
|
|
desc: "NTSC-K region version"
|
|
cmds:
|
|
- 'python ./scripts/tasks/update-env.py --decomp_config ntscko'
|
|
# GENERAL
|
|
extract:
|
|
desc: "Extracts the game's assets from './iso_data' with the set decompiler config"
|
|
preconditions:
|
|
- sh: test -f {{.DECOMP_BIN_RELEASE_DIR}}/decompiler{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate decompiler executable in '{{.DECOMP_BIN_RELEASE_DIR}}/decompiler'"
|
|
cmds:
|
|
- "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler \"./decompiler/config/{{.DECOMP_CONFIG}}\" \"./iso_data\" \"./decompiler_out\" --version \"{{.DECOMP_CONFIG_VERSION}}\" --config-override '{\"decompile_code\": false, \"levels_extract\": true, \"allowed_objects\": []}'"
|
|
boot-game:
|
|
desc: "Boots the game, it will fail if it's not already compiled!"
|
|
preconditions:
|
|
- sh: test -f {{.GK_BIN_RELEASE_DIR}}/gk{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate runtime executable in '{{.GK_BIN_RELEASE_DIR}}/gk'"
|
|
cmds:
|
|
- "{{.GK_BIN_RELEASE_DIR}}/gk -v --game {{.GAME}} -- -boot -fakeiso -debug"
|
|
boot-game-retail:
|
|
desc: "Boots the game without debug mode, it will fail if it's not already compiled!"
|
|
preconditions:
|
|
- sh: test -f {{.GK_BIN_RELEASE_DIR}}/gk{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate runtime executable in '{{.GK_BIN_RELEASE_DIR}}/gk'"
|
|
cmds:
|
|
- "{{.GK_BIN_RELEASE_DIR}}/gk -v --game {{.GAME}} -- -boot -fakeiso"
|
|
run-game:
|
|
desc: "Start the game's runtime, to start the game itself the REPL is required"
|
|
preconditions:
|
|
- sh: test -f {{.GK_BIN_RELEASE_DIR}}/gk{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate runtime executable in '{{.GK_BIN_RELEASE_DIR}}/gk'"
|
|
cmds:
|
|
- "{{.GK_BIN_RELEASE_DIR}}/gk -v --game {{.GAME}} -- -fakeiso -debug"
|
|
# DEVELOPMENT
|
|
repl:
|
|
desc: "Start the REPL"
|
|
preconditions:
|
|
- sh: test -f {{.GOALC_BIN_RELEASE_DIR}}/goalc{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate compiler executable in '{{.GOALC_BIN_RELEASE_DIR}}/goalc'"
|
|
cmds:
|
|
- "{{.GOALC_BIN_RELEASE_DIR}}/goalc --user-auto --game {{.GAME}}"
|
|
format-json:
|
|
desc: "Format code"
|
|
cmds:
|
|
# npm install -g prettier
|
|
- cmd: npx prettier --write ./decompiler/config/jak*/**/*.jsonc
|
|
ignore_error: true
|
|
format:
|
|
desc: "Format code"
|
|
cmds:
|
|
- cmd: python ./scripts/cpp/format-includes.py
|
|
- cmd: python ./scripts/ci/lint-trailing-whitespace.py --fix
|
|
- cmd: python ./third-party/run-clang-format/run-clang-format.py -r common decompiler game goalc test tools lsp -i
|
|
- task: format-json
|
|
format-gsrc:
|
|
desc: "Run formatter on gsrc file"
|
|
preconditions:
|
|
- sh: test -f {{.FORMATTER_BIN_RELEASE_DIR}}/formatter{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate formatter executable in '{{.FORMATTER_BIN_RELEASE_DIR}}/formatter'"
|
|
cmds:
|
|
- "{{.FORMATTER_BIN_RELEASE_DIR}}/formatter --write --file '{{.FILE}}'"
|
|
# DECOMPILING
|
|
decomp:
|
|
cmds:
|
|
- "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler \"./decompiler/config/{{.DECOMP_CONFIG}}\" \"./iso_data\" \"./decompiler_out\" --version \"{{.DECOMP_CONFIG_VERSION}}\" --config-override '{\"decompile_code\": true, \"levels_extract\": false}'"
|
|
decomp-file:
|
|
cmds:
|
|
- "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler \"./decompiler/config/{{.DECOMP_CONFIG}}\" \"./iso_data\" \"./decompiler_out\" --version \"{{.DECOMP_CONFIG_VERSION}}\" --config-override '{\"decompile_code\": true, \"levels_extract\": false, \"allowed_objects\": [\"{{.FILE}}\"]}'"
|
|
decomp-clean:
|
|
cmds:
|
|
- python ./scripts/tasks/clean-decomp.py --game "{{.GAME}}"
|
|
lint-gsrc-file:
|
|
cmds:
|
|
- python ./scripts/gsrc/lint-gsrc-file.py --game {{.GAME}} --file "{{.FILE}}"
|
|
update-gsrc:
|
|
cmds:
|
|
- python ./scripts/gsrc/update-gsrc-via-refs.py --game "{{.GAME}}" --decompiler "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler" --decompiler_config {{.DECOMP_CONFIG}} --version {{.DECOMP_CONFIG_VERSION}}
|
|
update-gsrc-glob:
|
|
cmds:
|
|
- python ./scripts/gsrc/update-gsrc-via-refs.py --game "{{.GAME}}" --file_pattern "{{.GLOB}}" --decompiler "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler" --decompiler_config {{.DECOMP_CONFIG}} --version {{.DECOMP_CONFIG_VERSION}}
|
|
update-gsrc-file:
|
|
cmds:
|
|
- task: decomp-file
|
|
- python ./scripts/gsrc/update-from-decomp.py --game "{{.GAME}}" --file "{{.FILE}}"
|
|
- task: lint-gsrc-file
|
|
copy-common-naming:
|
|
cmds:
|
|
- python ./scripts/gsrc/copy-common-naming.py --file "{{.FILE}}" --decompiler "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler"
|
|
- task: format-json
|
|
copy-common-naming-from-refs:
|
|
cmds:
|
|
- python ./scripts/gsrc/copy-common-naming.py --update-names-from-refs --decompiler "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler"
|
|
- task: format-json
|
|
# ASSET RIPPING
|
|
rip-textures:
|
|
cmds:
|
|
- "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler \"./decompiler/config/{{.DECOMP_CONFIG}}\" \"./iso_data\" \"./decompiler_out\" --version \"{{.DECOMP_CONFIG_VERSION}}\" --config-override '{\"decompile_code\": false, \"levels_extract\": true, \"save_texture_pngs\": true}'"
|
|
rip-levels:
|
|
cmds:
|
|
- "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler \"./decompiler/config/{{.DECOMP_CONFIG}}\" \"./iso_data\" \"./decompiler_out\" --version \"{{.DECOMP_CONFIG_VERSION}}\" --config-override '{\"decompile_code\": false, \"levels_extract\": true, \"rip_levels\": true}'"
|
|
rip-collision:
|
|
cmds:
|
|
- "{{.DECOMP_BIN_RELEASE_DIR}}/decompiler \"./decompiler/config/{{.DECOMP_CONFIG}}\" \"./iso_data\" \"./decompiler_out\" --version \"{{.DECOMP_CONFIG_VERSION}}\" --config-override '{\"decompile_code\": false, \"levels_extract\": true, \"extract_collision\": true, \"rip_collision\": true}'"
|
|
# TOOLS
|
|
analyze-ee-memory:
|
|
cmds:
|
|
- python ./scripts/tasks/extract-zip.py --file "{{.FILE}}" --out ./savestate_out/
|
|
- '{{.MEMDUMP_BIN_RELEASE_DIR}}/memory_dump_tool ./savestate_out/eeMemory.bin --output-path ./ --game {{.GAME}} > ee-analysis.log'
|
|
watch-pcsx2:
|
|
# python -m pip install -U "watchdog[watchmedo]"
|
|
cmds:
|
|
- watchmedo shell-command --drop --patterns="*.p2s" --recursive --command='task analyze-ee-memory FILE="${watch_src_path}"' "{{.SAVESTATE_DIR}}"
|
|
vars:
|
|
SAVESTATE_DIR: '{{default "." .SAVESTATE_DIR}}'
|
|
type-search:
|
|
desc: Just an example to show it running
|
|
cmds:
|
|
- "{{.TYPESEARCH_BIN_RELEASE_DIR}}/type_searcher --output-path ./search-results.json --game {{.GAME}} --fields '[{\"type\":\"int16\",\"offset\":2},{\"type\":\"int16\",\"offset\":4}]'"
|
|
update-treesitter:
|
|
desc: Updates locally built tree-sitter rules
|
|
cmds:
|
|
- cd ../tree-sitter-opengoal && yarn gen
|
|
- python ./scripts/tasks/cp.py --src "../tree-sitter-opengoal/src/*" --dest "./third-party/tree-sitter/tree-sitter-opengoal"
|
|
- python ./scripts/tasks/cp.py --src "../tree-sitter-opengoal/grammar.js" --dest "./third-party/tree-sitter/tree-sitter-opengoal"
|
|
fix-translations:
|
|
desc: Finds and tries to fix invalid translation Characters
|
|
cmds:
|
|
- python ./scripts/ci/lint-characters.py --fix
|
|
lint:
|
|
cmds:
|
|
- python ./scripts/ci/lint-trailing-whitespace.py
|
|
run-gpu-test:
|
|
desc: "Runs the game's built in GPU test"
|
|
preconditions:
|
|
- sh: test -f {{.GK_BIN_RELEASE_DIR}}/gk{{.EXE_FILE_EXTENSION}}
|
|
msg: "Couldn't locate runtime executable in '{{.GK_BIN_RELEASE_DIR}}/gk'"
|
|
cmds:
|
|
- "{{.GK_BIN_RELEASE_DIR}}/gk -v --gpu-test opengl --gpu-test-out-path ./gpu-test.json"
|
|
# TESTS
|
|
offline-tests: # ran by jenkins
|
|
cmds:
|
|
- '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --fail-on-cmp'
|
|
offline-test-file:
|
|
cmds:
|
|
- '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --file {{.FILE}}'
|
|
offline-tests-fast:
|
|
cmds:
|
|
- '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --pretty-print --num_threads 32 --dump_current_output --fail-on-cmp'
|
|
# TODO - amalgamate offline-tests and this task, run twice if the previous step fails
|
|
update-ref-tests:
|
|
cmds:
|
|
- cmd: python ./scripts/tasks/delete-file-or-folder.py --path failures
|
|
- cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --game {{.GAME}} --pretty-print --num_threads 32 --dump_current_output --fail-on-cmp'
|
|
ignore_error: true
|
|
- python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/ --game {{.GAME}}
|
|
- task: offline-tests-fast
|
|
update-ref-file:
|
|
cmds:
|
|
- cmd: python ./scripts/tasks/delete-file-or-folder.py --path failures
|
|
- cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test --iso_data_path "./iso_data/{{.GAME}}" --file {{.FILE}} --game {{.GAME}} --dump_current_output --fail-on-cmp'
|
|
ignore_error: true
|
|
- python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/ --game {{.GAME}}
|
|
- task: offline-test-file
|
|
type-test:
|
|
cmds:
|
|
- cmd: '{{.GOALCTEST_BIN_RELEASE_DIR}}/goalc-test --gtest_brief=0 --gtest_filter="*{{.TYPE_CONSISTENCY_TEST_FILTER}}*" --gtest_break_on_failure'
|