From 46afdfb24188f6333d0f1093d0296cb1df41e319 Mon Sep 17 00:00:00 2001 From: LongHairedHacker Date: Sat, 23 Apr 2016 00:42:04 +0200 Subject: [PATCH] Added a simple sass compiler for assets --- mixins/assetsmixin.py | 2 -- modules/sassassets.py | 39 +++++++++++++++++++++++++++++++++++++++ requirements.txt | 5 +++++ 3 files changed, 44 insertions(+), 2 deletions(-) create mode 100644 modules/sassassets.py diff --git a/mixins/assetsmixin.py b/mixins/assetsmixin.py index c4a6a58..332519f 100644 --- a/mixins/assetsmixin.py +++ b/mixins/assetsmixin.py @@ -1,6 +1,4 @@ #!/usr/bin/env python2 -import os -import shutil from verdandi.constants import CONTENT_DIRECTORY diff --git a/modules/sassassets.py b/modules/sassassets.py new file mode 100644 index 0000000..5895c83 --- /dev/null +++ b/modules/sassassets.py @@ -0,0 +1,39 @@ +#!/usr/bin/env python2 + +import os +from pylibsass import sass + +from verdandi.mixins.messagemixin import MessageMixin +from verdandi.mixins.rendermixin import RenderMixin +from verdandi.mixins.assetsmixin import AssetsMixin + +class SassAssets(MessageMixin, RenderMixin, AssetsMixin): + + def collect_assets(self, output_directory): + super(SassAssets, self).collect_assets(output_directory) + + assets = self.get_assets() + + for source, destination in assets: + source_path = os.path.join(self.asset_directory, source) + dest_path = os.path.join(output_directory, destination); + + if os.path.isfile(source_path): + self.compile_file(source_path, dest_path) + else: + print "Skipping %s is not a file" % source_path + + + def compile_file(self, source_path, dest_path): + print "Compiling %s to %s" % (source_path, dest_path) + + sass_file = open(source_path, 'r') + css_file = open(dest_path, 'w') + + sass_string = sass_file.read().decode('utf-8') + css_string = sass.compile_str(sass_string) + + css_file.write(css_string.encode('utf-8')) + + sass_file.close() + css_file.close() diff --git a/requirements.txt b/requirements.txt index 5f84310..1924b5f 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,7 +1,12 @@ +argh==0.26.1 inotify==0.2.4 Jinja2==2.7.3 Markdown==2.6 MarkupSafe==0.23 +pathtools==0.1.2 Pillow==3.1.0 +pylibsass==0.1.4 python-dateutil==2.4.2 +PyYAML==3.11 six==1.10.0 +watchdog==0.8.3