forked from github/pelican
Change behavior of DELETE_OUTPUT_DIRECTORY to purge contents of the directory, not the directory itself.
Added Debug level logging for each deletion Added error level logging when a delete has an exception Built a test case for clean_output_directory in tests.utils.py Updated `settings` in documentation to reflect new behavior Removed the tip from the bottom of getting started since this setting should no longer break web servers pointing to the output directory.
This commit is contained in:
parent
76f86fb3ca
commit
d589450200
4 changed files with 29 additions and 8 deletions
|
|
@ -234,5 +234,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.)
|
||||
|
|
|
|||
|
|
@ -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 contents 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
|
||||
|
|
|
|||
|
|
@ -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):
|
||||
logger.debug("Deleting directory %s" % file)
|
||||
try:
|
||||
shutil.rmtree(file)
|
||||
except Exception, e:
|
||||
logger.error("Unable to delete directory %s; %e" % file, e)
|
||||
elif os.path.isfile(file) or os.path.islink(file):
|
||||
logger.debug("Deleting file/link %s" % file)
|
||||
try:
|
||||
os.remove(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):
|
||||
|
|
|
|||
|
|
@ -1,4 +1,5 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
import shutil
|
||||
import os
|
||||
import datetime
|
||||
import time
|
||||
|
|
@ -86,3 +87,13 @@ 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)
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue