Пример #1
0
    def run(self, edit, immediate=True):
        # Whether RendererManager is finished loading?
        if not RendererManager.ensure_started():
            sublime.status_message('OmniMarkupPreviewer have not yet started')
            return

        buffer_id = self.view.buffer_id()
        # Opened in a tab already?
        opened = False
        for view in self.view.window().views():
            if view.buffer_id() == buffer_id:
                opened = True
                break
        if not opened:
            RendererManager.enqueue_view(self.view, immediate=True)

        host = Setting.instance().server_host
        port = Setting.instance().server_port
        if host == '0.0.0.0':
            host = '127.0.0.1'
        url = 'http://%s:%d/view/%d' % (host, port, buffer_id)
        # Open with the default browser
        log.info('Launching web browser for %s', url)
        launching_web_browser_for_url(
            url,
            success_msg_default='Preview launched in default web browser',
            success_msg_user='******')
    def write_to_file(self, html_content, setting):
        target_folder = setting.export_options.get('target_folder', '.')

        if target_folder is not None:
            fullpath = self.view.file_name() or ''
            timestamp_format = setting.export_options.get('timestamp_format', '_%y%m%d%H%M%S')
            timestr = time.strftime(timestamp_format, time.localtime())

            if (not os.path.exists(fullpath) and target_folder == '.') or \
                    not os.path.isdir(target_folder):
                target_folder = None
            elif target_folder == '.':
                fn_base, _ = os.path.splitext(fullpath)
                html_fn = '%s%s.html' % (fn_base, timestr)
            elif not os.path.exists(fullpath):
                html_fn = os.path.join(target_folder, 'Untitled%s.html' % timestr)
            else:
                fn_base = os.path.basename(fullpath)
                html_fn = os.path.join(target_folder, '%s%s.html' % (fn_base, timestr))

        # No target folder, create file in temporary directory
        if target_folder is None:
            with tempfile.NamedTemporaryFile(delete=False, suffix='.html') as f:
                html_fn = f.name

        with codecs.open(html_fn, 'w', encoding='utf-8') as html_file:
            html_file.write(html_content)
            log.info('Successfully exported to: %s', html_fn)

        return html_fn
Пример #3
0
    def write_to_file(self, html_content, setting):
        target_folder = setting.export_options.get('target_folder', '.')

        if target_folder is not None:
            fullpath = self.view.file_name() or ''
            timestamp_format = setting.export_options.get('timestamp_format', '_%y%m%d%H%M%S')
            timestr = time.strftime(timestamp_format, time.localtime())

            if (not os.path.exists(fullpath) and target_folder == '.') or \
                    not os.path.isdir(target_folder):
                target_folder = None
            elif target_folder == '.':
                fn_base, _ = os.path.splitext(fullpath)
                html_fn = '%s%s.html' % (fn_base, timestr)
            elif not os.path.exists(fullpath):
                html_fn = os.path.join(target_folder, 'Untitled%s.html' % timestr)
            else:
                fn_base = os.path.basename(fullpath)
                html_fn = os.path.join(target_folder, '%s%s.html' % (fn_base, timestr))

        # No target folder, create file in temporary directory
        if target_folder is None:
            with tempfile.NamedTemporaryFile(delete=False, suffix='.html') as f:
                html_fn = f.name

        with codecs.open(html_fn, 'w', encoding='utf-8') as html_file:
            html_file.write(html_content)
            log.info('Successfully exported to: %s', html_fn)

        return html_fn
    def run(self, edit, clipboard_only=False):
        view = self.view
        try:
            html_content = RendererManager.render_view_as_html(view)

            if clipboard_only:
                self.copy_to_clipboard(html_content)
                return

            setting = Setting.instance()
            html_fn = self.write_to_file(html_content, setting)

            # Copy contents to clipboard
            if setting.export_options.get('copy_to_clipboard', False):
                self.copy_to_clipboard(html_content)

            # Open output file if necessary
            if setting.export_options.get('open_after_exporting', False):
                log.info('Launching web browser for %s', html_fn)
                launching_web_browser_for_url(html_fn)

        except NotImplementedError:
            pass
        except:
            sublime.error_message('Error while exporting, please check your console for more information.')
            log.exception('Error while exporting')
    def run(self, edit, immediate=True):
        # Whether RendererManager is finished loading?
        if not RendererManager.ensure_started():
            sublime.status_message('OmniMarkupPreviewer have not yet started')
            return

        buffer_id = self.view.buffer_id()
        # Opened in a tab already?
        opened = False
        for view in self.view.window().views():
            if view.buffer_id() == buffer_id:
                opened = True
                break
        if not opened:
            RendererManager.enqueue_view(self.view, immediate=True)

        host = Setting.instance().server_host
        port = Setting.instance().server_port
        if host == '0.0.0.0':
            host = '127.0.0.1'
        url = 'http://%s:%d/view/%d' % (host, port, buffer_id)
        # Open with the default browser
        log.info('Launching web browser for %s', url)
        launching_web_browser_for_url(
            url,
            success_msg_default='Preview launched in default web browser',
            success_msg_user='******')
