diff --git a/level.gd b/level.gd index 46d99b9..018a176 100644 --- a/level.gd +++ b/level.gd @@ -28,32 +28,20 @@ func load(path): win_commands = helpers.read_file(path+"/win", "exit 1\n") func construct(): - # We're actually destroying stuff here. - # Make sure that active_repository is in a temporary directory. - helpers.careful_delete(_active_repository_path) - helpers.careful_delete(_goal_repository_path) - _construct_repo(start_commands +"\n"+ goal_commands, _goal_repository_path) _construct_repo(start_commands, _active_repository_path) - var win_script_target = game.tmp_prefix_outside+"/win" - helpers.write_file(win_script_target, win_commands) - func _construct_repo(script_content, path): - # Becase in an exported game, all assets are in a .pck file, we need to put - # the script somewhere in the filesystem. - - var script_path_outside = game.tmp_prefix_outside+"/git-hydra-script" - var script_path_inside = game.tmp_prefix_inside+"/git-hydra-script" - helpers.write_file(script_path_outside, script_content) + # We're actually destroying stuff here. + # Make sure that active_repository is in a temporary directory. + helpers.careful_delete(path) game.global_shell.run("mkdir " + path) game.global_shell.cd(path) game.global_shell.run("git init") game.global_shell.run("git symbolic-ref HEAD refs/heads/main") - # Read stdin from /dev/null so that interactive commands don't block. - game.global_shell.run("bash "+script_path_inside+" /dev/null >/dev/null && echo yes || echo no" % game.tmp_prefix_inside) == "yes\n" + return game.global_shell.run("function win { %s }; win 2>/dev/null >/dev/null && echo yes || echo no" % win_commands) == "yes\n" diff --git a/levels/bottom-up/commit-parents/win b/levels/bottom-up/commit-parents/win index ce20826..26564b6 100644 --- a/levels/bottom-up/commit-parents/win +++ b/levels/bottom-up/commit-parents/win @@ -3,8 +3,8 @@ COMMITS=$(git cat-file --batch-check='%(objectname) %(objecttype)' --batch-all-o for COMMIT in $COMMITS; do echo a commit named $COMMIT if [ $(git rev-list $COMMIT | wc -l) -ge 3 ]; then - exit 0 + return 0 fi done -exit 1 +return 1 diff --git a/levels/bottom-up/commit-rhombus/win b/levels/bottom-up/commit-rhombus/win index 2364153..5492217 100644 --- a/levels/bottom-up/commit-rhombus/win +++ b/levels/bottom-up/commit-rhombus/win @@ -3,8 +3,8 @@ COMMITS=$(git cat-file --batch-check='%(objectname) %(objecttype)' --batch-all-o for COMMIT in $COMMITS; do # My first parent's parents has to be the same as my second parent's parent. if [ "$(git rev-parse --verify -q $COMMIT^1^)" = "$(git rev-parse --verify -q $COMMIT^2^)" ]; then - exit 0 + return 0 fi done -exit 1 +return 1 diff --git a/levels/bottom-up/puzzle-trees-all-the-way-down/win b/levels/bottom-up/puzzle-trees-all-the-way-down/win index 4a8a6d2..90fca71 100644 --- a/levels/bottom-up/puzzle-trees-all-the-way-down/win +++ b/levels/bottom-up/puzzle-trees-all-the-way-down/win @@ -8,11 +8,11 @@ for TREE in $TREES; do if [ "$(git cat-file -p $TREE2 | wc -l)" -eq 1 ]; then if [ "$(git cat-file -p $TREE2 | cut -f1 | grep tree | wc -l)" -eq 1 ]; then # Same for its child! \o/ - exit 0 + return 0 fi fi fi fi done -exit 1 +return 1 diff --git a/levels/bottom-up/symref-no-deref/win b/levels/bottom-up/symref-no-deref/win index 3b11531..2e3e24f 100644 --- a/levels/bottom-up/symref-no-deref/win +++ b/levels/bottom-up/symref-no-deref/win @@ -1,2 +1,2 @@ -git symbolic-ref refs/fries && exit 1 +git symbolic-ref refs/fries && return 1 test "$(git show-ref -s refs/fries)" = "035e2968dafeea08e46e8fe6743cb8123e8b9aa6" diff --git a/levels/bottom-up/tree-nested/win b/levels/bottom-up/tree-nested/win index e0cc491..e6f6488 100644 --- a/levels/bottom-up/tree-nested/win +++ b/levels/bottom-up/tree-nested/win @@ -8,9 +8,9 @@ for OUTER_TREE in $TREES; do TREE_CHILD=$(git cat-file -p $OUTER_TREE | cut -f1 | grep tree | cut -d" " -f3) NUMBER_OF_BLOB_CHILDREN_OF_TREE_CHILD=$(git cat-file -p $TREE_CHILD | cut -f2 -d" " | grep blob | wc -l) if [ $NUMBER_OF_BLOB_CHILDREN_OF_TREE_CHILD -eq 2 ]; then - exit 0 + return 0 fi fi done -exit 1 +return 1