flexget.plugins.generic.cron_env
Covered: 22 lines
Missed: 13 lines
Skipped 11 lines
Percent: 62 %
 1
from flexget.utils.log import log_once
 3
__author__ = 'paranoidi'
 5
import sys
 6
from flexget.utils.simple_persistence import SimplePersistence
 7
from flexget.plugin import register_plugin
 8
import logging
10
log = logging.getLogger('cron_env')
13
class CronEnvPlugin(object):
15
    def __init__(self, ):
16
        self.executed = False
17
        self.persistence = SimplePersistence(plugin='cron_env')
19
    def on_process_start(self, feed, entries):
20
        if self.executed:
21
            return
23
        encoding = sys.getfilesystemencoding()
24
        if feed.manager.options.quiet:
25
            if 'terminal_encoding' in self.persistence:
26
                terminal_encoding = self.persistence['terminal_encoding']
27
                if terminal_encoding != encoding:
28
                    log.warning('Your cron environment has different filesystem encoding '
29
                                '(%s) compared to your terminal environment (%s).' %
30
                                (encoding, terminal_encoding))
31
                    if encoding == 'ANSI_X3.4-1968':
32
                        log.warning('Your current cron environment results filesystem encoding ANSI_X3.4-1968 '
33
                                    'which supports only ASCII letters in filenames.')
34
                else:
35
                    log_once('Good! Your crontab environment seems to be same as terminal.')
36
            else:
37
                log.info('Please run FlexGet manually once for environment verification purposes.')
38
        else:
39
            log.debug('Encoding %s stored' % encoding)
40
            self.persistence['terminal_encoding'] = encoding
41
        self.executed = True
44
if not sys.platform.startswith('win'):
45
    register_plugin(CronEnvPlugin, 'cron_env', api_ver=2, builtin=True)