Пример #6
0
    def run(self, edit, clipboard_only=False):
        view = self.view
        try:
            html_content = RendererManager.render_view_as_html(view)

            if clipboard_only:
                self.copy_to_clipboard(html_content)
                return

            setting = Setting.instance()
            html_fn = self.write_to_file(html_content, setting)

            # Copy contents to clipboard
            if setting.export_options['copy_to_clipboard']:
                self.copy_to_clipboard(html_content)

            # Open output file if necessary
            if setting.export_options['open_after_exporting']:
                log.info('Launching web browser for %s', html_fn)
                launching_web_browser_for_url(html_fn)

        except NotImplementedError:
            pass
        except:
            log.exception('Error while exporting')
Пример #7
0
def bottle_run(server):
    try:
        global app
        log.info("Bottle v%s server starting up..." % (bottle.__version__))
        log.info("Listening on http://%s:%d/" % (server.host, server.port))
        server.run(app)
    except:
        raise
Пример #8
0
def bottle_run(server):
    try:
        global app
        log.info("Bottle v%s server starting up..." % (bottle.__version__))
        log.info("Listening on http://%s:%d/" % (server.host, server.port))
        server.run(app)
    except:
        raise
Пример #9
0
 def clean(self, keep_ids=set()):
     with self.rwlock.writelock:
         remove_ids = set(self.cache.keys())
         remove_ids -= keep_ids
         if len(remove_ids) == 0:
             return
         for buffer_id in remove_ids:
             del self.cache[buffer_id]
         log.info("Clean buffer ids in: %s" % list(remove_ids))
Пример #10
0
 def clean(self, keep_ids=set()):
     with self.rwlock.writelock:
         remove_ids = set(self.cache.keys())
         remove_ids -= keep_ids
         if len(remove_ids) == 0:
             return
         for buffer_id in remove_ids:
             del self.cache[buffer_id]
         log.info("Clean buffer ids in: %s" % list(remove_ids))
Пример #11
0
    def on_setting_changed(cls, setting):
        # Unload ignored renderers
        if cls.OLD_IGNORED_RENDERERS != setting.ignored_renderers:
            # Reload renderers, of course
            log.info('Reloading renderers...')
            cls.load_renderers()

        with cls.RW_LOCK.readlock:
            for renderer_classname, renderer in cls.RENDERERS:
                key = 'renderer_options-' + renderer_classname
                try:
                    renderer_options = setting._sublime_settings.get(key, {})
                    renderer.load_settings(renderer_options, setting)
                except:
                    log.exception('Error on setting renderer options for %s', renderer_classname)
Пример #12
0
    def run(self, edit):
        view = self.view
        try:
            html_content = RendererManager.render_view_to_string(view)
            setting = Setting.instance()
            target_folder = setting.export_options['target_folder']

            if target_folder is not None:
                fullpath = self.view.file_name() or ''
                timestamp_format = setting.export_options['timestamp_format']

                if (not os.path.exists(fullpath) and target_folder == ".") or \
                not os.path.isdir(target_folder):
                    target_folder = None
                elif target_folder == '.':
                    fn_base, _ = os.path.splitext(fullpath)
                    html_fn = '%s%s.html' % (
                        fn_base,
                        time.strftime(timestamp_format, time.localtime()))
                elif not os.path.exists(fullpath):
                    html_fn = os.path.join(target_folder, 'Untitled%s.html' % \
                        time.strftime(timestamp_format, time.localtime()))
                else:
                    fn_base = os.path.basename(fullpath)
                    html_fn = os.path.join(target_folder, '%s%s.html' % \
                        (fn_base, time.strftime(timestamp_format, time.localtime())))

            if target_folder is None:
                with tempfile.NamedTemporaryFile(delete=False,
                                                 suffix='.html') as f:
                    html_fn = f.name

            with codecs.open(html_fn, 'w', encoding='utf-8') as html_file:
                html_file.write(html_content)

            # Copy contents to clipboard
            if setting.export_options['copy_to_clipboard']:
                sublime.set_clipboard(html_content)
                sublime.status_message('Exported result copied to clipboard')
            # Open output file if necessary
            if setting.export_options['open_after_exporting']:
                log.info('Launching web browser for %s', html_fn)
                launching_web_browser_for_url(html_fn)

        except NotImplementedError:
            pass
        except:
            log.exception("Error while exporting")
Пример #13
0
    def on_setting_changed(cls, setting):
        # Unload ignored renderers
        if cls.OLD_IGNORED_RENDERERS != setting.ignored_renderers:
            # Reload renderers, of course
            log.info('Reloading renderers...')
            cls.load_renderers()

        with cls.RW_LOCK.readlock:
            for renderer_classname, renderer in cls.RENDERERS:
                key = 'renderer_options-' + renderer_classname
                try:
                    renderer_options = setting._sublime_settings.get(key, {})
                    renderer.load_settings(renderer_options, setting)
                except:
                    log.exception('Error on setting renderer options for %s',
                                  renderer_classname)
Пример #14
0
    def run(self, edit):
        view = self.view
        try:
            html_content = RendererManager.render_view_to_string(view)
            setting = Setting.instance()
            target_folder = setting.export_options['target_folder']

            if target_folder is not None:
                fullpath = self.view.file_name() or ''
                timestamp_format = setting.export_options['timestamp_format']

                if (not os.path.exists(fullpath) and target_folder == ".") or \
                not os.path.isdir(target_folder):
                    target_folder = None
                elif target_folder == '.':
                    fn_base, _ = os.path.splitext(fullpath)
                    html_fn = '%s%s.html' % (fn_base, time.strftime(timestamp_format,
                        time.localtime()))
                elif not os.path.exists(fullpath):
                    html_fn = os.path.join(target_folder, 'Untitled%s.html' % \
                        time.strftime(timestamp_format, time.localtime()))
                else:
                    fn_base = os.path.basename(fullpath)
                    html_fn = os.path.join(target_folder, '%s%s.html' % \
                        (fn_base, time.strftime(timestamp_format, time.localtime())))

            if target_folder is None:
                with tempfile.NamedTemporaryFile(delete=False, suffix='.html') as f:
                    html_fn = f.name

            with codecs.open(html_fn, 'w', encoding='utf-8') as html_file:
                html_file.write(html_content)

            # Copy contents to clipboard
            if setting.export_options['copy_to_clipboard']:
                sublime.set_clipboard(html_content)
                sublime.status_message('Exported result copied to clipboard')
            # Open output file if necessary
            if setting.export_options['open_after_exporting']:
                log.info('Launching web browser for %s', html_fn)
                launching_web_browser_for_url(html_fn)

        except NotImplementedError:
            pass
        except:
            log.exception("Error while exporting")
Пример #15
0
 def _load_renderer(cls, renderers, module_file, module_name):
     try:
         __import__(module_name)
         mod = sys.modules[module_name] = reload(sys.modules[module_name])
         # Get classes
         classes = inspect.getmembers(mod, inspect.isclass)
         for classname, classtype in classes:
             # Register renderer into manager
             if hasattr(classtype, 'IS_VALID_RENDERER__'):
                 try:
                     log.info('Loaded renderer: OmniMarkupLib.Renderers.%s', classname)
                     # Add both classname and its instance
                     renderers.append((classname, classtype()))
                 except:
                     log.exception('Failed to load renderer: %s', classname)
     except:
         log.exception('Failed to load renderer module: OmniMarkupLib/Renderers/%s', module_file)
Пример #16
0
    def run(self, edit, immediate=True):
        buffer_id = self.view.buffer_id()
        # Is opened in a tab?
        opened = False
        for view in self.view.window().views():
            if view.buffer_id == buffer_id:
                opened = True
                break
        if not opened:
            RendererManager.queue_view(self.view, immediate=True)

        url = 'http://localhost:%d/view/%d' % (Setting.instance().server_port, buffer_id)
        # Open with the default browser
        log.info('Launching web browser for %s', url)
        launching_web_browser_for_url(
            url,
            success_msg_default='Preview launched in default web browser',
            success_msg_user='******'
        )
