From db2cc99cc703c96a5c877d48cdf249ef4ae02b4e Mon Sep 17 00:00:00 2001 From: Jack Miner <3ch01c@gmail.com> Date: Sun, 24 Mar 2019 20:34:01 -0600 Subject: [PATCH] Added support for mothballing puzzles containing files with spaces in their filenames and creating mothball path if it doesn't exist. --- devel/moth.py | 7 ++++--- devel/mothballer.py | 3 +++ docs/CREDITS.md | 1 + 3 files changed, 8 insertions(+), 3 deletions(-) diff --git a/devel/moth.py b/devel/moth.py index 6a62116..6d04aa2 100644 --- a/devel/moth.py +++ b/devel/moth.py @@ -12,6 +12,7 @@ import os import random import string import tempfile +import shlex messageChars = b'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ' @@ -112,7 +113,7 @@ class Puzzle: elif key == 'name': pass elif key == 'file': - parts = val.split() + parts = shlex.split(val) name = parts[0] hidden = False stream = open(name, 'rb') @@ -264,10 +265,10 @@ class Puzzle: def html_body(self): """Format and return the markdown for the puzzle body.""" return mistune.markdown(self.get_body(), escape=False) - + def package(self, answers=False): """Return a dict packaging of the puzzle.""" - + files = [fn for fn,f in self.files.items() if f.visible] return { 'authors': self.authors, diff --git a/devel/mothballer.py b/devel/mothballer.py index 19bd46d..135034b 100755 --- a/devel/mothballer.py +++ b/devel/mothballer.py @@ -59,6 +59,9 @@ def build_category(categorydir, outdir): mothball = package(categoryname, categorydir, category_seed) shutil.copyfileobj(mothball, zipfileraw) zipfileraw.close() + zipfiledir = os.path.dirname(zipfilename) + if not os.path.exists(zipfiledir): + os.makedirs(zipfiledir) shutil.move(zipfileraw.name, zipfilename) diff --git a/docs/CREDITS.md b/docs/CREDITS.md index ada9f18..367b28c 100644 --- a/docs/CREDITS.md +++ b/docs/CREDITS.md @@ -5,6 +5,7 @@ Being in this list is voluntary. Add your name when you contribute code. * Paul Ferrell * Shannon Steinfadt * John Donaldson +* 3ch01c Word List ---------