コード例 #1
0
ファイル: repo.py プロジェクト: cuihaoleo/nvnotifier
    def async_update_remote(self):
        future = asyncio.Future()

        def handle_exception(type, value, traceback):
            future.set_result(False)
            logger.error("nvchecker failed to get version of %s", self)
            raise value.with_traceback(traceback)

        def cb(name, newver):
            future.set_result(newver is not None)

            if newver is None:
                logger.error("nvchecker failed to get version of %s", self)
            elif newver != self.raw_remote_version:
                self.raw_remote_version = newver
                self.on_remote_update()

        # ugly work-around to deal with nvchecker vcs handler
        old_cwd = os.getcwd()
        if "path" in self._info:
            os.chdir(os.path.join(os.path.dirname(self.path), ".."))

        dmparser = configparser.RawConfigParser()
        dmparser.read_dict({"_": self.nvconfig})

        try:
            with ExceptionStackContext(handle_exception):
                get_version(self.name, dmparser["_"], cb)
        finally:
            os.chdir(old_cwd)

        return future
コード例 #2
0
ファイル: helper.py プロジェクト: pombredanne/nvchecker
    def sync_get_version(self, name, config):
        def get_version_callback(name, version):
            self.stop(version)

        if isinstance(config, dict):
            _config = configparser.ConfigParser(dict_type=dict, allow_no_value=True)
            _config.read_dict({name: config})
            config = _config[name]

        get_version(name, config, get_version_callback)
        return self.wait()