Пример #17
0
    def run(self, edit, immediate=True):
        buffer_id = self.view.buffer_id()
        # Is opened in a tab?
        opened = False
        for view in self.view.window().views():
            if view.buffer_id == buffer_id:
                opened = True
                break
        if not opened:
            RendererManager.queue_view(self.view, immediate=True)

        url = 'http://localhost:%d/view/%d' % (Setting.instance().server_port,
                                               buffer_id)
        # Open with the default browser
        log.info('Launching web browser for %s', url)
        launching_web_browser_for_url(
            url,
            success_msg_default='Preview launched in default web browser',
            success_msg_user='******')
Пример #18
0
    def download(self, url, error_message, timeout, tries):
        http_proxy = self.settings.get('http_proxy')
        https_proxy = self.settings.get('https_proxy')
        if http_proxy or https_proxy:
            proxies = {}
            if http_proxy:
                proxies['http'] = http_proxy
                if not https_proxy:
                    proxies['https'] = http_proxy
            if https_proxy:
                proxies['https'] = https_proxy
            proxy_handler = urllib2.ProxyHandler(proxies)
        else:
            proxy_handler = urllib2.ProxyHandler()
        handlers = [proxy_handler]

        # secure_url_match = re.match('^https://([^/]+)', url)
        # if secure_url_match != None:
        #   secure_domain = secure_url_match.group(1)
        #   bundle_path = self.check_certs(secure_domain, timeout)
        #   if not bundle_path:
        #       return False
        #   handlers.append(VerifiedHTTPSHandler(ca_certs=bundle_path))
        urllib2.install_opener(urllib2.build_opener(*handlers))

        while tries > 0:
            tries -= 1
            try:
                request = urllib2.Request(
                    url, headers={"User-Agent": "OmniMarkup Downloader"})
                http_file = urllib2.urlopen(request, timeout=timeout)
                return http_file.read()

            except (urllib2.HTTPError) as (e):
                # Bitbucket and Github ratelimit using 503 a decent amount
                if str(e.code) == '503':
                    log.info('Downloading %s was rate limited, trying again',
                             url)
                    continue
                log.info('%s HTTP error %s downloading %s.', error_message,
                         str(e.code), url)

            except (urllib2.URLError) as (e):
                # Bitbucket and Github timeout a decent amount
                if str(e.reason) == 'The read operation timed out' or \
                        str(e.reason) == 'timed out':
                    log.info('Downloading %s timed out, trying again', url)
                    continue
                log.info('%s URL error %s downloading %s.', error_message,
                         str(e.reason), url)
            break
        return False
Пример #19
0
 def _load_renderer(cls, renderers, module_file, module_name):
     try:
         __import__(module_name)
         mod = sys.modules[module_name] = reload(sys.modules[module_name])
         # Get classes
         classes = inspect.getmembers(mod, inspect.isclass)
         for classname, classtype in classes:
             # Register renderer into manager
             if hasattr(classtype, 'IS_VALID_RENDERER__'):
                 try:
                     log.info('Loaded renderer: OmniMarkupLib.Renderers.%s',
                              classname)
                     # Add both classname and its instance
                     renderers.append((classname, classtype()))
                 except:
                     log.exception('Failed to load renderer: %s', classname)
     except:
         log.exception(
             'Failed to load renderer module: OmniMarkupLib/Renderers/%s',
             module_file)
Пример #20
0
    def download(self, url, error_message, timeout, tries):
        http_proxy = self.settings.get('http_proxy')
        https_proxy = self.settings.get('https_proxy')
        if http_proxy or https_proxy:
            proxies = {}
            if http_proxy:
                proxies['http'] = http_proxy
                if not https_proxy:
                    proxies['https'] = http_proxy
            if https_proxy:
                proxies['https'] = https_proxy
            proxy_handler = urllib2.ProxyHandler(proxies)
        else:
            proxy_handler = urllib2.ProxyHandler()
        handlers = [proxy_handler]

        # secure_url_match = re.match('^https://([^/]+)', url)
        # if secure_url_match != None:
        #   secure_domain = secure_url_match.group(1)
        #   bundle_path = self.check_certs(secure_domain, timeout)
        #   if not bundle_path:
        #       return False
        #   handlers.append(VerifiedHTTPSHandler(ca_certs=bundle_path))
        urllib2.install_opener(urllib2.build_opener(*handlers))

        while tries > 0:
            tries -= 1
            try:
                request = urllib2.Request(url,
                    headers={"User-Agent": "OmniMarkup Downloader"}
                )
                http_file = urllib2.urlopen(request, timeout=timeout)
                return http_file.read()

            except (urllib2.HTTPError) as (e):
                # Bitbucket and Github ratelimit using 503 a decent amount
                if str(e.code) == '503':
                    log.info('Downloading %s was rate limited, trying again', url)
                    continue
                log.info('%s HTTP error %s downloading %s.', error_message, str(e.code), url)

            except (urllib2.URLError) as (e):
                # Bitbucket and Github timeout a decent amount
                if str(e.reason) == 'The read operation timed out' or \
                        str(e.reason) == 'timed out':
                    log.info('Downloading %s timed out, trying again', url)
                    continue
                log.info('%s URL error %s downloading %s.', error_message, str(e.reason), url)
            break
        return False
