Beispiel #1
0
def _get_dict() -> Dict[str, Language]:
    global _dict  # pylint: disable=invalid-name
    if _dict is None:
        _dict = {}
        _dict['.cpp'] = CPlusPlusLanguage()
        _dict['.hpp'] = _dict['.cpp']
        _dict['.cc'] = _dict['.cpp']
        _dict['.h'] = _dict['.cpp']
        _dict['.csx'] = CSharpScriptLanguage()
        _dict['.nim'] = NimLanguage()
        _dict['.py'] = PythonLanguage()
        _dict['.hs'] = HaskellLanguage()
        _dict['.ruby'] = RubyLanguage()
        _dict['.go'] = GoLanguage()
        _dict['.java'] = JavaLanguage()
        _dict['.rs'] = RustLanguage()

        for ext, config in get_config().get('languages', {}).items():
            if '.' + ext in _dict:
                if not isinstance(_dict['.' + ext], UserDefinedLanguage):
                    for key in ('compile', 'execute', 'bundle', 'list_attributes', 'list_dependencies'):
                        if key in config:
                            raise RuntimeError("You cannot overwrite existing language: .{}".format(ext))
            else:
                logger.warning("config.toml: languages.%s: Adding new languages using `config.toml` is supported but not recommended. Please consider making pull requests for your languages, see https://github.com/kmyk/online-judge-verify-helper/issues/116", ext)
                _dict['.' + ext] = UserDefinedLanguage(extension=ext, config=config)
    return _dict
Beispiel #2
0
 def __init__(self, *, config: Optional[Dict[str, Any]] = None):
     if config is None:
         config = get_config().get('languages', {}).get('java', {})
     if 'compile' in config:
         raise RuntimeError(
             'You cannot overwrite "compile" for Java language')
     if 'execute' in config:
         raise RuntimeError(
             'You cannot overwrite "execute" for Java language')
     super().__init__(extension='java', config=config)
Beispiel #3
0
    def __init__(self, *, config: Optional[Dict[str, Any]] = None):
        if config is None:
            config = get_config().get('languages', {}).get('rust', {})

        # Parses `languages.rust.list_dependencies_backend`.
        if 'list_dependencies_backend' in config:
            list_dependencies_backend = config['list_dependencies_backend']

            if not isinstance(list_dependencies_backend, dict):
                raise RuntimeError(
                    '`languages.rust.list_dependencies_backend` must be `dict`'
                )
            if 'kind' not in list_dependencies_backend:
                raise RuntimeError(
                    'missing `languages.rust.list_dependencies_backend.kind`')

            list_dependencies_backend_kind = list_dependencies_backend['kind']

            if not isinstance(list_dependencies_backend_kind, str):
                raise RuntimeError(
                    '`languages.rust.list_dependencies_backend.kind` must be `str`'
                )

            if list_dependencies_backend_kind == 'none':
                self._list_dependencies_backend = _NoBackend()
            elif list_dependencies_backend_kind == 'cargo-udeps':
                if 'toolchain' not in list_dependencies_backend:
                    toolchain = None
                elif isinstance(list_dependencies_backend['toolchain'], str):
                    toolchain = list_dependencies_backend['toolchain']
                else:
                    raise RuntimeError(
                        '`languages.rust.list_dependencies_backend.toolchain` must be `str`'
                    )
                self._list_dependencies_backend = _CargoUdeps(
                    toolchain=toolchain)
            else:
                raise RuntimeError(
                    "expected 'none' or 'cargo-udeps' for `languages.rust.list_dependencies_backend.kind`"
                )
        else:
            self._list_dependencies_backend = _NoBackend()
Beispiel #4
0
def _get_dict() -> Dict[str, Language]:
    global _dict
    if _dict is None:
        _dict = {}
        _dict['.cpp'] = CPlusPlusLanguage()
        _dict['.hpp'] = _dict['.cpp']
        _dict['.csx'] = CSharpScriptLanguage()
        _dict['.nim'] = NimLanguage()

        for ext, config in get_config().get('languages', {}).items():
            if '.' + ext in _dict:
                for key in ('compile', 'execute', 'bundle', 'list_attributes',
                            'list_dependencies'):
                    if key in config:
                        raise RuntimeError(
                            "You cannot overwrite existing language: .{}".
                            format(ext))
            else:
                logger.warn(
                    "config.toml: languages.%s: Adding new languages using `config.toml` is supported but not recommended. Please consider making pull requests for your languages, see https://github.com/kmyk/online-judge-verify-helper/issues/116",
                    ext)
                _dict['.' + ext] = OtherLanguage(config=config)
    return _dict
Beispiel #5
0
def _get_dict() -> Dict[str, Language]:
    global _dict  # pylint: disable=invalid-name
    if _dict is None:
        _dict = {}
        _dict['.cpp'] = CPlusPlusLanguage()
        _dict['.hpp'] = _dict['.cpp']
        _dict['.cc'] = _dict['.cpp']
        _dict['.h'] = _dict['.cpp']
        _dict['.csx'] = CSharpScriptLanguage()
        _dict['.nim'] = NimLanguage()
        _dict['.py'] = PythonLanguage()
        _dict['.hs'] = HaskellLanguage()
        _dict['.ruby'] = RubyLanguage()
        _dict['.go'] = GoLanguage()
        _dict['.java'] = JavaLanguage()
        _dict['.rs'] = RustLanguage()

        for ext, config in get_config().get('languages', {}).items():
            logger.warning(
                "config.toml: languages.%s: Adding new languages using `config.toml` is supported but not recommended. Please consider making pull requests for your languages, see https://github.com/kmyk/online-judge-verify-helper/issues/116",
                ext)
            _dict['.' + ext] = UserDefinedLanguage(extension=ext,
                                                   config=config)
    return _dict
Beispiel #6
0
 def __init__(self, *, config: Optional[Dict[str, Any]] = None):
     if config is None:
         self.config = get_config().get('languages', {}).get('nim', {})
     else:
         self.config = config
Beispiel #7
0
 def __init__(self, *, config: Optional[Dict[str, Any]] = None):
     if config is None:
         config = get_config().get('languages', {}).get('go', {})
     config.setdefault('compile', 'echo')
     config.setdefault('execute', 'go run {basedir}/{path}')
     super().__init__(extension='go', config=config)