aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java
diff options
context:
space:
mode:
authorMichael Williamson <mike@zwobble.org>2015-10-10 14:32:50 +0100
committerMichael Williamson <mike@zwobble.org>2015-10-10 14:32:50 +0100
commit18c923db3dce4d6e59b212e2a19f0d087a899622 (patch)
tree7a8c42167882fb4ca135bc691d4eb3fa8fd12eca /src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java
parent5116bf791a6360627e6683d818623b49e25900a5 (diff)
Use relative imports for Python backend
Diffstat (limited to 'src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java')
-rw-r--r--src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java20
1 files changed, 18 insertions, 2 deletions
diff --git a/src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java b/src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java
index 1fb9149..8787d81 100644
--- a/src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java
+++ b/src/main/java/org/zwobble/couscous/backends/python/PythonCompiler.java
@@ -1,6 +1,7 @@
package org.zwobble.couscous.backends.python;
import java.io.File;
+import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.util.List;
@@ -17,9 +18,11 @@ import lombok.val;
public class PythonCompiler {
private final Path root;
+ private final String packageName;
- public PythonCompiler(Path root) {
+ public PythonCompiler(Path root, String packageName) {
this.root = root;
+ this.packageName = packageName;
}
public void compile(List<ClassNode> classes) {
@@ -34,7 +37,9 @@ public class PythonCompiler {
}
private Path pathForClass(TypeName className) {
- return root.resolve(className.getQualifiedName().replace(".", File.separator) + ".py");
+ return root
+ .resolve(packageName)
+ .resolve(className.getQualifiedName().replace(".", File.separator) + ".py");
}
private void compileClass(ClassNode classNode) {
@@ -45,6 +50,17 @@ public class PythonCompiler {
private void writeClass(TypeName name, String contents) {
val path = pathForClass(name);
Files.createDirectories(path.getParent());
+ createPythonPackages(path.getParent());
Files.write(path, asList(contents));
}
+
+ private void createPythonPackages(Path packagePath) throws IOException {
+ while (packagePath.startsWith(root)) {
+ val packageFile = packagePath.resolve("__init__.py");
+ if (!packageFile.toFile().exists()) {
+ Files.createFile(packageFile);
+ }
+ packagePath = packagePath.getParent();
+ }
+ }
}