Пример #21
0
    def download(self, url, error_message, timeout, tries):
        if not self.wget:
            return False

        self.tmp_file = tempfile.NamedTemporaryFile().name
        command = [self.wget, '--connect-timeout=' + str(int(timeout)),
            '-o', self.tmp_file, '-O', '-', '-U', 'OmniMarkup Downloader']

        command.append(url)

        if self.settings.get('http_proxy'):
            os.putenv('http_proxy', self.settings.get('http_proxy'))
            if not self.settings.get('https_proxy'):
                os.putenv('https_proxy', self.settings.get('http_proxy'))
        if self.settings.get('https_proxy'):
            os.putenv('https_proxy', self.settings.get('https_proxy'))

        while tries > 0:
            tries -= 1
            try:
                result = self.execute(command)
                self.clean_tmp_file()
                return result
            except (NonCleanExitError) as (e):
                error_line = ''
                with open(self.tmp_file) as f:
                    for line in list(f):
                        if re.search('ERROR[: ]|failed: ', line):
                            error_line = line
                            break

                if e.returncode == 8:
                    regex = re.compile('^.*ERROR (\d+):.*', re.S)
                    if re.sub(regex, '\\1', error_line) == '503':
                        # GitHub and BitBucket seem to rate limit via 503
                        log.info('Downloading %s was rate limited, trying again', url)
                        continue
                    error_string = 'HTTP error ' + re.sub('^.*? ERROR ', '',
                        error_line)

                elif e.returncode == 4:
                    error_string = re.sub('^.*?failed: ', '', error_line)
                    # GitHub and BitBucket seem to time out a lot
                    if error_string.find('timed out') != -1:
                        log.info('Downloading %s timed out, trying again', url)
                        continue

                else:
                    error_string = re.sub('^.*?(ERROR[: ]|failed: )', '\\1',
                        error_line)

                error_string = re.sub('\\.?\s*\n\s*$', '', error_string)
                log.info('%s %s downloading %s.', error_message, error_string, url)
            self.clean_tmp_file()
            break
        return False
Пример #22
0
    def download(self, url, error_message, timeout, tries):
        if not self.curl:
            return False
        command = [
            self.curl, '-f', '--user-agent', 'OmniMarkup Downloader',
            '--connect-timeout',
            str(int(timeout)), '-sS'
        ]

        command.append(url)

        if self.settings.get('http_proxy'):
            os.putenv('http_proxy', self.settings.get('http_proxy'))
            if not self.settings.get('https_proxy'):
                os.putenv('HTTPS_PROXY', self.settings.get('http_proxy'))
        if self.settings.get('https_proxy'):
            os.putenv('HTTPS_PROXY', self.settings.get('https_proxy'))

        while tries > 0:
            tries -= 1
            try:
                return self.execute(command)
            except (NonCleanExitError) as (e):
                if e.returncode == 22:
                    code = re.sub('^.*?(\d+)\s*$', '\\1', e.output)
                    if code == '503':
                        # GitHub and BitBucket seem to rate limit via 503
                        log.info(
                            'Downloading %s was rate limited, trying again',
                            url)
                        continue
                    error_string = 'HTTP error ' + code
                elif e.returncode == 6:
                    error_string = 'URL error host not found'
                elif e.returncode == 28:
                    # GitHub and BitBucket seem to time out a lot
                    log.info('Downloading %s timed out, trying again', url)
                    continue
                else:
                    error_string = e.output.rstrip()

                log.info('%s %s downloading %s.', error_message, error_string,
                         url)
            break
        return False
