Example #1
0
 def _save(self, name, original_file):
     file = original_file
     if not any((name.startswith(prefix) for prefix in self._ignored_prefixes)):
         for suffix in self.supported_suffixes:
             if self.minify_enabled(suffix) and name.endswith('.%s' % suffix) \
             and not name.endswith('.min.%s' % suffix):
                 try:
                     full_content = NamedTemporaryFile(suffix='.%s' % suffix)
                     full_content.write(original_file.read())
                     full_content.flush()
                     minified_content = NamedTemporaryFile(suffix='.min.%s' % suffix)
                     yuicompress = run(full_content.name, '-o', minified_content.name)
                     assert yuicompress == 0, 'YUI Compressor failed on %s' % name
                     new_content = minified_content.read()
                     file = ContentFile(new_content)
                 except Exception:
                     logging.exception('Minify %s error for %s' % (suffix, name))
                     file = original_file
     return super()._save(name, file)
Example #2
0
                        try:
                            os.remove(p)
                        except OSError, e:
                            _stderr('** Could not remove file {0} {1}\n'.format(p, e))

        # If compression is enabled run it.
        if self.config.compress:
            import yuicompressor
            _stdout('** With compressing\n')
            for root, dirs, files in os.walk(self.config.build_dir + os.sep + self.config.paths['assets'], topdown=True):
                for pat in self.config.compress:
                    for f in fnmatch.filter(files, pat):
                        if not f.endswith('min.js') or not f.endswith('min.css'):
                            _stdout('>> {0}\n'.format(f))
                            yuicompressor.run(
                                os.path.join(root, f),
                                "-o", os.path.join(root, f)
                            )

    def build(self):
        """ Build this site and it resources.
        """
        _stdout('** Building site\n')
        # We start fresh on each build.
        self.context = self.config.site_context if self.config.site_context else dict()
        self.resources = list()
        self.articles = list()
        self.media = list()

        if not os.path.exists(self.config.build_dir):
            mkdir_p(self.config.build_dir)