Merge pull request #393 from tbunnyman/DeleteContentsNotDirectory

Change behavior of DELETE_OUTPUT_DIRECTORY to purge contents of the directory…
This commit is contained in:
Alexis Metaireau 2012-07-04 15:24:43 -07:00
commit 236dbb2842
4 changed files with 28 additions and 8 deletions

View file

@ -238,5 +238,3 @@ Or run a simple web server using Python::
cd output && python -m SimpleHTTPServer
(Tip: If using the latter method in conjunction with the auto-reload feature,
ensure that ``DELETE_OUTPUT_DIRECTORY`` is set to ``False`` in your settings file.)

View file

@ -37,8 +37,8 @@ Setting name (default value) What doe
timestamp information (mtime) if it can't get
date information from the metadata.
`JINJA_EXTENSIONS` (``[]``) A list of any Jinja2 extensions you want to use.
`DELETE_OUTPUT_DIRECTORY` (``False``) Delete the output directory as well as
the generated files.
`DELETE_OUTPUT_DIRECTORY` (``False``) Delete the content of the output directory before
generating new files.
`LOCALE` (''[#]_) Change the locale. A list of locales can be provided
here or a single string representing one locale.
When providing a list, all the locales will be tried

View file

@ -92,10 +92,22 @@ def clean_output_dir(path):
"""Remove all the files from the output directory"""
# remove all the existing content from the output folder
try:
shutil.rmtree(path)
except Exception:
pass
for filename in os.listdir(path):
file = os.path.join(path, filename)
if os.path.isdir(file):
try:
shutil.rmtree(file)
logger.debug("Deleted directory %s" % file)
except Exception, e:
logger.error("Unable to delete directory %s; %e" % file, e)
elif os.path.isfile(file) or os.path.islink(file):
try:
os.remove(file)
logger.debug("Deleted file/link %s" % file)
except Exception, e:
logger.error("Unable to delete file %s; %e" % file, e)
else:
logger.error("Unable to delete %s, file type unknown" % file)
def get_relative_path(filename):

View file

@ -1,4 +1,5 @@
# -*- coding: utf-8 -*-
import shutil
import os
import datetime
import time
@ -86,3 +87,12 @@ class TestUtils(unittest.TestCase):
changed = utils.files_changed(path, 'rst')
self.assertEquals(changed, True)
self.assertAlmostEqual(utils.LAST_MTIME, t, delta=1)
def test_clean_output_dir(self):
test_directory = os.path.join(os.path.dirname(__file__), 'clean_output')
content = os.path.join(os.path.dirname(__file__), 'content')
shutil.copytree(content, test_directory)
utils.clean_output_dir(test_directory)
self.assertTrue(os.path.isdir(test_directory))
self.assertListEqual([], os.listdir(test_directory))
shutil.rmtree(test_directory)