Пример #23
0
    def download(self, url, error_message, timeout, tries):
        if not self.curl:
            return False
        command = [self.curl, '-f', '--user-agent', 'OmniMarkup Downloader',
            '--connect-timeout', str(int(timeout)), '-sS']

        command.append(url)

        if self.settings.get('http_proxy'):
            os.putenv('http_proxy', self.settings.get('http_proxy'))
            if not self.settings.get('https_proxy'):
                os.putenv('HTTPS_PROXY', self.settings.get('http_proxy'))
        if self.settings.get('https_proxy'):
            os.putenv('HTTPS_PROXY', self.settings.get('https_proxy'))

        while tries > 0:
            tries -= 1
            try:
                return self.execute(command)
            except (NonCleanExitError) as (e):
                if e.returncode == 22:
                    code = re.sub('^.*?(\d+)\s*$', '\\1', e.output)
                    if code == '503':
                        # GitHub and BitBucket seem to rate limit via 503
                        log.info('Downloading %s was rate limited, trying again', url)
                        continue
                    error_string = 'HTTP error ' + code
                elif e.returncode == 6:
                    error_string = 'URL error host not found'
                elif e.returncode == 28:
                    # GitHub and BitBucket seem to time out a lot
                    log.info('Downloading %s timed out, trying again', url)
                    continue
                else:
                    error_string = e.output.rstrip()

                log.info('%s %s downloading %s.', error_message, error_string, url)
            break
        return False
def unload_handler():
    log.info('Unloading plugin...')
    # Cleaning up resources...
    PluginManager.instance().stop_server()
    # Stopping renderer worker
    RendererManager.stop()
Пример #25
0
 def sublime_settings_on_change(self):
     log.info('Reloading settings...')
     self.notify('changing', setting=self)
     self.load_setting()
     self.notify('changed', setting=self)
Пример #26
0
def unload_handler():
    log.info('Unloading plugin...')
    # Cleaning up resources...
    PluginManager.instance().stop_server()
    # Stopping renderer worker
    RendererManager.WORKER.stop()
Пример #27
0
 def stop(self):
     log.info('Bottle server shuting down...')
     self.server.shutdown()
     self.runner.join()
Пример #28
0
    def download(self, url, error_message, timeout, tries):
        if not self.wget:
            return False

        self.tmp_file = tempfile.NamedTemporaryFile().name
        command = [
            self.wget, '--connect-timeout=' + str(int(timeout)), '-o',
            self.tmp_file, '-O', '-', '-U', 'OmniMarkup Downloader'
        ]

        command.append(url)

        if self.settings.get('http_proxy'):
            os.putenv('http_proxy', self.settings.get('http_proxy'))
            if not self.settings.get('https_proxy'):
                os.putenv('https_proxy', self.settings.get('http_proxy'))
        if self.settings.get('https_proxy'):
            os.putenv('https_proxy', self.settings.get('https_proxy'))

        while tries > 0:
            tries -= 1
            try:
                result = self.execute(command)
                self.clean_tmp_file()
                return result
            except (NonCleanExitError) as (e):
                error_line = ''
                with open(self.tmp_file) as f:
                    for line in list(f):
                        if re.search('ERROR[: ]|failed: ', line):
                            error_line = line
                            break

                if e.returncode == 8:
                    regex = re.compile('^.*ERROR (\d+):.*', re.S)
                    if re.sub(regex, '\\1', error_line) == '503':
                        # GitHub and BitBucket seem to rate limit via 503
                        log.info(
                            'Downloading %s was rate limited, trying again',
                            url)
                        continue
                    error_string = 'HTTP error ' + re.sub(
                        '^.*? ERROR ', '', error_line)

                elif e.returncode == 4:
                    error_string = re.sub('^.*?failed: ', '', error_line)
                    # GitHub and BitBucket seem to time out a lot
                    if error_string.find('timed out') != -1:
                        log.info('Downloading %s timed out, trying again', url)
                        continue

                else:
                    error_string = re.sub('^.*?(ERROR[: ]|failed: )', '\\1',
                                          error_line)

                error_string = re.sub('\\.?\s*\n\s*$', '', error_string)
                log.info('%s %s downloading %s.', error_message, error_string,
                         url)
            self.clean_tmp_file()
            break
        return False
Пример #29
0
 def stop(self):
     log.info('Bottle server shuting down...')
     self.server.shutdown()
     self.runner.join()
Пример #30
0
 def sublime_settings_on_change(self):
     log.info("Reloading settings...")
     self.notify("changing", setting=self)
     self.load_setting()
     self.notify("changed", setting=self)