Skip to content

Commit b96dec2

Browse files
committed
Initial add
0 parents  commit b96dec2

9 files changed

+890
-0
lines changed

.gitignore

+1
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
__pycache__

.gitmodules

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
[submodule "thirdparty/reviewdog"]
2+
path = thirdparty/reviewdog
3+
url = https://github.com/reviewdog/reviewdog.git

gen_protoc

+3
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
#!/bin/sh
2+
3+
protoc -I thirdparty/reviewdog/proto/rdf reviewdog.proto --python_out=pyrde

poetry.lock

+274
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

pyproject.toml

+16
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
[tool.poetry]
2+
name = "pyrde"
3+
version = "0.1.0"
4+
description = ""
5+
authors = ["alex <[email protected]>"]
6+
7+
[tool.poetry.dependencies]
8+
python = "^3.6"
9+
protobuf = "^3.19"
10+
11+
[tool.poetry.dev-dependencies]
12+
ipython = "*"
13+
14+
[build-system]
15+
requires = ["poetry-core>=1.0.0"]
16+
build-backend = "poetry.core.masonry.api"

pyrde/__init__.py

+67
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,67 @@
1+
import abc
2+
import argparse
3+
4+
5+
from pyrde import reviewdog_pb2
6+
7+
8+
class Severity:
9+
ERROR = reviewdog_pb2.Severity.ERROR
10+
WARNING = reviewdog_pb2.Severity.WARNING
11+
INFO = reviewdog_pb2.Severity.INFO
12+
13+
14+
class DiagnosticListener(abc.ABC):
15+
@abc.abstractmethod
16+
def send(self, diagnostic: reviewdog_pb2.Diagnostic):
17+
pass
18+
19+
20+
class DiagnosticBuilder:
21+
def __init__(self, listener: DiagnosticListener):
22+
self.listener = listener
23+
24+
def add_diagnostic(
25+
self,
26+
message: str,
27+
severity: Severity,
28+
path: str,
29+
start_line: int,
30+
start_column: int = None,
31+
end_line: int = None,
32+
end_column: int = None,
33+
code: str = None,
34+
code_url: str = None,
35+
):
36+
end = None
37+
if end_line:
38+
end = reviewdog_pb2.Position(
39+
line=end_line,
40+
column=end_column,
41+
)
42+
code_pb = None
43+
if code:
44+
code_pb = reviewdog_pb2.Code(
45+
value=code,
46+
url=code_url,
47+
)
48+
diagnostic = reviewdog_pb2.Diagnostic(
49+
message=message,
50+
location=reviewdog_pb2.Location(
51+
path=path,
52+
range=reviewdog_pb2.Range(
53+
start=reviewdog_pb2.Position(
54+
line=start_line,
55+
column=start_column,
56+
),
57+
end=end,
58+
),
59+
),
60+
severity=severity,
61+
code=code_pb,
62+
# TODO:
63+
source=None,
64+
suggestions=None,
65+
original_output=None
66+
)
67+
self.listener.send(diagnostic)

0 commit comments

Comments
 (0)