Merge pull request #45 from noirbizarre/patch-2

Silent optipng too
This commit is contained in:
Justin Mayer
2013-07-30 19:13:59 -07:00

View File

@@ -16,11 +16,16 @@ from pelican import signals
logger = logging.getLogger(__name__) logger = logging.getLogger(__name__)
# Display command output on DEBUG and TRACE
SHOW_OUTPUT = logger.getEffectiveLevel() <= logging.DEBUG
# A list of file types with their respective commands # A list of file types with their respective commands
COMMANDS = [ COMMANDS = {
('.jpg', 'jpegtran -copy none -optimize -outfile "{filename}" "{filename}"'), # '.ext': ('command {flags} {filename', 'silent_flag', 'verbose_flag')
('.png', 'optipng "{filename}"'), '.jpg': ('jpegtran {flags} -copy none -optimize -outfile "{filename}" "{filename}"', '', '-v'),
] '.png': ('optipng {flags} "{filename}"', '--quiet', ''),
}
def optimize_images(pelican): def optimize_images(pelican):
""" """
@@ -30,6 +35,7 @@ def optimize_images(pelican):
""" """
for dirpath, _, filenames in os.walk(pelican.settings['OUTPUT_PATH']): for dirpath, _, filenames in os.walk(pelican.settings['OUTPUT_PATH']):
for name in filenames: for name in filenames:
if os.path.splitext(name)[1] in COMMANDS.keys():
optimize(dirpath, name) optimize(dirpath, name)
def optimize(dirpath, filename): def optimize(dirpath, filename):
@@ -40,10 +46,13 @@ def optimize(dirpath, filename):
:param dirpath: Path of the file to be optimzed :param dirpath: Path of the file to be optimzed
:param name: A file name to be optimized :param name: A file name to be optimized
""" """
for extension, command in COMMANDS:
if filename.endswith(extension):
filepath = os.path.join(dirpath, filename) filepath = os.path.join(dirpath, filename)
command = command.format(filename=filepath) logger.info('optimizing %s', filepath)
ext = os.path.splitext(filename)[1]
command, silent, verbose = COMMANDS[ext]
flags = verbose if SHOW_OUTPUT else silent
command = command.format(filename=filepath, flags=flags)
call(command, shell=True) call(command, shell=True)