summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--support/asymptote/__init__.py0
-rw-r--r--support/asymptote/__main__.py24
-rw-r--r--support/lib/util.py17
4 files changed, 33 insertions, 10 deletions
diff --git a/Makefile b/Makefile
index f3e8512..0aedd9e 100644
--- a/Makefile
+++ b/Makefile
@@ -84,7 +84,7 @@ $(SCAD_STL_FILES): %.stl: %.scad $(GLOBAL_DEPS) | $(SCAD_ORDER_DEPS)
# Rule to export an SVG file to an Asymptote file.
$(ASY_PDF_FILES): %.pdf: %.asy $(GLOBAL_DEPS) $(COMPILED_SRC_FILES) $(SVG_ASY_FILES)
- ASYMPTOTE_DIR=$$(dirname $@) $(ASYMPTOTE) -f pdf -o $@ $<
+ $(ASYMPTOTE_CMD) $*.asy $@
# Rule for automaticaly generated OpenSCAD files.
$(GENERATED_FILES): generate_sources.sh $(GLOBAL_DEPS)
diff --git a/support/asymptote/__init__.py b/support/asymptote/__init__.py
new file mode 100644
index 0000000..e69de29
--- /dev/null
+++ b/support/asymptote/__init__.py
diff --git a/support/asymptote/__main__.py b/support/asymptote/__main__.py
new file mode 100644
index 0000000..1816224
--- /dev/null
+++ b/support/asymptote/__main__.py
@@ -0,0 +1,24 @@
+import os, sys
+from lib import util
+
+
+def _asymptote(in_path, out_path, asymptote_dir):
+ util.command([os.environ['ASYMPTOTE'], '-f', 'pdf', '-o', out_path, in_path], set_env = { 'ASYMPTOTE_DIR': asymptote_dir })
+
+
+def main(in_path, out_path):
+ _, out_suffix = os.path.splitext(out_path)
+
+ if out_suffix == '.pdf':
+ _asymptote(in_path, out_path, os.path.dirname(in_path))
+ else:
+ raise Exception('Unknown file type: {}'.format(out_suffix))
+
+
+try:
+ main(*sys.argv[1:])
+except util.UserError as e:
+ print 'Error:', e
+ sys.exit(1)
+except KeyboardInterrupt:
+ sys.exit(2)
diff --git a/support/lib/util.py b/support/lib/util.py
index 3c5117d..54b92f0 100644
--- a/support/lib/util.py
+++ b/support/lib/util.py
@@ -27,15 +27,14 @@ def TemporaryDirectory():
shutil.rmtree(dir)
-def command(args, remove_env = None):
- if remove_env is None:
- env = None
- else:
- env = dict(os.environ)
-
- for i in remove_env:
- if i in env:
- del env[i]
+def command(args, remove_env = [], set_env = { }):
+ env = dict(os.environ)
+
+ for i in remove_env:
+ del env[i]
+
+ for k, v in set_env.items():
+ env[k] = v
process = subprocess.Popen(args, env = env)
process.wait()