# Based on https://github.com/datafolklabs/cement/issues/295
# To avoid encoding releated error,we defined our custom output handler
# I hope we will remove this when we upgarde to Cement 2.6 (Not released yet)
import os

from cement.ext.ext_mustache import MustacheOutputHandler
from cement.utils import fs


class WOOutputHandler(MustacheOutputHandler):
    class Meta:
        label = 'wo_output_handler'

    def _load_template_from_file(self, path):
        for templ_dir in self.app._meta.template_dirs:
            full_path = fs.abspath(os.path.join(templ_dir, path))
            if os.path.exists(full_path):
                self.app.log.debug('loading template file %s' % full_path)
                return open(full_path, encoding='utf-8', mode='r').read()
            else:
                continue
