Skip to content

Commit 3d7964b

Browse files
committed
Fix Windows file write permission issue (fixes jespino#9)
1 parent 1d3a096 commit 3d7964b

File tree

1 file changed

+16
-6
lines changed

1 file changed

+16
-6
lines changed

export_layers.py

+16-6
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import sys
44
sys.path.append('/usr/share/inkscape/extensions')
5+
import contextlib
56
import inkex
67
import os
78
import subprocess
@@ -34,15 +35,15 @@ def effect(self):
3435
if not os.path.exists(os.path.join(output_path)):
3536
os.makedirs(os.path.join(output_path))
3637

37-
with tempfile.NamedTemporaryFile() as fp_svg:
38-
layer_dest_svg_path = fp_svg.name
38+
with _make_temp_directory() as tmp_dir:
39+
layer_dest_svg_path = os.path.join(tmp_dir, "export.svg")
3940
self.export_layers(layer_dest_svg_path, show_layer_ids)
4041

4142
if self.options.filetype == "jpeg":
42-
with tempfile.NamedTemporaryFile() as fp_png:
43-
self.exportToPng(layer_dest_svg_path, fp_png.name)
44-
layer_dest_jpg_path = os.path.join(output_path, "%s_%s.jpg" % (str(counter).zfill(3), layer_label))
45-
self.convertPngToJpg(fp_png.name, layer_dest_jpg_path)
43+
tmp_dest_png_path = os.path.join(tmp_dir, "export.png")
44+
self.exportToPng(layer_dest_svg_path, tmp_dest_png_path)
45+
layer_dest_jpg_path = os.path.join(output_path, "%s_%s.jpg" % (str(counter).zfill(3), layer_label))
46+
self.convertPngToJpg(tmp_dest_png_path, layer_dest_jpg_path)
4647
else:
4748
layer_dest_png_path = os.path.join(output_path, "%s_%s.png" % (str(counter).zfill(3), layer_label))
4849
self.exportToPng(layer_dest_svg_path, layer_dest_png_path)
@@ -103,6 +104,15 @@ def convertPngToJpg(self, png_path, output_path):
103104
p.wait()
104105

105106

107+
@contextlib.contextmanager
108+
def _make_temp_directory():
109+
temp_dir = tempfile.mkdtemp(prefix="tmp-inkscape")
110+
try:
111+
yield temp_dir
112+
finally:
113+
shutil.rmtree(temp_dir)
114+
115+
106116
def _main():
107117
e = PNGExport()
108118
e.affect()

0 commit comments

Comments
 (0)