diff --git a/_tools/get_started.py b/_tools/get_started.py index 7d7b520581..563ad0566c 100644 --- a/_tools/get_started.py +++ b/_tools/get_started.py @@ -4,30 +4,30 @@ import os -def log(s, end = "\n"): - print(s, end = end, flush = True) +from lib.logging import log -def install_python_script(src, dst, tools): - log(f"Copying {src}... ", end = "") +def generate_script_executing_script(script_to_execute): + contents = "" + contents += "from importlib.machinery import SourceFileLoader\n" + contents += f"SourceFileLoader('__main__', '{script_to_execute}').load_module()\n" + return contents - with open(src) as src_file: - script = src_file.read() - tools = tools.replace("\\", "\\\\") - repl_from = "path_to_tools = '..'" - repl_to = f"path_to_tools ='{tools}'" - script = script.replace(repl_from, repl_to, 1) - with open(dst, "w") as dst_file: - dst_file.write(script) +def create_workspace_script(name, script_to_execute): + log(f"Installing {name}... ", end = "") - log(f"Done") + script_contents = generate_script_executing_script(script_to_execute) + with open(name, "w") as f: + f.write(script_contents) + + log("Done") if __name__ == "__main__": tools_get_started_py = os.path.abspath(__file__) tools = os.sep.join(tools_get_started_py.split(os.sep)[:-1]) tools_workspace = os.sep.join([tools, "workspace"]) - # Copy scripts from _tools/workspace to current folder, but let them know - # where the _tools/lib is (change their value of tools variable) - tools_workspace_run_py = os.sep.join([tools_workspace, "run.py"]) - tools_workspace_build_py = os.sep.join([tools_workspace, "build.py"]) - install_python_script(tools_workspace_run_py, "run.py", tools) - install_python_script(tools_workspace_build_py, "build.py", tools) + # Create (in current directory) scripts that execute + # the same named scripts from _tools/workspace + tools_workspace_run_py = os.path.join(tools_workspace, "run.py") + tools_workspace_build_py = os.path.join(tools_workspace, "build.py") + create_workspace_script("run.py", tools_workspace_run_py) + create_workspace_script("build.py", tools_workspace_build_py) diff --git a/_tools/workspace/build.py b/_tools/workspace/build.py index 42fe552125..6b2e5ae510 100644 --- a/_tools/workspace/build.py +++ b/_tools/workspace/build.py @@ -1,7 +1,8 @@ import sys import os -path_to_tools = '..' +path_to_tools_workspace = os.path.dirname(os.path.abspath(__file__)) +path_to_tools = os.path.dirname(path_to_tools_workspace) sys.path.append(path_to_tools) from lib.tupfile_parser import parse as parse_tupfile diff --git a/_tools/workspace/run.py b/_tools/workspace/run.py index 64fc73c230..c1e6d5e746 100644 --- a/_tools/workspace/run.py +++ b/_tools/workspace/run.py @@ -5,11 +5,12 @@ import shutil import urllib.request import subprocess -import build - -path_to_tools = '..' +path_to_tools_workspace = os.path.dirname(os.path.abspath(__file__)) +path_to_tools = os.path.dirname(path_to_tools_workspace) sys.path.append(path_to_tools) +from workspace.build import build + from lib.makeflop import Floppy from lib.platform import is_win32, path from lib.logging import log @@ -50,7 +51,7 @@ def run_qemu(start_dir = "workspace"): return subprocess.Popen(a, bufsize = 0, stdout = qemu_stdout, stderr = qemu_stderr, stdin = subprocess.DEVNULL, start_new_session = True) if __name__ == "__main__": - program_files = build.build() + program_files = build() os.makedirs("workspace", exist_ok = True)