Skip to content

Commit c75f43a

Browse files
committed
[ty] Fix playground crash when file name includes path separator
1 parent 4fd8d4b commit c75f43a

File tree

1 file changed

+10
-2
lines changed

1 file changed

+10
-2
lines changed

playground/ty/src/Editor/SecondaryPanel.tsx

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -103,6 +103,8 @@ function Content({
103103
}
104104
}
105105

106+
const PYODIDE_HOME = "/home/pyodide/";
107+
106108
function Run({ files, theme }: { files: ReadonlyFiles; theme: Theme }) {
107109
const [runOutput, setRunOutput] = useState<Promise<string> | null>(null);
108110
const handleRun = () => {
@@ -122,7 +124,13 @@ function Run({ files, theme }: { files: ReadonlyFiles; theme: Theme }) {
122124

123125
let fileName = "main.py";
124126
for (const file of files.index) {
125-
pyodide.FS.writeFile(file.name, files.contents[file.id]);
127+
const last_separator = file.name.lastIndexOf("/");
128+
129+
if (last_separator !== -1) {
130+
const directory = PYODIDE_HOME + file.name.slice(0, last_separator);
131+
pyodide.FS.mkdirTree(directory);
132+
}
133+
pyodide.FS.writeFile(PYODIDE_HOME + file.name, files.contents[file.id]);
126134

127135
if (file.id === files.selected) {
128136
fileName = file.name;
@@ -133,7 +141,7 @@ function Run({ files, theme }: { files: ReadonlyFiles; theme: Theme }) {
133141
const globals = dict();
134142

135143
try {
136-
// Patch up reveal types
144+
// Patch `reveal_type` to print runtime values
137145
pyodide.runPython(`
138146
import builtins
139147

0 commit comments

Comments
 (0)