jak-project/Taskfile.yml
Tyler Wilding 7b6d732a77
goalc: Add TCP server socket in REPL process (#1335)
* goalc: cleanup goalc's main method and add nrepl listener socket

* deps: add standalone ASIO for sockets

* lint: formatting

* common: make a common interface for creating a server socket

* goalc: setup new repl server

* deps: remove asio

* goalc: debug issues, nrepl is working again

* git: rename files

* attempt to fix linux function call

* test

* scripts: make the error message even more obvious....

* goalc: make suggested changes, still can't reconnect properly

* game: pull out single-client logic from XSocketServer

* nrepl: supports multiple clients and disconnection/reconnects

* goalc: some minor fixes for tests

* goalc: save repl history when the compiler reloads

* common: add include for linux networking

* a few small changes to fix tests

* is it the assert?

* change thread start order and add a print to an assert

Co-authored-by: water <awaterford111445@gmail.com>
2022-05-06 18:19:37 -04:00

133 lines
4.7 KiB
YAML

version: '3'
includes:
build: ./scripts/tasks/Taskfile_{{OS}}.yml
tasks:
# GENERAL
extract-jak1:
desc: "Extracts Jak 1 - NTSC - Black Label assets"
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/jak1_ntsc_black_label.jsonc" "./iso_data" "./decompiler_out" "decompile_code=false"'
boot-game:
desc: "Boots the game"
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 -boot -fakeiso -debug -v"
run-game:
desc: "Start the game's runtime"
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 -fakeiso -debug -v"
run-game-quiet:
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 -fakeiso"
repl:
desc: "Start the REPL"
env:
OPENGOAL_DECOMP_DIR: "jak1/"
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"
# DEVELOPMENT
format:
desc: "Format code"
cmds:
- cmd: python ./third-party/run-clang-format/run-clang-format.py -r common decompiler game goalc test -i
# npm install -g prettier
- cmd: prettier --write ./decompiler/config/jak1_ntsc_black_label/*.jsonc
ignore_error: true
run-game-headless:
cmds:
- "{{.GK_BIN_RELEASE_DIR}}/gk -fakeiso -debug -nodisplay"
repl-lt:
env:
OPENGOAL_DECOMP_DIR: "jak1/"
cmds:
- "{{.GOALC_BIN_RELEASE_DIR}}/goalc --auto-lt"
# DECOMPILING
decomp:
cmds:
- '{{.DECOMP_BIN_RELEASE_DIR}}/decompiler "./decompiler/config/jak1_ntsc_black_label.jsonc" "./iso_data" "./decompiler_out"'
decomp-clean:
cmds:
- rm ./decompiler_out/**/*.asm
- rm ./decompiler_out/**/*disasm.gc
decomp-file:
cmds:
- python ./scripts/next-decomp-file.py --files "{{.FILES}}"
- task: decomp
decomp-list:
cmds:
- python ./scripts/next-decomp-file.py --list "{{.LIST}}"
vars:
LIST: '{{default "0" .LIST}}'
# python -m pip install -U watchdog[watchmedo]
decomp-watch:
cmds:
- watchmedo shell-command --drop --patterns="*.gc;*.jsonc" --recursive --command='task decomp-file FILES="{{.FILES}}"' ./decompiler/config/
# TESTS
offline-tests:
cmds:
- '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test "./iso_data/jak1"'
add-reference-test:
cmds:
- task: decomp-file
- python ./scripts/add-reference-test.py --file "{{.FILES}}"
- task: offline-tests
add-reference-test-no-decomp:
cmds:
- python ./scripts/add-reference-test.py --file "{{.FILES}}"
- task: offline-tests
update-reference-tests:
cmds:
- cmd: python ./scripts/default-file-or-folder.py --path failures
- cmd: '{{.OFFLINETEST_BIN_RELEASE_DIR}}/offline-test "./iso_data/jak1" --dump-mode'
ignore_error: true
- python ./scripts/update_decomp_reference.py ./failures ./test/decompiler/reference/
- task: offline-tests
find-label-types:
cmds:
- python ./scripts/next-decomp-file.py --files "{{.FILES}}"
- task: decomp
- python ./scripts/find-label-types.py --file "{{.FILES}}"
type-test:
cmds:
- cmd: '{{.GOALCTEST_BIN_RELEASE_DIR}}/goalc-test --gtest_brief=0 --gtest_filter="*MANUAL_TEST_TypeConsistencyWithBuildFirst*"'
ignore_error: true
check-gsrc-file:
cmds:
- python ./scripts/check-gsrc-file.py --files "{{.FILES}}"
# TOOLS
analyze-ee-memory:
cmds:
- '{{.MEMDUMP_BIN_RELEASE_DIR}}/memory_dump_tool "{{.FILE}}" ./ > ee-analysis.log'
watch-pcsx2:
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}}'
update-gsrc:
cmds:
- python ./scripts/next-decomp-file.py --files "{{.FILES}}"
- task: decomp
- task: find-label-types
- python ./scripts/update-goal-src.py --files "{{.FILES}}"
- task: type-test
- task: check-gsrc-file
cast-repl:
cmds:
- cmd: python ./scripts/cast-repl.py