Halfway through making everything async...

This commit is contained in:
blinry 2023-09-07 12:04:47 +02:00
parent ad8d8f50d1
commit 19fcad2920
6 changed files with 18 additions and 16 deletions

View file

@ -45,7 +45,7 @@ func update():
clear() clear()
# Files in the working directory. # Files in the working directory.
var wd_files = Array(repository.shell.run("find . -type f -not -path '*/\\.git/*'").split("\n")) var wd_files = Array((await repository.shell.run("find . -type f -not -path '*/\\.git/*'")).split("\n"))
# The last entry is an empty string, remove it. # The last entry is an empty string, remove it.
wd_files.pop_back() wd_files.pop_back()
wd_files = helpers.map(wd_files, self, "substr2") wd_files = helpers.map(wd_files, self, "substr2")

View file

@ -44,14 +44,15 @@ func _ready():
# print(cmd) # print(cmd)
# helpers.crash(":)") # helpers.crash(":)")
if global_shell.run("command -v git &>/dev/null && echo yes || echo no") == "no\n": if false:
game.skipped_title = true if global_shell.run("command -v git &>/dev/null && echo yes || echo no") == "no\n":
get_tree().change_scene_to_file("res://scenes/no_git.tscn") game.skipped_title = true
else: get_tree().change_scene_to_file("res://scenes/no_git.tscn")
create_file_in_game_env(".gitconfig", helpers.read_file("res://scripts/gitconfig")) else:
create_file_in_game_env(".gitconfig", helpers.read_file("res://scripts/gitconfig"))
copy_script_to_game_env("fake-editor") copy_script_to_game_env("fake-editor")
copy_script_to_game_env("hint") copy_script_to_game_env("hint")
func start_remote_shell(): func start_remote_shell():
var user_dir = ProjectSettings.globalize_path("user://") var user_dir = ProjectSettings.globalize_path("user://")

View file

@ -102,8 +102,8 @@ func careful_delete(path_inside):
if path_inside.substr(0,expected_prefix.length()) != expected_prefix: if path_inside.substr(0,expected_prefix.length()) != expected_prefix:
helpers.crash("Refusing to delete directory %s that does not start with %s" % [path_inside, expected_prefix]) helpers.crash("Refusing to delete directory %s that does not start with %s" % [path_inside, expected_prefix])
else: else:
game.global_shell.cd(game.tmp_prefix) await game.global_shell.cd(game.tmp_prefix)
game.global_shell.run("rm -rf '%s'" % path_inside) await game.global_shell.run("rm -rf '%s'" % path_inside)
func parse(file): func parse(file):
var text = read_file(file) var text = read_file(file)

View file

@ -49,7 +49,7 @@ func _unhandled_input(event):
nodes.scale += Vector2(0.05, 0.05) nodes.scale += Vector2(0.05, 0.05)
func there_is_a_git(): func there_is_a_git():
return shell.run("test -d .git && echo yes || echo no") == "yes\n" return await shell.run("test -d .git && echo yes || echo no") == "yes\n"
func update_everything(): func update_everything():
there_is_a_git_cache = there_is_a_git() there_is_a_git_cache = there_is_a_git()
@ -140,7 +140,7 @@ func update_objects():
func update_node_positions(): func update_node_positions():
if there_is_a_git_cache: if there_is_a_git_cache:
var graph_text = shell.run("git log --graph --oneline --all --no-abbrev") var graph_text = await shell.run("git log --graph --oneline --all --no-abbrev")
var graph_lines = Array(graph_text.split("\n")) var graph_lines = Array(graph_text.split("\n"))
graph_lines.pop_back() graph_lines.pop_back()
@ -214,7 +214,7 @@ func find_position(n):
return n.position return n.position
func git(args, splitlines = false): func git(args, splitlines = false):
var o = shell.run("git --no-replace-objects " + args) var o = await shell.run("git --no-replace-objects " + args)
if splitlines: if splitlines:
o = o.split("\n") o = o.split("\n")

View file

@ -25,6 +25,7 @@ func run(command, crash_on_fail=true):
shell_command.crash_on_fail = crash_on_fail shell_command.crash_on_fail = crash_on_fail
run_async_thread(shell_command) run_async_thread(shell_command)
await shell_command.done
exit_code = shell_command.exit_code exit_code = shell_command.exit_code
return shell_command.output return shell_command.output
@ -102,7 +103,7 @@ func run_async_thread(shell_command):
#print(hacky_command) #print(hacky_command)
shell_command.js_callback = JavaScriptBridge.create_callback(Callable(shell_command, "callback")) shell_command.js_callback = JavaScriptBridge.create_callback(Callable(shell_command, "callback"))
web_shell.run_in_vm(hacky_command).then(shell_command.js_callback) web_shell.run_in_vm(command).then(shell_command.js_callback)
else: else:
helpers.crash("Unimplemented OS: %s" % _os) helpers.crash("Unimplemented OS: %s" % _os)

View file

@ -200,7 +200,7 @@ func generate_completions(command):
# Part2: Prevent autocompletion to only show filename at the beginning of a command. # Part2: Prevent autocompletion to only show filename at the beginning of a command.
if !(command.substr(0,4) == "git " and command.split(" ").size() <= 2) and command.split(" ").size() > 1: if !(command.substr(0,4) == "git " and command.split(" ").size() <= 2) and command.split(" ").size() > 1:
var last_word = Array(command.split(" ")).pop_back() var last_word = Array(command.split(" ")).pop_back()
var file_string = repository.shell.run("find . -type f") var file_string = await repository.shell.run("find . -type f")
var files = file_string.split("\n") var files = file_string.split("\n")
files = Array(files) files = Array(files)
# The last entry is an empty string, remove it. # The last entry is an empty string, remove it.