Merge 81ede3b81040f2594180d0ca4f180a63b2cea9fd into ffa9a5ed3b92f780404c89cbe9288e74108a1ed0
10 files · +1123 -390
M docs/services.md +2 -2
| @@ -6,9 +6,9 @@ | |||
| 6 | 6 | | `GitService` | `ListRefs`, `GetTree`, `ListPaths`, `GetBlob` (streamed), `ListCommits`, `GetCommit` (structured diff), `ResolveRevision` | | |
| 7 | 7 | | `TokenService` | `CreateToken` (secret shown once), `ListTokens`, `RevokeToken` | | |
| 8 | 8 | | `MergeRequestService` | `CreateMergeRequest`, `ListMergeRequests`, `GetMergeRequest` (commits, diff, comments), `AddComment`, `EditComment`, `DeleteComment`, `ResolveComment`, `CloseMergeRequest`, `MarkReady`, `MergeMergeRequest` (modes fast-forward, squash, merge commit), `MarkRead`, `EnableAutoMerge`, `CancelAutoMerge` (merge by itself once a check passed on the head and all its runs are complete; setting `allow_auto_merge`, `MergeRequest.auto_merge`, events `MergeRequestAutoMergeEnabled` and `MergeRequestAutoMergeCancelled`, `MergeRequestMerged.auto`; feature `merge_requests.auto_merge`). Open merge requests carry `mergeability` (up to date, behind, conflict, or checking) and `Watch` publishes `MergeRequestMergeability` each time a result is settled for new branch tips (feature `merge_requests.mergeability`) | | |
| 9 | - | | `IssueService` | `CreateIssue`, `ListIssues`, `GetIssue` (comments, merge requests naming the issue, `closed_by_merge_request`), `AddIssueComment`, `CloseIssue`, `ReopenIssue`; owner only: `ListPendingIssues`, `ApproveIssue`, `RejectIssue`. Features `issues`, `issues.links`. Issues share numbers with merge requests | | |
| 9 | + | | `IssueService` | `CreateIssue`, `ListIssues`, `GetIssue` (comments, merge requests naming the issue, history events, `closed_by_merge_request`), `AddIssueComment`, `CloseIssue`, `ResolveIssue`, `ReopenIssue`; owner only: `ListPendingIssues`, `ApproveIssue`, `RejectIssue`. States `OPEN`, `CLOSED`, `RESOLVED`; `ResolveIssue` needs `issue:write`. Features `issues`, `issues.links`, `issues.resolve`. Issues share numbers with merge requests | | |
| 10 | 10 | | `SessionService` | `CreateLoginLink`, `SignOutEverywhere` (owner only) | | |
| 11 | - | | `EventService` | `Watch` (streamed, resumable). Topics `home`, `repo:<name>` and `owner` (owner rights only). Events 17–21: `issue_opened`, `issue_closed`, `issue_reopened`, `issue_commented`, and `issue_submitted` (only on `owner`, no content). Event 22: `merge_request_mergeability` | | |
| 11 | + | | `EventService` | `Watch` (streamed, resumable). Topics `home`, `repo:<name>` and `owner` (owner rights only). Events 17–21: `issue_opened`, `issue_closed`, `issue_reopened`, `issue_commented`, and `issue_submitted` (only on `owner`, no content). Event 22: `merge_request_mergeability`. Event 31: `issue_resolved` | | |
| 12 | 12 | | `ServerService` | `GetVersion` (version and features), `GetSigningKey`, `RotateOIDCKey` (owner only) | | |
| 13 | 13 | | `TrustedKeyService` | `ListTrustedKeys`, `AddTrustedKey` and `RemoveTrustedKey` (owner only). `Commit.verification` carries the result of the check (feature `commit_signatures`) | | |
| 14 | 14 | | `RunService` | `ListRuns`, `GetRun`, `GetJob`, `GetJobLog` (streamed, follow), `ListAnnotations`, `GetStepSummaries`, `CancelRun`, `RerunRun`, `DispatchWorkflow`, `ListWorkflows`, `DisableWorkflow`, `EnableWorkflow`, `ListChecks`, `ListRunners`, `RemoveRunner` | | |
| @@ -6,9 +6,9 @@ | |||||
| 6 | | `GitService` | `ListRefs`, `GetTree`, `ListPaths`, `GetBlob` (streamed), `ListCommits`, `GetCommit` (structured diff), `ResolveRevision` | | 6 | | `GitService` | `ListRefs`, `GetTree`, `ListPaths`, `GetBlob` (streamed), `ListCommits`, `GetCommit` (structured diff), `ResolveRevision` | | ||
| 7 | | `TokenService` | `CreateToken` (secret shown once), `ListTokens`, `RevokeToken` | | 7 | | `TokenService` | `CreateToken` (secret shown once), `ListTokens`, `RevokeToken` | | ||
| 8 | | `MergeRequestService` | `CreateMergeRequest`, `ListMergeRequests`, `GetMergeRequest` (commits, diff, comments), `AddComment`, `EditComment`, `DeleteComment`, `ResolveComment`, `CloseMergeRequest`, `MarkReady`, `MergeMergeRequest` (modes fast-forward, squash, merge commit), `MarkRead`, `EnableAutoMerge`, `CancelAutoMerge` (merge by itself once a check passed on the head and all its runs are complete; setting `allow_auto_merge`, `MergeRequest.auto_merge`, events `MergeRequestAutoMergeEnabled` and `MergeRequestAutoMergeCancelled`, `MergeRequestMerged.auto`; feature `merge_requests.auto_merge`). Open merge requests carry `mergeability` (up to date, behind, conflict, or checking) and `Watch` publishes `MergeRequestMergeability` each time a result is settled for new branch tips (feature `merge_requests.mergeability`) | | 8 | | `MergeRequestService` | `CreateMergeRequest`, `ListMergeRequests`, `GetMergeRequest` (commits, diff, comments), `AddComment`, `EditComment`, `DeleteComment`, `ResolveComment`, `CloseMergeRequest`, `MarkReady`, `MergeMergeRequest` (modes fast-forward, squash, merge commit), `MarkRead`, `EnableAutoMerge`, `CancelAutoMerge` (merge by itself once a check passed on the head and all its runs are complete; setting `allow_auto_merge`, `MergeRequest.auto_merge`, events `MergeRequestAutoMergeEnabled` and `MergeRequestAutoMergeCancelled`, `MergeRequestMerged.auto`; feature `merge_requests.auto_merge`). Open merge requests carry `mergeability` (up to date, behind, conflict, or checking) and `Watch` publishes `MergeRequestMergeability` each time a result is settled for new branch tips (feature `merge_requests.mergeability`) | | ||
| 9 | - | | `IssueService` | `CreateIssue`, `ListIssues`, `GetIssue` (comments, merge requests naming the issue, `closed_by_merge_request`), `AddIssueComment`, `CloseIssue`, `ReopenIssue`; owner only: `ListPendingIssues`, `ApproveIssue`, `RejectIssue`. Features `issues`, `issues.links`. Issues share numbers with merge requests | | 9 | + | | `IssueService` | `CreateIssue`, `ListIssues`, `GetIssue` (comments, merge requests naming the issue, history events, `closed_by_merge_request`), `AddIssueComment`, `CloseIssue`, `ResolveIssue`, `ReopenIssue`; owner only: `ListPendingIssues`, `ApproveIssue`, `RejectIssue`. States `OPEN`, `CLOSED`, `RESOLVED`; `ResolveIssue` needs `issue:write`. Features `issues`, `issues.links`, `issues.resolve`. Issues share numbers with merge requests | |
| 10 | | `SessionService` | `CreateLoginLink`, `SignOutEverywhere` (owner only) | | 10 | | `SessionService` | `CreateLoginLink`, `SignOutEverywhere` (owner only) | | ||
| 11 | - | | `EventService` | `Watch` (streamed, resumable). Topics `home`, `repo:<name>` and `owner` (owner rights only). Events 17–21: `issue_opened`, `issue_closed`, `issue_reopened`, `issue_commented`, and `issue_submitted` (only on `owner`, no content). Event 22: `merge_request_mergeability` | | 11 | + | | `EventService` | `Watch` (streamed, resumable). Topics `home`, `repo:<name>` and `owner` (owner rights only). Events 17–21: `issue_opened`, `issue_closed`, `issue_reopened`, `issue_commented`, and `issue_submitted` (only on `owner`, no content). Event 22: `merge_request_mergeability`. Event 31: `issue_resolved` | |
| 12 | | `ServerService` | `GetVersion` (version and features), `GetSigningKey`, `RotateOIDCKey` (owner only) | | 12 | | `ServerService` | `GetVersion` (version and features), `GetSigningKey`, `RotateOIDCKey` (owner only) | | ||
| 13 | | `TrustedKeyService` | `ListTrustedKeys`, `AddTrustedKey` and `RemoveTrustedKey` (owner only). `Commit.verification` carries the result of the check (feature `commit_signatures`) | | 13 | | `TrustedKeyService` | `ListTrustedKeys`, `AddTrustedKey` and `RemoveTrustedKey` (owner only). `Commit.verification` carries the result of the check (feature `commit_signatures`) | | ||
| 14 | | `RunService` | `ListRuns`, `GetRun`, `GetJob`, `GetJobLog` (streamed, follow), `ListAnnotations`, `GetStepSummaries`, `CancelRun`, `RerunRun`, `DispatchWorkflow`, `ListWorkflows`, `DisableWorkflow`, `EnableWorkflow`, `ListChecks`, `ListRunners`, `RemoveRunner` | | 14 | | `RunService` | `ListRuns`, `GetRun`, `GetJob`, `GetJobLog` (streamed, follow), `ListAnnotations`, `GetStepSummaries`, `CancelRun`, `RerunRun`, `DispatchWorkflow`, `ListWorkflows`, `DisableWorkflow`, `EnableWorkflow`, `ListChecks`, `ListRunners`, `RemoveRunner` | | ||
M gen/ermite/ermiteconnect/event.connect.go +8 -6
| @@ -49,9 +49,10 @@ type EventServiceClient interface { | |||
| 49 | 49 | // for merge requests, merge_request_opened, merge_request_merged, | |
| 50 | 50 | // merge_request_closed, comment_added, comment_edited, comment_deleted and | |
| 51 | 51 | // comment_resolved (a thread resolved or reopened); for issues, issue_opened, | |
| 52 | - | // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each | |
| 53 | - | // one is delivered on the "repo:<name>" topic of its repository and on | |
| 54 | - | // "home", subject to the visibility of the repository, except | |
| 52 | + | // issue_closed, issue_resolved, issue_reopened and issue_commented, and | |
| 53 | + | // issue_submitted. Each one is delivered on the "repo:<name>" topic of its | |
| 54 | + | // repository and on "home", subject to the visibility of the repository, | |
| 55 | + | // except | |
| 55 | 56 | // issue_submitted: it is delivered only on the "owner" topic, never on | |
| 56 | 57 | // "home" or "repo:<name>", and carries no content (see IssueSubmitted). | |
| 57 | 58 | // | |
| @@ -125,9 +126,10 @@ type EventServiceHandler interface { | |||
| 125 | 126 | // for merge requests, merge_request_opened, merge_request_merged, | |
| 126 | 127 | // merge_request_closed, comment_added, comment_edited, comment_deleted and | |
| 127 | 128 | // comment_resolved (a thread resolved or reopened); for issues, issue_opened, | |
| 128 | - | // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each | |
| 129 | - | // one is delivered on the "repo:<name>" topic of its repository and on | |
| 130 | - | // "home", subject to the visibility of the repository, except | |
| 129 | + | // issue_closed, issue_resolved, issue_reopened and issue_commented, and | |
| 130 | + | // issue_submitted. Each one is delivered on the "repo:<name>" topic of its | |
| 131 | + | // repository and on "home", subject to the visibility of the repository, | |
| 132 | + | // except | |
| 131 | 133 | // issue_submitted: it is delivered only on the "owner" topic, never on | |
| 132 | 134 | // "home" or "repo:<name>", and carries no content (see IssueSubmitted). | |
| 133 | 135 | // | |
| @@ -49,9 +49,10 @@ type EventServiceClient interface { | |||||
| 49 | // for merge requests, merge_request_opened, merge_request_merged, | 49 | // for merge requests, merge_request_opened, merge_request_merged, | ||
| 50 | // merge_request_closed, comment_added, comment_edited, comment_deleted and | 50 | // merge_request_closed, comment_added, comment_edited, comment_deleted and | ||
| 51 | // comment_resolved (a thread resolved or reopened); for issues, issue_opened, | 51 | // comment_resolved (a thread resolved or reopened); for issues, issue_opened, | ||
| 52 | - | // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each | 52 | + | // issue_closed, issue_resolved, issue_reopened and issue_commented, and |
| 53 | - | // one is delivered on the "repo:<name>" topic of its repository and on | 53 | + | // issue_submitted. Each one is delivered on the "repo:<name>" topic of its |
| 54 | - | // "home", subject to the visibility of the repository, except | 54 | + | // repository and on "home", subject to the visibility of the repository, |
| 55 | + | // except | |||
| 55 | // issue_submitted: it is delivered only on the "owner" topic, never on | 56 | // issue_submitted: it is delivered only on the "owner" topic, never on | ||
| 56 | // "home" or "repo:<name>", and carries no content (see IssueSubmitted). | 57 | // "home" or "repo:<name>", and carries no content (see IssueSubmitted). | ||
| 57 | // | 58 | // | ||
| @@ -125,9 +126,10 @@ type EventServiceHandler interface { | |||||
| 125 | // for merge requests, merge_request_opened, merge_request_merged, | 126 | // for merge requests, merge_request_opened, merge_request_merged, | ||
| 126 | // merge_request_closed, comment_added, comment_edited, comment_deleted and | 127 | // merge_request_closed, comment_added, comment_edited, comment_deleted and | ||
| 127 | // comment_resolved (a thread resolved or reopened); for issues, issue_opened, | 128 | // comment_resolved (a thread resolved or reopened); for issues, issue_opened, | ||
| 128 | - | // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each | 129 | + | // issue_closed, issue_resolved, issue_reopened and issue_commented, and |
| 129 | - | // one is delivered on the "repo:<name>" topic of its repository and on | 130 | + | // issue_submitted. Each one is delivered on the "repo:<name>" topic of its |
| 130 | - | // "home", subject to the visibility of the repository, except | 131 | + | // repository and on "home", subject to the visibility of the repository, |
| 132 | + | // except | |||
| 131 | // issue_submitted: it is delivered only on the "owner" topic, never on | 133 | // issue_submitted: it is delivered only on the "owner" topic, never on | ||
| 132 | // "home" or "repo:<name>", and carries no content (see IssueSubmitted). | 134 | // "home" or "repo:<name>", and carries no content (see IssueSubmitted). | ||
| 133 | // | 135 | // | ||
M gen/ermite/ermiteconnect/issue.connect.go +35 -2
| @@ -47,6 +47,9 @@ const ( | |||
| 47 | 47 | IssueServiceAddIssueCommentProcedure = "/ermite.IssueService/AddIssueComment" | |
| 48 | 48 | // IssueServiceCloseIssueProcedure is the fully-qualified name of the IssueService's CloseIssue RPC. | |
| 49 | 49 | IssueServiceCloseIssueProcedure = "/ermite.IssueService/CloseIssue" | |
| 50 | + | // IssueServiceResolveIssueProcedure is the fully-qualified name of the IssueService's ResolveIssue | |
| 51 | + | // RPC. | |
| 52 | + | IssueServiceResolveIssueProcedure = "/ermite.IssueService/ResolveIssue" | |
| 50 | 53 | // IssueServiceReopenIssueProcedure is the fully-qualified name of the IssueService's ReopenIssue | |
| 51 | 54 | // RPC. | |
| 52 | 55 | IssueServiceReopenIssueProcedure = "/ermite.IssueService/ReopenIssue" | |
| @@ -73,7 +76,10 @@ type IssueServiceClient interface { | |||
| 73 | 76 | AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error) | |
| 74 | 77 | // CloseIssue closes an issue. Needs the issue:write scope. | |
| 75 | 78 | CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error) | |
| 76 | - | // ReopenIssue reopens an issue. Needs the issue:write scope. | |
| 79 | + | // ResolveIssue marks an open issue as resolved. Needs the issue:write scope. | |
| 80 | + | ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) | |
| 81 | + | // ReopenIssue reopens a closed or resolved issue. Needs the issue:write | |
| 82 | + | // scope. | |
| 77 | 83 | ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) | |
| 78 | 84 | // ListPendingIssues lists issues awaiting moderation, oldest first. Owner | |
| 79 | 85 | // rights only; anyone else gets NOT_FOUND. | |
| @@ -127,6 +133,12 @@ func NewIssueServiceClient(httpClient connect.HTTPClient, baseURL string, opts . | |||
| 127 | 133 | connect.WithSchema(issueServiceMethods.ByName("CloseIssue")), | |
| 128 | 134 | connect.WithClientOptions(opts...), | |
| 129 | 135 | ), | |
| 136 | + | resolveIssue: connect.NewClient[ermite.ResolveIssueRequest, ermite.ResolveIssueResponse]( | |
| 137 | + | httpClient, | |
| 138 | + | baseURL+IssueServiceResolveIssueProcedure, | |
| 139 | + | connect.WithSchema(issueServiceMethods.ByName("ResolveIssue")), | |
| 140 | + | connect.WithClientOptions(opts...), | |
| 141 | + | ), | |
| 130 | 142 | reopenIssue: connect.NewClient[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse]( | |
| 131 | 143 | httpClient, | |
| 132 | 144 | baseURL+IssueServiceReopenIssueProcedure, | |
| @@ -161,6 +173,7 @@ type issueServiceClient struct { | |||
| 161 | 173 | getIssue *connect.Client[ermite.GetIssueRequest, ermite.GetIssueResponse] | |
| 162 | 174 | addIssueComment *connect.Client[ermite.AddIssueCommentRequest, ermite.AddIssueCommentResponse] | |
| 163 | 175 | closeIssue *connect.Client[ermite.CloseIssueRequest, ermite.CloseIssueResponse] | |
| 176 | + | resolveIssue *connect.Client[ermite.ResolveIssueRequest, ermite.ResolveIssueResponse] | |
| 164 | 177 | reopenIssue *connect.Client[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse] | |
| 165 | 178 | listPendingIssues *connect.Client[ermite.ListPendingIssuesRequest, ermite.ListPendingIssuesResponse] | |
| 166 | 179 | approveIssue *connect.Client[ermite.ApproveIssueRequest, ermite.ApproveIssueResponse] | |
| @@ -192,6 +205,11 @@ func (c *issueServiceClient) CloseIssue(ctx context.Context, req *connect.Reques | |||
| 192 | 205 | return c.closeIssue.CallUnary(ctx, req) | |
| 193 | 206 | } | |
| 194 | 207 | ||
| 208 | + | // ResolveIssue calls ermite.IssueService.ResolveIssue. | |
| 209 | + | func (c *issueServiceClient) ResolveIssue(ctx context.Context, req *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) { | |
| 210 | + | return c.resolveIssue.CallUnary(ctx, req) | |
| 211 | + | } | |
| 212 | + | ||
| 195 | 213 | // ReopenIssue calls ermite.IssueService.ReopenIssue. | |
| 196 | 214 | func (c *issueServiceClient) ReopenIssue(ctx context.Context, req *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) { | |
| 197 | 215 | return c.reopenIssue.CallUnary(ctx, req) | |
| @@ -224,7 +242,10 @@ type IssueServiceHandler interface { | |||
| 224 | 242 | AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error) | |
| 225 | 243 | // CloseIssue closes an issue. Needs the issue:write scope. | |
| 226 | 244 | CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error) | |
| 227 | - | // ReopenIssue reopens an issue. Needs the issue:write scope. | |
| 245 | + | // ResolveIssue marks an open issue as resolved. Needs the issue:write scope. | |
| 246 | + | ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) | |
| 247 | + | // ReopenIssue reopens a closed or resolved issue. Needs the issue:write | |
| 248 | + | // scope. | |
| 228 | 249 | ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) | |
| 229 | 250 | // ListPendingIssues lists issues awaiting moderation, oldest first. Owner | |
| 230 | 251 | // rights only; anyone else gets NOT_FOUND. | |
| @@ -274,6 +295,12 @@ func NewIssueServiceHandler(svc IssueServiceHandler, opts ...connect.HandlerOpti | |||
| 274 | 295 | connect.WithSchema(issueServiceMethods.ByName("CloseIssue")), | |
| 275 | 296 | connect.WithHandlerOptions(opts...), | |
| 276 | 297 | ) | |
| 298 | + | issueServiceResolveIssueHandler := connect.NewUnaryHandler( | |
| 299 | + | IssueServiceResolveIssueProcedure, | |
| 300 | + | svc.ResolveIssue, | |
| 301 | + | connect.WithSchema(issueServiceMethods.ByName("ResolveIssue")), | |
| 302 | + | connect.WithHandlerOptions(opts...), | |
| 303 | + | ) | |
| 277 | 304 | issueServiceReopenIssueHandler := connect.NewUnaryHandler( | |
| 278 | 305 | IssueServiceReopenIssueProcedure, | |
| 279 | 306 | svc.ReopenIssue, | |
| @@ -310,6 +337,8 @@ func NewIssueServiceHandler(svc IssueServiceHandler, opts ...connect.HandlerOpti | |||
| 310 | 337 | issueServiceAddIssueCommentHandler.ServeHTTP(w, r) | |
| 311 | 338 | case IssueServiceCloseIssueProcedure: | |
| 312 | 339 | issueServiceCloseIssueHandler.ServeHTTP(w, r) | |
| 340 | + | case IssueServiceResolveIssueProcedure: | |
| 341 | + | issueServiceResolveIssueHandler.ServeHTTP(w, r) | |
| 313 | 342 | case IssueServiceReopenIssueProcedure: | |
| 314 | 343 | issueServiceReopenIssueHandler.ServeHTTP(w, r) | |
| 315 | 344 | case IssueServiceListPendingIssuesProcedure: | |
| @@ -347,6 +376,10 @@ func (UnimplementedIssueServiceHandler) CloseIssue(context.Context, *connect.Req | |||
| 347 | 376 | return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.CloseIssue is not implemented")) | |
| 348 | 377 | } | |
| 349 | 378 | ||
| 379 | + | func (UnimplementedIssueServiceHandler) ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) { | |
| 380 | + | return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.ResolveIssue is not implemented")) | |
| 381 | + | } | |
| 382 | + | ||
| 350 | 383 | func (UnimplementedIssueServiceHandler) ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) { | |
| 351 | 384 | return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.ReopenIssue is not implemented")) | |
| 352 | 385 | } | |
| @@ -47,6 +47,9 @@ const ( | |||||
| 47 | IssueServiceAddIssueCommentProcedure = "/ermite.IssueService/AddIssueComment" | 47 | IssueServiceAddIssueCommentProcedure = "/ermite.IssueService/AddIssueComment" | ||
| 48 | // IssueServiceCloseIssueProcedure is the fully-qualified name of the IssueService's CloseIssue RPC. | 48 | // IssueServiceCloseIssueProcedure is the fully-qualified name of the IssueService's CloseIssue RPC. | ||
| 49 | IssueServiceCloseIssueProcedure = "/ermite.IssueService/CloseIssue" | 49 | IssueServiceCloseIssueProcedure = "/ermite.IssueService/CloseIssue" | ||
| 50 | + | // IssueServiceResolveIssueProcedure is the fully-qualified name of the IssueService's ResolveIssue | |||
| 51 | + | // RPC. | |||
| 52 | + | IssueServiceResolveIssueProcedure = "/ermite.IssueService/ResolveIssue" | |||
| 50 | // IssueServiceReopenIssueProcedure is the fully-qualified name of the IssueService's ReopenIssue | 53 | // IssueServiceReopenIssueProcedure is the fully-qualified name of the IssueService's ReopenIssue | ||
| 51 | // RPC. | 54 | // RPC. | ||
| 52 | IssueServiceReopenIssueProcedure = "/ermite.IssueService/ReopenIssue" | 55 | IssueServiceReopenIssueProcedure = "/ermite.IssueService/ReopenIssue" | ||
| @@ -73,7 +76,10 @@ type IssueServiceClient interface { | |||||
| 73 | AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error) | 76 | AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error) | ||
| 74 | // CloseIssue closes an issue. Needs the issue:write scope. | 77 | // CloseIssue closes an issue. Needs the issue:write scope. | ||
| 75 | CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error) | 78 | CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error) | ||
| 76 | - | // ReopenIssue reopens an issue. Needs the issue:write scope. | 79 | + | // ResolveIssue marks an open issue as resolved. Needs the issue:write scope. |
| 80 | + | ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) | |||
| 81 | + | // ReopenIssue reopens a closed or resolved issue. Needs the issue:write | |||
| 82 | + | // scope. | |||
| 77 | ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) | 83 | ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) | ||
| 78 | // ListPendingIssues lists issues awaiting moderation, oldest first. Owner | 84 | // ListPendingIssues lists issues awaiting moderation, oldest first. Owner | ||
| 79 | // rights only; anyone else gets NOT_FOUND. | 85 | // rights only; anyone else gets NOT_FOUND. | ||
| @@ -127,6 +133,12 @@ func NewIssueServiceClient(httpClient connect.HTTPClient, baseURL string, opts . | |||||
| 127 | connect.WithSchema(issueServiceMethods.ByName("CloseIssue")), | 133 | connect.WithSchema(issueServiceMethods.ByName("CloseIssue")), | ||
| 128 | connect.WithClientOptions(opts...), | 134 | connect.WithClientOptions(opts...), | ||
| 129 | ), | 135 | ), | ||
| 136 | + | resolveIssue: connect.NewClient[ermite.ResolveIssueRequest, ermite.ResolveIssueResponse]( | |||
| 137 | + | httpClient, | |||
| 138 | + | baseURL+IssueServiceResolveIssueProcedure, | |||
| 139 | + | connect.WithSchema(issueServiceMethods.ByName("ResolveIssue")), | |||
| 140 | + | connect.WithClientOptions(opts...), | |||
| 141 | + | ), | |||
| 130 | reopenIssue: connect.NewClient[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse]( | 142 | reopenIssue: connect.NewClient[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse]( | ||
| 131 | httpClient, | 143 | httpClient, | ||
| 132 | baseURL+IssueServiceReopenIssueProcedure, | 144 | baseURL+IssueServiceReopenIssueProcedure, | ||
| @@ -161,6 +173,7 @@ type issueServiceClient struct { | |||||
| 161 | getIssue *connect.Client[ermite.GetIssueRequest, ermite.GetIssueResponse] | 173 | getIssue *connect.Client[ermite.GetIssueRequest, ermite.GetIssueResponse] | ||
| 162 | addIssueComment *connect.Client[ermite.AddIssueCommentRequest, ermite.AddIssueCommentResponse] | 174 | addIssueComment *connect.Client[ermite.AddIssueCommentRequest, ermite.AddIssueCommentResponse] | ||
| 163 | closeIssue *connect.Client[ermite.CloseIssueRequest, ermite.CloseIssueResponse] | 175 | closeIssue *connect.Client[ermite.CloseIssueRequest, ermite.CloseIssueResponse] | ||
| 176 | + | resolveIssue *connect.Client[ermite.ResolveIssueRequest, ermite.ResolveIssueResponse] | |||
| 164 | reopenIssue *connect.Client[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse] | 177 | reopenIssue *connect.Client[ermite.ReopenIssueRequest, ermite.ReopenIssueResponse] | ||
| 165 | listPendingIssues *connect.Client[ermite.ListPendingIssuesRequest, ermite.ListPendingIssuesResponse] | 178 | listPendingIssues *connect.Client[ermite.ListPendingIssuesRequest, ermite.ListPendingIssuesResponse] | ||
| 166 | approveIssue *connect.Client[ermite.ApproveIssueRequest, ermite.ApproveIssueResponse] | 179 | approveIssue *connect.Client[ermite.ApproveIssueRequest, ermite.ApproveIssueResponse] | ||
| @@ -192,6 +205,11 @@ func (c *issueServiceClient) CloseIssue(ctx context.Context, req *connect.Reques | |||||
| 192 | return c.closeIssue.CallUnary(ctx, req) | 205 | return c.closeIssue.CallUnary(ctx, req) | ||
| 193 | } | 206 | } | ||
| 194 | 207 | ||||
| 208 | + | // ResolveIssue calls ermite.IssueService.ResolveIssue. | |||
| 209 | + | func (c *issueServiceClient) ResolveIssue(ctx context.Context, req *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) { | |||
| 210 | + | return c.resolveIssue.CallUnary(ctx, req) | |||
| 211 | + | } | |||
| 212 | + | ||||
| 195 | // ReopenIssue calls ermite.IssueService.ReopenIssue. | 213 | // ReopenIssue calls ermite.IssueService.ReopenIssue. | ||
| 196 | func (c *issueServiceClient) ReopenIssue(ctx context.Context, req *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) { | 214 | func (c *issueServiceClient) ReopenIssue(ctx context.Context, req *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) { | ||
| 197 | return c.reopenIssue.CallUnary(ctx, req) | 215 | return c.reopenIssue.CallUnary(ctx, req) | ||
| @@ -224,7 +242,10 @@ type IssueServiceHandler interface { | |||||
| 224 | AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error) | 242 | AddIssueComment(context.Context, *connect.Request[ermite.AddIssueCommentRequest]) (*connect.Response[ermite.AddIssueCommentResponse], error) | ||
| 225 | // CloseIssue closes an issue. Needs the issue:write scope. | 243 | // CloseIssue closes an issue. Needs the issue:write scope. | ||
| 226 | CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error) | 244 | CloseIssue(context.Context, *connect.Request[ermite.CloseIssueRequest]) (*connect.Response[ermite.CloseIssueResponse], error) | ||
| 227 | - | // ReopenIssue reopens an issue. Needs the issue:write scope. | 245 | + | // ResolveIssue marks an open issue as resolved. Needs the issue:write scope. |
| 246 | + | ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) | |||
| 247 | + | // ReopenIssue reopens a closed or resolved issue. Needs the issue:write | |||
| 248 | + | // scope. | |||
| 228 | ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) | 249 | ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) | ||
| 229 | // ListPendingIssues lists issues awaiting moderation, oldest first. Owner | 250 | // ListPendingIssues lists issues awaiting moderation, oldest first. Owner | ||
| 230 | // rights only; anyone else gets NOT_FOUND. | 251 | // rights only; anyone else gets NOT_FOUND. | ||
| @@ -274,6 +295,12 @@ func NewIssueServiceHandler(svc IssueServiceHandler, opts ...connect.HandlerOpti | |||||
| 274 | connect.WithSchema(issueServiceMethods.ByName("CloseIssue")), | 295 | connect.WithSchema(issueServiceMethods.ByName("CloseIssue")), | ||
| 275 | connect.WithHandlerOptions(opts...), | 296 | connect.WithHandlerOptions(opts...), | ||
| 276 | ) | 297 | ) | ||
| 298 | + | issueServiceResolveIssueHandler := connect.NewUnaryHandler( | |||
| 299 | + | IssueServiceResolveIssueProcedure, | |||
| 300 | + | svc.ResolveIssue, | |||
| 301 | + | connect.WithSchema(issueServiceMethods.ByName("ResolveIssue")), | |||
| 302 | + | connect.WithHandlerOptions(opts...), | |||
| 303 | + | ) | |||
| 277 | issueServiceReopenIssueHandler := connect.NewUnaryHandler( | 304 | issueServiceReopenIssueHandler := connect.NewUnaryHandler( | ||
| 278 | IssueServiceReopenIssueProcedure, | 305 | IssueServiceReopenIssueProcedure, | ||
| 279 | svc.ReopenIssue, | 306 | svc.ReopenIssue, | ||
| @@ -310,6 +337,8 @@ func NewIssueServiceHandler(svc IssueServiceHandler, opts ...connect.HandlerOpti | |||||
| 310 | issueServiceAddIssueCommentHandler.ServeHTTP(w, r) | 337 | issueServiceAddIssueCommentHandler.ServeHTTP(w, r) | ||
| 311 | case IssueServiceCloseIssueProcedure: | 338 | case IssueServiceCloseIssueProcedure: | ||
| 312 | issueServiceCloseIssueHandler.ServeHTTP(w, r) | 339 | issueServiceCloseIssueHandler.ServeHTTP(w, r) | ||
| 340 | + | case IssueServiceResolveIssueProcedure: | |||
| 341 | + | issueServiceResolveIssueHandler.ServeHTTP(w, r) | |||
| 313 | case IssueServiceReopenIssueProcedure: | 342 | case IssueServiceReopenIssueProcedure: | ||
| 314 | issueServiceReopenIssueHandler.ServeHTTP(w, r) | 343 | issueServiceReopenIssueHandler.ServeHTTP(w, r) | ||
| 315 | case IssueServiceListPendingIssuesProcedure: | 344 | case IssueServiceListPendingIssuesProcedure: | ||
| @@ -347,6 +376,10 @@ func (UnimplementedIssueServiceHandler) CloseIssue(context.Context, *connect.Req | |||||
| 347 | return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.CloseIssue is not implemented")) | 376 | return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.CloseIssue is not implemented")) | ||
| 348 | } | 377 | } | ||
| 349 | 378 | ||||
| 379 | + | func (UnimplementedIssueServiceHandler) ResolveIssue(context.Context, *connect.Request[ermite.ResolveIssueRequest]) (*connect.Response[ermite.ResolveIssueResponse], error) { | |||
| 380 | + | return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.ResolveIssue is not implemented")) | |||
| 381 | + | } | |||
| 382 | + | ||||
| 350 | func (UnimplementedIssueServiceHandler) ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) { | 383 | func (UnimplementedIssueServiceHandler) ReopenIssue(context.Context, *connect.Request[ermite.ReopenIssueRequest]) (*connect.Response[ermite.ReopenIssueResponse], error) { | ||
| 351 | return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.ReopenIssue is not implemented")) | 384 | return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.IssueService.ReopenIssue is not implemented")) | ||
| 352 | } | 385 | } | ||
M gen/ermite/event.pb.go +175 -103
| @@ -179,6 +179,7 @@ type Event struct { | |||
| 179 | 179 | // *Event_ReleaseUpdated | |
| 180 | 180 | // *Event_ReleaseDeleted | |
| 181 | 181 | // *Event_ReleaseUnpublished | |
| 182 | + | // *Event_IssueResolved | |
| 182 | 183 | Kind isEvent_Kind `protobuf_oneof:"kind"` | |
| 183 | 184 | unknownFields protoimpl.UnknownFields | |
| 184 | 185 | sizeCache protoimpl.SizeCache | |
| @@ -487,6 +488,15 @@ func (x *Event) GetReleaseUnpublished() *ReleaseUnpublished { | |||
| 487 | 488 | return nil | |
| 488 | 489 | } | |
| 489 | 490 | ||
| 491 | + | func (x *Event) GetIssueResolved() *IssueResolved { | |
| 492 | + | if x != nil { | |
| 493 | + | if x, ok := x.Kind.(*Event_IssueResolved); ok { | |
| 494 | + | return x.IssueResolved | |
| 495 | + | } | |
| 496 | + | } | |
| 497 | + | return nil | |
| 498 | + | } | |
| 499 | + | ||
| 490 | 500 | type isEvent_Kind interface { | |
| 491 | 501 | isEvent_Kind() | |
| 492 | 502 | } | |
| @@ -634,6 +644,11 @@ type Event_ReleaseUnpublished struct { | |||
| 634 | 644 | ReleaseUnpublished *ReleaseUnpublished `protobuf:"bytes,30,opt,name=release_unpublished,json=releaseUnpublished,proto3,oneof"` | |
| 635 | 645 | } | |
| 636 | 646 | ||
| 647 | + | type Event_IssueResolved struct { | |
| 648 | + | // IssueResolved: an issue was resolved. | |
| 649 | + | IssueResolved *IssueResolved `protobuf:"bytes,31,opt,name=issue_resolved,json=issueResolved,proto3,oneof"` | |
| 650 | + | } | |
| 651 | + | ||
| 637 | 652 | func (*Event_RepoCreated) isEvent_Kind() {} | |
| 638 | 653 | ||
| 639 | 654 | func (*Event_RepoUpdated) isEvent_Kind() {} | |
| @@ -690,6 +705,8 @@ func (*Event_ReleaseDeleted) isEvent_Kind() {} | |||
| 690 | 705 | ||
| 691 | 706 | func (*Event_ReleaseUnpublished) isEvent_Kind() {} | |
| 692 | 707 | ||
| 708 | + | func (*Event_IssueResolved) isEvent_Kind() {} | |
| 709 | + | ||
| 693 | 710 | // RepoCreated reports a new repository. | |
| 694 | 711 | type RepoCreated struct { | |
| 695 | 712 | state protoimpl.MessageState `protogen:"open.v1"` | |
| @@ -1569,7 +1586,8 @@ func (x *IssueOpened) GetIssue() *Issue { | |||
| 1569 | 1586 | return nil | |
| 1570 | 1587 | } | |
| 1571 | 1588 | ||
| 1572 | - | // IssueClosed reports a closed issue. | |
| 1589 | + | // IssueClosed reports a closed issue. A merge that resolves an issue sends | |
| 1590 | + | // issue_resolved, not issue_closed. | |
| 1573 | 1591 | type IssueClosed struct { | |
| 1574 | 1592 | state protoimpl.MessageState `protogen:"open.v1"` | |
| 1575 | 1593 | // Issue is the issue after closing, including its repository and number. | |
| @@ -1615,6 +1633,53 @@ func (x *IssueClosed) GetIssue() *Issue { | |||
| 1615 | 1633 | return nil | |
| 1616 | 1634 | } | |
| 1617 | 1635 | ||
| 1636 | + | // IssueResolved reports a resolved issue. | |
| 1637 | + | type IssueResolved struct { | |
| 1638 | + | state protoimpl.MessageState `protogen:"open.v1"` | |
| 1639 | + | // Issue is the issue after resolving, including its repository, number and | |
| 1640 | + | // closed_by_merge_request. | |
| 1641 | + | Issue *Issue `protobuf:"bytes,1,opt,name=issue,proto3" json:"issue,omitempty"` | |
| 1642 | + | unknownFields protoimpl.UnknownFields | |
| 1643 | + | sizeCache protoimpl.SizeCache | |
| 1644 | + | } | |
| 1645 | + | ||
| 1646 | + | func (x *IssueResolved) Reset() { | |
| 1647 | + | *x = IssueResolved{} | |
| 1648 | + | mi := &file_ermite_event_proto_msgTypes[20] | |
| 1649 | + | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1650 | + | ms.StoreMessageInfo(mi) | |
| 1651 | + | } | |
| 1652 | + | ||
| 1653 | + | func (x *IssueResolved) String() string { | |
| 1654 | + | return protoimpl.X.MessageStringOf(x) | |
| 1655 | + | } | |
| 1656 | + | ||
| 1657 | + | func (*IssueResolved) ProtoMessage() {} | |
| 1658 | + | ||
| 1659 | + | func (x *IssueResolved) ProtoReflect() protoreflect.Message { | |
| 1660 | + | mi := &file_ermite_event_proto_msgTypes[20] | |
| 1661 | + | if x != nil { | |
| 1662 | + | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1663 | + | if ms.LoadMessageInfo() == nil { | |
| 1664 | + | ms.StoreMessageInfo(mi) | |
| 1665 | + | } | |
| 1666 | + | return ms | |
| 1667 | + | } | |
| 1668 | + | return mi.MessageOf(x) | |
| 1669 | + | } | |
| 1670 | + | ||
| 1671 | + | // Deprecated: Use IssueResolved.ProtoReflect.Descriptor instead. | |
| 1672 | + | func (*IssueResolved) Descriptor() ([]byte, []int) { | |
| 1673 | + | return file_ermite_event_proto_rawDescGZIP(), []int{20} | |
| 1674 | + | } | |
| 1675 | + | ||
| 1676 | + | func (x *IssueResolved) GetIssue() *Issue { | |
| 1677 | + | if x != nil { | |
| 1678 | + | return x.Issue | |
| 1679 | + | } | |
| 1680 | + | return nil | |
| 1681 | + | } | |
| 1682 | + | ||
| 1618 | 1683 | // IssueReopened reports a reopened issue. | |
| 1619 | 1684 | type IssueReopened struct { | |
| 1620 | 1685 | state protoimpl.MessageState `protogen:"open.v1"` | |
| @@ -1626,7 +1691,7 @@ type IssueReopened struct { | |||
| 1626 | 1691 | ||
| 1627 | 1692 | func (x *IssueReopened) Reset() { | |
| 1628 | 1693 | *x = IssueReopened{} | |
| 1629 | - | mi := &file_ermite_event_proto_msgTypes[20] | |
| 1694 | + | mi := &file_ermite_event_proto_msgTypes[21] | |
| 1630 | 1695 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1631 | 1696 | ms.StoreMessageInfo(mi) | |
| 1632 | 1697 | } | |
| @@ -1638,7 +1703,7 @@ func (x *IssueReopened) String() string { | |||
| 1638 | 1703 | func (*IssueReopened) ProtoMessage() {} | |
| 1639 | 1704 | ||
| 1640 | 1705 | func (x *IssueReopened) ProtoReflect() protoreflect.Message { | |
| 1641 | - | mi := &file_ermite_event_proto_msgTypes[20] | |
| 1706 | + | mi := &file_ermite_event_proto_msgTypes[21] | |
| 1642 | 1707 | if x != nil { | |
| 1643 | 1708 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1644 | 1709 | if ms.LoadMessageInfo() == nil { | |
| @@ -1651,7 +1716,7 @@ func (x *IssueReopened) ProtoReflect() protoreflect.Message { | |||
| 1651 | 1716 | ||
| 1652 | 1717 | // Deprecated: Use IssueReopened.ProtoReflect.Descriptor instead. | |
| 1653 | 1718 | func (*IssueReopened) Descriptor() ([]byte, []int) { | |
| 1654 | - | return file_ermite_event_proto_rawDescGZIP(), []int{20} | |
| 1719 | + | return file_ermite_event_proto_rawDescGZIP(), []int{21} | |
| 1655 | 1720 | } | |
| 1656 | 1721 | ||
| 1657 | 1722 | func (x *IssueReopened) GetIssue() *Issue { | |
| @@ -1676,7 +1741,7 @@ type IssueCommented struct { | |||
| 1676 | 1741 | ||
| 1677 | 1742 | func (x *IssueCommented) Reset() { | |
| 1678 | 1743 | *x = IssueCommented{} | |
| 1679 | - | mi := &file_ermite_event_proto_msgTypes[21] | |
| 1744 | + | mi := &file_ermite_event_proto_msgTypes[22] | |
| 1680 | 1745 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1681 | 1746 | ms.StoreMessageInfo(mi) | |
| 1682 | 1747 | } | |
| @@ -1688,7 +1753,7 @@ func (x *IssueCommented) String() string { | |||
| 1688 | 1753 | func (*IssueCommented) ProtoMessage() {} | |
| 1689 | 1754 | ||
| 1690 | 1755 | func (x *IssueCommented) ProtoReflect() protoreflect.Message { | |
| 1691 | - | mi := &file_ermite_event_proto_msgTypes[21] | |
| 1756 | + | mi := &file_ermite_event_proto_msgTypes[22] | |
| 1692 | 1757 | if x != nil { | |
| 1693 | 1758 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1694 | 1759 | if ms.LoadMessageInfo() == nil { | |
| @@ -1701,7 +1766,7 @@ func (x *IssueCommented) ProtoReflect() protoreflect.Message { | |||
| 1701 | 1766 | ||
| 1702 | 1767 | // Deprecated: Use IssueCommented.ProtoReflect.Descriptor instead. | |
| 1703 | 1768 | func (*IssueCommented) Descriptor() ([]byte, []int) { | |
| 1704 | - | return file_ermite_event_proto_rawDescGZIP(), []int{21} | |
| 1769 | + | return file_ermite_event_proto_rawDescGZIP(), []int{22} | |
| 1705 | 1770 | } | |
| 1706 | 1771 | ||
| 1707 | 1772 | func (x *IssueCommented) GetRepo() string { | |
| @@ -1740,7 +1805,7 @@ type IssueSubmitted struct { | |||
| 1740 | 1805 | ||
| 1741 | 1806 | func (x *IssueSubmitted) Reset() { | |
| 1742 | 1807 | *x = IssueSubmitted{} | |
| 1743 | - | mi := &file_ermite_event_proto_msgTypes[22] | |
| 1808 | + | mi := &file_ermite_event_proto_msgTypes[23] | |
| 1744 | 1809 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1745 | 1810 | ms.StoreMessageInfo(mi) | |
| 1746 | 1811 | } | |
| @@ -1752,7 +1817,7 @@ func (x *IssueSubmitted) String() string { | |||
| 1752 | 1817 | func (*IssueSubmitted) ProtoMessage() {} | |
| 1753 | 1818 | ||
| 1754 | 1819 | func (x *IssueSubmitted) ProtoReflect() protoreflect.Message { | |
| 1755 | - | mi := &file_ermite_event_proto_msgTypes[22] | |
| 1820 | + | mi := &file_ermite_event_proto_msgTypes[23] | |
| 1756 | 1821 | if x != nil { | |
| 1757 | 1822 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1758 | 1823 | if ms.LoadMessageInfo() == nil { | |
| @@ -1765,7 +1830,7 @@ func (x *IssueSubmitted) ProtoReflect() protoreflect.Message { | |||
| 1765 | 1830 | ||
| 1766 | 1831 | // Deprecated: Use IssueSubmitted.ProtoReflect.Descriptor instead. | |
| 1767 | 1832 | func (*IssueSubmitted) Descriptor() ([]byte, []int) { | |
| 1768 | - | return file_ermite_event_proto_rawDescGZIP(), []int{22} | |
| 1833 | + | return file_ermite_event_proto_rawDescGZIP(), []int{23} | |
| 1769 | 1834 | } | |
| 1770 | 1835 | ||
| 1771 | 1836 | func (x *IssueSubmitted) GetRepo() string { | |
| @@ -1795,7 +1860,7 @@ type Gap struct { | |||
| 1795 | 1860 | ||
| 1796 | 1861 | func (x *Gap) Reset() { | |
| 1797 | 1862 | *x = Gap{} | |
| 1798 | - | mi := &file_ermite_event_proto_msgTypes[23] | |
| 1863 | + | mi := &file_ermite_event_proto_msgTypes[24] | |
| 1799 | 1864 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1800 | 1865 | ms.StoreMessageInfo(mi) | |
| 1801 | 1866 | } | |
| @@ -1807,7 +1872,7 @@ func (x *Gap) String() string { | |||
| 1807 | 1872 | func (*Gap) ProtoMessage() {} | |
| 1808 | 1873 | ||
| 1809 | 1874 | func (x *Gap) ProtoReflect() protoreflect.Message { | |
| 1810 | - | mi := &file_ermite_event_proto_msgTypes[23] | |
| 1875 | + | mi := &file_ermite_event_proto_msgTypes[24] | |
| 1811 | 1876 | if x != nil { | |
| 1812 | 1877 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1813 | 1878 | if ms.LoadMessageInfo() == nil { | |
| @@ -1820,7 +1885,7 @@ func (x *Gap) ProtoReflect() protoreflect.Message { | |||
| 1820 | 1885 | ||
| 1821 | 1886 | // Deprecated: Use Gap.ProtoReflect.Descriptor instead. | |
| 1822 | 1887 | func (*Gap) Descriptor() ([]byte, []int) { | |
| 1823 | - | return file_ermite_event_proto_rawDescGZIP(), []int{23} | |
| 1888 | + | return file_ermite_event_proto_rawDescGZIP(), []int{24} | |
| 1824 | 1889 | } | |
| 1825 | 1890 | ||
| 1826 | 1891 | // RunUpdated reports a CI run that was created or whose status, conclusion or | |
| @@ -1835,7 +1900,7 @@ type RunUpdated struct { | |||
| 1835 | 1900 | ||
| 1836 | 1901 | func (x *RunUpdated) Reset() { | |
| 1837 | 1902 | *x = RunUpdated{} | |
| 1838 | - | mi := &file_ermite_event_proto_msgTypes[24] | |
| 1903 | + | mi := &file_ermite_event_proto_msgTypes[25] | |
| 1839 | 1904 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1840 | 1905 | ms.StoreMessageInfo(mi) | |
| 1841 | 1906 | } | |
| @@ -1847,7 +1912,7 @@ func (x *RunUpdated) String() string { | |||
| 1847 | 1912 | func (*RunUpdated) ProtoMessage() {} | |
| 1848 | 1913 | ||
| 1849 | 1914 | func (x *RunUpdated) ProtoReflect() protoreflect.Message { | |
| 1850 | - | mi := &file_ermite_event_proto_msgTypes[24] | |
| 1915 | + | mi := &file_ermite_event_proto_msgTypes[25] | |
| 1851 | 1916 | if x != nil { | |
| 1852 | 1917 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1853 | 1918 | if ms.LoadMessageInfo() == nil { | |
| @@ -1860,7 +1925,7 @@ func (x *RunUpdated) ProtoReflect() protoreflect.Message { | |||
| 1860 | 1925 | ||
| 1861 | 1926 | // Deprecated: Use RunUpdated.ProtoReflect.Descriptor instead. | |
| 1862 | 1927 | func (*RunUpdated) Descriptor() ([]byte, []int) { | |
| 1863 | - | return file_ermite_event_proto_rawDescGZIP(), []int{24} | |
| 1928 | + | return file_ermite_event_proto_rawDescGZIP(), []int{25} | |
| 1864 | 1929 | } | |
| 1865 | 1930 | ||
| 1866 | 1931 | func (x *RunUpdated) GetRun() *Run { | |
| @@ -1882,7 +1947,7 @@ type JobUpdated struct { | |||
| 1882 | 1947 | ||
| 1883 | 1948 | func (x *JobUpdated) Reset() { | |
| 1884 | 1949 | *x = JobUpdated{} | |
| 1885 | - | mi := &file_ermite_event_proto_msgTypes[25] | |
| 1950 | + | mi := &file_ermite_event_proto_msgTypes[26] | |
| 1886 | 1951 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1887 | 1952 | ms.StoreMessageInfo(mi) | |
| 1888 | 1953 | } | |
| @@ -1894,7 +1959,7 @@ func (x *JobUpdated) String() string { | |||
| 1894 | 1959 | func (*JobUpdated) ProtoMessage() {} | |
| 1895 | 1960 | ||
| 1896 | 1961 | func (x *JobUpdated) ProtoReflect() protoreflect.Message { | |
| 1897 | - | mi := &file_ermite_event_proto_msgTypes[25] | |
| 1962 | + | mi := &file_ermite_event_proto_msgTypes[26] | |
| 1898 | 1963 | if x != nil { | |
| 1899 | 1964 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1900 | 1965 | if ms.LoadMessageInfo() == nil { | |
| @@ -1907,7 +1972,7 @@ func (x *JobUpdated) ProtoReflect() protoreflect.Message { | |||
| 1907 | 1972 | ||
| 1908 | 1973 | // Deprecated: Use JobUpdated.ProtoReflect.Descriptor instead. | |
| 1909 | 1974 | func (*JobUpdated) Descriptor() ([]byte, []int) { | |
| 1910 | - | return file_ermite_event_proto_rawDescGZIP(), []int{25} | |
| 1975 | + | return file_ermite_event_proto_rawDescGZIP(), []int{26} | |
| 1911 | 1976 | } | |
| 1912 | 1977 | ||
| 1913 | 1978 | func (x *JobUpdated) GetJob() *RunJob { | |
| @@ -1936,7 +2001,7 @@ type MirrorFailed struct { | |||
| 1936 | 2001 | ||
| 1937 | 2002 | func (x *MirrorFailed) Reset() { | |
| 1938 | 2003 | *x = MirrorFailed{} | |
| 1939 | - | mi := &file_ermite_event_proto_msgTypes[26] | |
| 2004 | + | mi := &file_ermite_event_proto_msgTypes[27] | |
| 1940 | 2005 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1941 | 2006 | ms.StoreMessageInfo(mi) | |
| 1942 | 2007 | } | |
| @@ -1948,7 +2013,7 @@ func (x *MirrorFailed) String() string { | |||
| 1948 | 2013 | func (*MirrorFailed) ProtoMessage() {} | |
| 1949 | 2014 | ||
| 1950 | 2015 | func (x *MirrorFailed) ProtoReflect() protoreflect.Message { | |
| 1951 | - | mi := &file_ermite_event_proto_msgTypes[26] | |
| 2016 | + | mi := &file_ermite_event_proto_msgTypes[27] | |
| 1952 | 2017 | if x != nil { | |
| 1953 | 2018 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 1954 | 2019 | if ms.LoadMessageInfo() == nil { | |
| @@ -1961,7 +2026,7 @@ func (x *MirrorFailed) ProtoReflect() protoreflect.Message { | |||
| 1961 | 2026 | ||
| 1962 | 2027 | // Deprecated: Use MirrorFailed.ProtoReflect.Descriptor instead. | |
| 1963 | 2028 | func (*MirrorFailed) Descriptor() ([]byte, []int) { | |
| 1964 | - | return file_ermite_event_proto_rawDescGZIP(), []int{26} | |
| 2029 | + | return file_ermite_event_proto_rawDescGZIP(), []int{27} | |
| 1965 | 2030 | } | |
| 1966 | 2031 | ||
| 1967 | 2032 | func (x *MirrorFailed) GetRepo() string { | |
| @@ -1997,7 +2062,7 @@ type MirrorRecovered struct { | |||
| 1997 | 2062 | ||
| 1998 | 2063 | func (x *MirrorRecovered) Reset() { | |
| 1999 | 2064 | *x = MirrorRecovered{} | |
| 2000 | - | mi := &file_ermite_event_proto_msgTypes[27] | |
| 2065 | + | mi := &file_ermite_event_proto_msgTypes[28] | |
| 2001 | 2066 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 2002 | 2067 | ms.StoreMessageInfo(mi) | |
| 2003 | 2068 | } | |
| @@ -2009,7 +2074,7 @@ func (x *MirrorRecovered) String() string { | |||
| 2009 | 2074 | func (*MirrorRecovered) ProtoMessage() {} | |
| 2010 | 2075 | ||
| 2011 | 2076 | func (x *MirrorRecovered) ProtoReflect() protoreflect.Message { | |
| 2012 | - | mi := &file_ermite_event_proto_msgTypes[27] | |
| 2077 | + | mi := &file_ermite_event_proto_msgTypes[28] | |
| 2013 | 2078 | if x != nil { | |
| 2014 | 2079 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 2015 | 2080 | if ms.LoadMessageInfo() == nil { | |
| @@ -2022,7 +2087,7 @@ func (x *MirrorRecovered) ProtoReflect() protoreflect.Message { | |||
| 2022 | 2087 | ||
| 2023 | 2088 | // Deprecated: Use MirrorRecovered.ProtoReflect.Descriptor instead. | |
| 2024 | 2089 | func (*MirrorRecovered) Descriptor() ([]byte, []int) { | |
| 2025 | - | return file_ermite_event_proto_rawDescGZIP(), []int{27} | |
| 2090 | + | return file_ermite_event_proto_rawDescGZIP(), []int{28} | |
| 2026 | 2091 | } | |
| 2027 | 2092 | ||
| 2028 | 2093 | func (x *MirrorRecovered) GetRepo() string { | |
| @@ -2046,7 +2111,7 @@ type ReleasePublished struct { | |||
| 2046 | 2111 | ||
| 2047 | 2112 | func (x *ReleasePublished) Reset() { | |
| 2048 | 2113 | *x = ReleasePublished{} | |
| 2049 | - | mi := &file_ermite_event_proto_msgTypes[28] | |
| 2114 | + | mi := &file_ermite_event_proto_msgTypes[29] | |
| 2050 | 2115 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 2051 | 2116 | ms.StoreMessageInfo(mi) | |
| 2052 | 2117 | } | |
| @@ -2058,7 +2123,7 @@ func (x *ReleasePublished) String() string { | |||
| 2058 | 2123 | func (*ReleasePublished) ProtoMessage() {} | |
| 2059 | 2124 | ||
| 2060 | 2125 | func (x *ReleasePublished) ProtoReflect() protoreflect.Message { | |
| 2061 | - | mi := &file_ermite_event_proto_msgTypes[28] | |
| 2126 | + | mi := &file_ermite_event_proto_msgTypes[29] | |
| 2062 | 2127 | if x != nil { | |
| 2063 | 2128 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 2064 | 2129 | if ms.LoadMessageInfo() == nil { | |
| @@ -2071,7 +2136,7 @@ func (x *ReleasePublished) ProtoReflect() protoreflect.Message { | |||
| 2071 | 2136 | ||
| 2072 | 2137 | // Deprecated: Use ReleasePublished.ProtoReflect.Descriptor instead. | |
| 2073 | 2138 | func (*ReleasePublished) Descriptor() ([]byte, []int) { | |
| 2074 | - | return file_ermite_event_proto_rawDescGZIP(), []int{28} | |
| 2139 | + | return file_ermite_event_proto_rawDescGZIP(), []int{29} | |
| 2075 | 2140 | } | |
| 2076 | 2141 | ||
| 2077 | 2142 | func (x *ReleasePublished) GetRepo() string { | |
| @@ -2123,7 +2188,7 @@ type ReleaseUpdated struct { | |||
| 2123 | 2188 | ||
| 2124 | 2189 | func (x *ReleaseUpdated) Reset() { | |
| 2125 | 2190 | *x = ReleaseUpdated{} | |
| 2126 | - | mi := &file_ermite_event_proto_msgTypes[29] | |
| 2191 | + | mi := &file_ermite_event_proto_msgTypes[30] | |
| 2127 | 2192 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 2128 | 2193 | ms.StoreMessageInfo(mi) | |
| 2129 | 2194 | } | |
| @@ -2135,7 +2200,7 @@ func (x *ReleaseUpdated) String() string { | |||
| 2135 | 2200 | func (*ReleaseUpdated) ProtoMessage() {} | |
| 2136 | 2201 | ||
| 2137 | 2202 | func (x *ReleaseUpdated) ProtoReflect() protoreflect.Message { | |
| 2138 | - | mi := &file_ermite_event_proto_msgTypes[29] | |
| 2203 | + | mi := &file_ermite_event_proto_msgTypes[30] | |
| 2139 | 2204 | if x != nil { | |
| 2140 | 2205 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 2141 | 2206 | if ms.LoadMessageInfo() == nil { | |
| @@ -2148,7 +2213,7 @@ func (x *ReleaseUpdated) ProtoReflect() protoreflect.Message { | |||
| 2148 | 2213 | ||
| 2149 | 2214 | // Deprecated: Use ReleaseUpdated.ProtoReflect.Descriptor instead. | |
| 2150 | 2215 | func (*ReleaseUpdated) Descriptor() ([]byte, []int) { | |
| 2151 | - | return file_ermite_event_proto_rawDescGZIP(), []int{29} | |
| 2216 | + | return file_ermite_event_proto_rawDescGZIP(), []int{30} | |
| 2152 | 2217 | } | |
| 2153 | 2218 | ||
| 2154 | 2219 | func (x *ReleaseUpdated) GetRepo() string { | |
| @@ -2198,7 +2263,7 @@ type ReleaseDeleted struct { | |||
| 2198 | 2263 | ||
| 2199 | 2264 | func (x *ReleaseDeleted) Reset() { | |
| 2200 | 2265 | *x = ReleaseDeleted{} | |
| 2201 | - | mi := &file_ermite_event_proto_msgTypes[30] | |
| 2266 | + | mi := &file_ermite_event_proto_msgTypes[31] | |
| 2202 | 2267 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 2203 | 2268 | ms.StoreMessageInfo(mi) | |
| 2204 | 2269 | } | |
| @@ -2210,7 +2275,7 @@ func (x *ReleaseDeleted) String() string { | |||
| 2210 | 2275 | func (*ReleaseDeleted) ProtoMessage() {} | |
| 2211 | 2276 | ||
| 2212 | 2277 | func (x *ReleaseDeleted) ProtoReflect() protoreflect.Message { | |
| 2213 | - | mi := &file_ermite_event_proto_msgTypes[30] | |
| 2278 | + | mi := &file_ermite_event_proto_msgTypes[31] | |
| 2214 | 2279 | if x != nil { | |
| 2215 | 2280 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 2216 | 2281 | if ms.LoadMessageInfo() == nil { | |
| @@ -2223,7 +2288,7 @@ func (x *ReleaseDeleted) ProtoReflect() protoreflect.Message { | |||
| 2223 | 2288 | ||
| 2224 | 2289 | // Deprecated: Use ReleaseDeleted.ProtoReflect.Descriptor instead. | |
| 2225 | 2290 | func (*ReleaseDeleted) Descriptor() ([]byte, []int) { | |
| 2226 | - | return file_ermite_event_proto_rawDescGZIP(), []int{30} | |
| 2291 | + | return file_ermite_event_proto_rawDescGZIP(), []int{31} | |
| 2227 | 2292 | } | |
| 2228 | 2293 | ||
| 2229 | 2294 | func (x *ReleaseDeleted) GetRepo() string { | |
| @@ -2261,7 +2326,7 @@ type ReleaseUnpublished struct { | |||
| 2261 | 2326 | ||
| 2262 | 2327 | func (x *ReleaseUnpublished) Reset() { | |
| 2263 | 2328 | *x = ReleaseUnpublished{} | |
| 2264 | - | mi := &file_ermite_event_proto_msgTypes[31] | |
| 2329 | + | mi := &file_ermite_event_proto_msgTypes[32] | |
| 2265 | 2330 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 2266 | 2331 | ms.StoreMessageInfo(mi) | |
| 2267 | 2332 | } | |
| @@ -2273,7 +2338,7 @@ func (x *ReleaseUnpublished) String() string { | |||
| 2273 | 2338 | func (*ReleaseUnpublished) ProtoMessage() {} | |
| 2274 | 2339 | ||
| 2275 | 2340 | func (x *ReleaseUnpublished) ProtoReflect() protoreflect.Message { | |
| 2276 | - | mi := &file_ermite_event_proto_msgTypes[31] | |
| 2341 | + | mi := &file_ermite_event_proto_msgTypes[32] | |
| 2277 | 2342 | if x != nil { | |
| 2278 | 2343 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |
| 2279 | 2344 | if ms.LoadMessageInfo() == nil { | |
| @@ -2286,7 +2351,7 @@ func (x *ReleaseUnpublished) ProtoReflect() protoreflect.Message { | |||
| 2286 | 2351 | ||
| 2287 | 2352 | // Deprecated: Use ReleaseUnpublished.ProtoReflect.Descriptor instead. | |
| 2288 | 2353 | func (*ReleaseUnpublished) Descriptor() ([]byte, []int) { | |
| 2289 | - | return file_ermite_event_proto_rawDescGZIP(), []int{31} | |
| 2354 | + | return file_ermite_event_proto_rawDescGZIP(), []int{32} | |
| 2290 | 2355 | } | |
| 2291 | 2356 | ||
| 2292 | 2357 | func (x *ReleaseUnpublished) GetRepo() string { | |
| @@ -2333,7 +2398,7 @@ const file_ermite_event_proto_rawDesc = "" + | |||
| 2333 | 2398 | "\x06topics\x18\x01 \x03(\tR\x06topics\x12!\n" + | |
| 2334 | 2399 | "\fresume_after\x18\x02 \x01(\tR\vresumeAfter\"4\n" + | |
| 2335 | 2400 | "\rWatchResponse\x12#\n" + | |
| 2336 | - | "\x05event\x18\x01 \x01(\v2\r.ermite.EventR\x05event\"\xcf\x0f\n" + | |
| 2401 | + | "\x05event\x18\x01 \x01(\v2\r.ermite.EventR\x05event\"\x8f\x10\n" + | |
| 2337 | 2402 | "\x05Event\x12\x0e\n" + | |
| 2338 | 2403 | "\x02id\x18\x01 \x01(\tR\x02id\x12.\n" + | |
| 2339 | 2404 | "\x04time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x04time\x128\n" + | |
| @@ -2367,7 +2432,8 @@ const file_ermite_event_proto_rawDesc = "" + | |||
| 2367 | 2432 | "\x11release_published\x18\x1b \x01(\v2\x18.ermite.ReleasePublishedH\x00R\x10releasePublished\x12A\n" + | |
| 2368 | 2433 | "\x0frelease_updated\x18\x1c \x01(\v2\x16.ermite.ReleaseUpdatedH\x00R\x0ereleaseUpdated\x12A\n" + | |
| 2369 | 2434 | "\x0frelease_deleted\x18\x1d \x01(\v2\x16.ermite.ReleaseDeletedH\x00R\x0ereleaseDeleted\x12M\n" + | |
| 2370 | - | "\x13release_unpublished\x18\x1e \x01(\v2\x1a.ermite.ReleaseUnpublishedH\x00R\x12releaseUnpublishedB\x06\n" + | |
| 2435 | + | "\x13release_unpublished\x18\x1e \x01(\v2\x1a.ermite.ReleaseUnpublishedH\x00R\x12releaseUnpublished\x12>\n" + | |
| 2436 | + | "\x0eissue_resolved\x18\x1f \x01(\v2\x15.ermite.IssueResolvedH\x00R\rissueResolvedB\x06\n" + | |
| 2371 | 2437 | "\x04kind\"/\n" + | |
| 2372 | 2438 | "\vRepoCreated\x12 \n" + | |
| 2373 | 2439 | "\x04repo\x18\x01 \x01(\v2\f.ermite.RepoR\x04repo\"/\n" + | |
| @@ -2419,6 +2485,8 @@ const file_ermite_event_proto_rawDesc = "" + | |||
| 2419 | 2485 | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"2\n" + | |
| 2420 | 2486 | "\vIssueClosed\x12#\n" + | |
| 2421 | 2487 | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"4\n" + | |
| 2488 | + | "\rIssueResolved\x12#\n" + | |
| 2489 | + | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"4\n" + | |
| 2422 | 2490 | "\rIssueReopened\x12#\n" + | |
| 2423 | 2491 | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"l\n" + | |
| 2424 | 2492 | "\x0eIssueCommented\x12\x12\n" + | |
| @@ -2487,7 +2555,7 @@ func file_ermite_event_proto_rawDescGZIP() []byte { | |||
| 2487 | 2555 | return file_ermite_event_proto_rawDescData | |
| 2488 | 2556 | } | |
| 2489 | 2557 | ||
| 2490 | - | var file_ermite_event_proto_msgTypes = make([]protoimpl.MessageInfo, 32) | |
| 2558 | + | var file_ermite_event_proto_msgTypes = make([]protoimpl.MessageInfo, 33) | |
| 2491 | 2559 | var file_ermite_event_proto_goTypes = []any{ | |
| 2492 | 2560 | (*WatchRequest)(nil), // 0: ermite.WatchRequest | |
| 2493 | 2561 | (*WatchResponse)(nil), // 1: ermite.WatchResponse | |
| @@ -2509,87 +2577,90 @@ var file_ermite_event_proto_goTypes = []any{ | |||
| 2509 | 2577 | (*CommentResolved)(nil), // 17: ermite.CommentResolved | |
| 2510 | 2578 | (*IssueOpened)(nil), // 18: ermite.IssueOpened | |
| 2511 | 2579 | (*IssueClosed)(nil), // 19: ermite.IssueClosed | |
| 2512 | - | (*IssueReopened)(nil), // 20: ermite.IssueReopened | |
| 2513 | - | (*IssueCommented)(nil), // 21: ermite.IssueCommented | |
| 2514 | - | (*IssueSubmitted)(nil), // 22: ermite.IssueSubmitted | |
| 2515 | - | (*Gap)(nil), // 23: ermite.Gap | |
| 2516 | - | (*RunUpdated)(nil), // 24: ermite.RunUpdated | |
| 2517 | - | (*JobUpdated)(nil), // 25: ermite.JobUpdated | |
| 2518 | - | (*MirrorFailed)(nil), // 26: ermite.MirrorFailed | |
| 2519 | - | (*MirrorRecovered)(nil), // 27: ermite.MirrorRecovered | |
| 2520 | - | (*ReleasePublished)(nil), // 28: ermite.ReleasePublished | |
| 2521 | - | (*ReleaseUpdated)(nil), // 29: ermite.ReleaseUpdated | |
| 2522 | - | (*ReleaseDeleted)(nil), // 30: ermite.ReleaseDeleted | |
| 2523 | - | (*ReleaseUnpublished)(nil), // 31: ermite.ReleaseUnpublished | |
| 2524 | - | (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp | |
| 2525 | - | (*Repo)(nil), // 33: ermite.Repo | |
| 2526 | - | (*MergeRequest)(nil), // 34: ermite.MergeRequest | |
| 2527 | - | (*Mergeability)(nil), // 35: ermite.Mergeability | |
| 2528 | - | (*Comment)(nil), // 36: ermite.Comment | |
| 2529 | - | (*Issue)(nil), // 37: ermite.Issue | |
| 2530 | - | (*IssueComment)(nil), // 38: ermite.IssueComment | |
| 2531 | - | (*Run)(nil), // 39: ermite.Run | |
| 2532 | - | (*RunJob)(nil), // 40: ermite.RunJob | |
| 2533 | - | (MirrorState)(0), // 41: ermite.MirrorState | |
| 2580 | + | (*IssueResolved)(nil), // 20: ermite.IssueResolved | |
| 2581 | + | (*IssueReopened)(nil), // 21: ermite.IssueReopened | |
| 2582 | + | (*IssueCommented)(nil), // 22: ermite.IssueCommented | |
| 2583 | + | (*IssueSubmitted)(nil), // 23: ermite.IssueSubmitted | |
| 2584 | + | (*Gap)(nil), // 24: ermite.Gap | |
| 2585 | + | (*RunUpdated)(nil), // 25: ermite.RunUpdated | |
| 2586 | + | (*JobUpdated)(nil), // 26: ermite.JobUpdated | |
| 2587 | + | (*MirrorFailed)(nil), // 27: ermite.MirrorFailed | |
| 2588 | + | (*MirrorRecovered)(nil), // 28: ermite.MirrorRecovered | |
| 2589 | + | (*ReleasePublished)(nil), // 29: ermite.ReleasePublished | |
| 2590 | + | (*ReleaseUpdated)(nil), // 30: ermite.ReleaseUpdated | |
| 2591 | + | (*ReleaseDeleted)(nil), // 31: ermite.ReleaseDeleted | |
| 2592 | + | (*ReleaseUnpublished)(nil), // 32: ermite.ReleaseUnpublished | |
| 2593 | + | (*timestamppb.Timestamp)(nil), // 33: google.protobuf.Timestamp | |
| 2594 | + | (*Repo)(nil), // 34: ermite.Repo | |
| 2595 | + | (*MergeRequest)(nil), // 35: ermite.MergeRequest | |
| 2596 | + | (*Mergeability)(nil), // 36: ermite.Mergeability | |
| 2597 | + | (*Comment)(nil), // 37: ermite.Comment | |
| 2598 | + | (*Issue)(nil), // 38: ermite.Issue | |
| 2599 | + | (*IssueComment)(nil), // 39: ermite.IssueComment | |
| 2600 | + | (*Run)(nil), // 40: ermite.Run | |
| 2601 | + | (*RunJob)(nil), // 41: ermite.RunJob | |
| 2602 | + | (MirrorState)(0), // 42: ermite.MirrorState | |
| 2534 | 2603 | } | |
| 2535 | 2604 | var file_ermite_event_proto_depIdxs = []int32{ | |
| 2536 | 2605 | 2, // 0: ermite.WatchResponse.event:type_name -> ermite.Event | |
| 2537 | - | 32, // 1: ermite.Event.time:type_name -> google.protobuf.Timestamp | |
| 2606 | + | 33, // 1: ermite.Event.time:type_name -> google.protobuf.Timestamp | |
| 2538 | 2607 | 3, // 2: ermite.Event.repo_created:type_name -> ermite.RepoCreated | |
| 2539 | 2608 | 4, // 3: ermite.Event.repo_updated:type_name -> ermite.RepoUpdated | |
| 2540 | 2609 | 5, // 4: ermite.Event.repo_deleted:type_name -> ermite.RepoDeleted | |
| 2541 | 2610 | 6, // 5: ermite.Event.pushed:type_name -> ermite.Pushed | |
| 2542 | - | 23, // 6: ermite.Event.gap:type_name -> ermite.Gap | |
| 2611 | + | 24, // 6: ermite.Event.gap:type_name -> ermite.Gap | |
| 2543 | 2612 | 8, // 7: ermite.Event.merge_request_opened:type_name -> ermite.MergeRequestOpened | |
| 2544 | 2613 | 9, // 8: ermite.Event.merge_request_merged:type_name -> ermite.MergeRequestMerged | |
| 2545 | 2614 | 13, // 9: ermite.Event.merge_request_closed:type_name -> ermite.MergeRequestClosed | |
| 2546 | 2615 | 14, // 10: ermite.Event.comment_added:type_name -> ermite.CommentAdded | |
| 2547 | - | 24, // 11: ermite.Event.run_updated:type_name -> ermite.RunUpdated | |
| 2548 | - | 25, // 12: ermite.Event.job_updated:type_name -> ermite.JobUpdated | |
| 2616 | + | 25, // 11: ermite.Event.run_updated:type_name -> ermite.RunUpdated | |
| 2617 | + | 26, // 12: ermite.Event.job_updated:type_name -> ermite.JobUpdated | |
| 2549 | 2618 | 15, // 13: ermite.Event.comment_edited:type_name -> ermite.CommentEdited | |
| 2550 | 2619 | 16, // 14: ermite.Event.comment_deleted:type_name -> ermite.CommentDeleted | |
| 2551 | 2620 | 17, // 15: ermite.Event.comment_resolved:type_name -> ermite.CommentResolved | |
| 2552 | 2621 | 18, // 16: ermite.Event.issue_opened:type_name -> ermite.IssueOpened | |
| 2553 | 2622 | 19, // 17: ermite.Event.issue_closed:type_name -> ermite.IssueClosed | |
| 2554 | - | 20, // 18: ermite.Event.issue_reopened:type_name -> ermite.IssueReopened | |
| 2555 | - | 21, // 19: ermite.Event.issue_commented:type_name -> ermite.IssueCommented | |
| 2556 | - | 22, // 20: ermite.Event.issue_submitted:type_name -> ermite.IssueSubmitted | |
| 2623 | + | 21, // 18: ermite.Event.issue_reopened:type_name -> ermite.IssueReopened | |
| 2624 | + | 22, // 19: ermite.Event.issue_commented:type_name -> ermite.IssueCommented | |
| 2625 | + | 23, // 20: ermite.Event.issue_submitted:type_name -> ermite.IssueSubmitted | |
| 2557 | 2626 | 12, // 21: ermite.Event.merge_request_mergeability:type_name -> ermite.MergeRequestMergeability | |
| 2558 | - | 26, // 22: ermite.Event.mirror_failed:type_name -> ermite.MirrorFailed | |
| 2559 | - | 27, // 23: ermite.Event.mirror_recovered:type_name -> ermite.MirrorRecovered | |
| 2627 | + | 27, // 22: ermite.Event.mirror_failed:type_name -> ermite.MirrorFailed | |
| 2628 | + | 28, // 23: ermite.Event.mirror_recovered:type_name -> ermite.MirrorRecovered | |
| 2560 | 2629 | 10, // 24: ermite.Event.merge_request_auto_merge_enabled:type_name -> ermite.MergeRequestAutoMergeEnabled | |
| 2561 | 2630 | 11, // 25: ermite.Event.merge_request_auto_merge_cancelled:type_name -> ermite.MergeRequestAutoMergeCancelled | |
| 2562 | - | 28, // 26: ermite.Event.release_published:type_name -> ermite.ReleasePublished | |
| 2563 | - | 29, // 27: ermite.Event.release_updated:type_name -> ermite.ReleaseUpdated | |
| 2564 | - | 30, // 28: ermite.Event.release_deleted:type_name -> ermite.ReleaseDeleted | |
| 2565 | - | 31, // 29: ermite.Event.release_unpublished:type_name -> ermite.ReleaseUnpublished | |
| 2566 | - | 33, // 30: ermite.RepoCreated.repo:type_name -> ermite.Repo | |
| 2567 | - | 33, // 31: ermite.RepoUpdated.repo:type_name -> ermite.Repo | |
| 2568 | - | 7, // 32: ermite.Pushed.ref_updates:type_name -> ermite.RefUpdate | |
| 2569 | - | 34, // 33: ermite.MergeRequestOpened.merge_request:type_name -> ermite.MergeRequest | |
| 2570 | - | 34, // 34: ermite.MergeRequestMerged.merge_request:type_name -> ermite.MergeRequest | |
| 2571 | - | 34, // 35: ermite.MergeRequestAutoMergeEnabled.merge_request:type_name -> ermite.MergeRequest | |
| 2572 | - | 34, // 36: ermite.MergeRequestAutoMergeCancelled.merge_request:type_name -> ermite.MergeRequest | |
| 2573 | - | 35, // 37: ermite.MergeRequestMergeability.mergeability:type_name -> ermite.Mergeability | |
| 2574 | - | 34, // 38: ermite.MergeRequestClosed.merge_request:type_name -> ermite.MergeRequest | |
| 2575 | - | 36, // 39: ermite.CommentAdded.comment:type_name -> ermite.Comment | |
| 2576 | - | 36, // 40: ermite.CommentEdited.comment:type_name -> ermite.Comment | |
| 2577 | - | 36, // 41: ermite.CommentDeleted.comment:type_name -> ermite.Comment | |
| 2578 | - | 36, // 42: ermite.CommentResolved.comment:type_name -> ermite.Comment | |
| 2579 | - | 37, // 43: ermite.IssueOpened.issue:type_name -> ermite.Issue | |
| 2580 | - | 37, // 44: ermite.IssueClosed.issue:type_name -> ermite.Issue | |
| 2581 | - | 37, // 45: ermite.IssueReopened.issue:type_name -> ermite.Issue | |
| 2582 | - | 38, // 46: ermite.IssueCommented.comment:type_name -> ermite.IssueComment | |
| 2583 | - | 39, // 47: ermite.RunUpdated.run:type_name -> ermite.Run | |
| 2584 | - | 40, // 48: ermite.JobUpdated.job:type_name -> ermite.RunJob | |
| 2585 | - | 41, // 49: ermite.MirrorFailed.state:type_name -> ermite.MirrorState | |
| 2586 | - | 0, // 50: ermite.EventService.Watch:input_type -> ermite.WatchRequest | |
| 2587 | - | 1, // 51: ermite.EventService.Watch:output_type -> ermite.WatchResponse | |
| 2588 | - | 51, // [51:52] is the sub-list for method output_type | |
| 2589 | - | 50, // [50:51] is the sub-list for method input_type | |
| 2590 | - | 50, // [50:50] is the sub-list for extension type_name | |
| 2591 | - | 50, // [50:50] is the sub-list for extension extendee | |
| 2592 | - | 0, // [0:50] is the sub-list for field type_name | |
| 2631 | + | 29, // 26: ermite.Event.release_published:type_name -> ermite.ReleasePublished | |
| 2632 | + | 30, // 27: ermite.Event.release_updated:type_name -> ermite.ReleaseUpdated | |
| 2633 | + | 31, // 28: ermite.Event.release_deleted:type_name -> ermite.ReleaseDeleted | |
| 2634 | + | 32, // 29: ermite.Event.release_unpublished:type_name -> ermite.ReleaseUnpublished | |
| 2635 | + | 20, // 30: ermite.Event.issue_resolved:type_name -> ermite.IssueResolved | |
| 2636 | + | 34, // 31: ermite.RepoCreated.repo:type_name -> ermite.Repo | |
| 2637 | + | 34, // 32: ermite.RepoUpdated.repo:type_name -> ermite.Repo | |
| 2638 | + | 7, // 33: ermite.Pushed.ref_updates:type_name -> ermite.RefUpdate | |
| 2639 | + | 35, // 34: ermite.MergeRequestOpened.merge_request:type_name -> ermite.MergeRequest | |
| 2640 | + | 35, // 35: ermite.MergeRequestMerged.merge_request:type_name -> ermite.MergeRequest | |
| 2641 | + | 35, // 36: ermite.MergeRequestAutoMergeEnabled.merge_request:type_name -> ermite.MergeRequest | |
| 2642 | + | 35, // 37: ermite.MergeRequestAutoMergeCancelled.merge_request:type_name -> ermite.MergeRequest | |
| 2643 | + | 36, // 38: ermite.MergeRequestMergeability.mergeability:type_name -> ermite.Mergeability | |
| 2644 | + | 35, // 39: ermite.MergeRequestClosed.merge_request:type_name -> ermite.MergeRequest | |
| 2645 | + | 37, // 40: ermite.CommentAdded.comment:type_name -> ermite.Comment | |
| 2646 | + | 37, // 41: ermite.CommentEdited.comment:type_name -> ermite.Comment | |
| 2647 | + | 37, // 42: ermite.CommentDeleted.comment:type_name -> ermite.Comment | |
| 2648 | + | 37, // 43: ermite.CommentResolved.comment:type_name -> ermite.Comment | |
| 2649 | + | 38, // 44: ermite.IssueOpened.issue:type_name -> ermite.Issue | |
| 2650 | + | 38, // 45: ermite.IssueClosed.issue:type_name -> ermite.Issue | |
| 2651 | + | 38, // 46: ermite.IssueResolved.issue:type_name -> ermite.Issue | |
| 2652 | + | 38, // 47: ermite.IssueReopened.issue:type_name -> ermite.Issue | |
| 2653 | + | 39, // 48: ermite.IssueCommented.comment:type_name -> ermite.IssueComment | |
| 2654 | + | 40, // 49: ermite.RunUpdated.run:type_name -> ermite.Run | |
| 2655 | + | 41, // 50: ermite.JobUpdated.job:type_name -> ermite.RunJob | |
| 2656 | + | 42, // 51: ermite.MirrorFailed.state:type_name -> ermite.MirrorState | |
| 2657 | + | 0, // 52: ermite.EventService.Watch:input_type -> ermite.WatchRequest | |
| 2658 | + | 1, // 53: ermite.EventService.Watch:output_type -> ermite.WatchResponse | |
| 2659 | + | 53, // [53:54] is the sub-list for method output_type | |
| 2660 | + | 52, // [52:53] is the sub-list for method input_type | |
| 2661 | + | 52, // [52:52] is the sub-list for extension type_name | |
| 2662 | + | 52, // [52:52] is the sub-list for extension extendee | |
| 2663 | + | 0, // [0:52] is the sub-list for field type_name | |
| 2593 | 2664 | } | |
| 2594 | 2665 | ||
| 2595 | 2666 | func init() { file_ermite_event_proto_init() } | |
| @@ -2631,6 +2702,7 @@ func file_ermite_event_proto_init() { | |||
| 2631 | 2702 | (*Event_ReleaseUpdated)(nil), | |
| 2632 | 2703 | (*Event_ReleaseDeleted)(nil), | |
| 2633 | 2704 | (*Event_ReleaseUnpublished)(nil), | |
| 2705 | + | (*Event_IssueResolved)(nil), | |
| 2634 | 2706 | } | |
| 2635 | 2707 | type x struct{} | |
| 2636 | 2708 | out := protoimpl.TypeBuilder{ | |
| @@ -2638,7 +2710,7 @@ func file_ermite_event_proto_init() { | |||
| 2638 | 2710 | GoPackagePath: reflect.TypeOf(x{}).PkgPath(), | |
| 2639 | 2711 | RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_event_proto_rawDesc), len(file_ermite_event_proto_rawDesc)), | |
| 2640 | 2712 | NumEnums: 0, | |
| 2641 | - | NumMessages: 32, | |
| 2713 | + | NumMessages: 33, | |
| 2642 | 2714 | NumExtensions: 0, | |
| 2643 | 2715 | NumServices: 1, | |
| 2644 | 2716 | }, | |
| @@ -179,6 +179,7 @@ type Event struct { | |||||
| 179 | // *Event_ReleaseUpdated | 179 | // *Event_ReleaseUpdated | ||
| 180 | // *Event_ReleaseDeleted | 180 | // *Event_ReleaseDeleted | ||
| 181 | // *Event_ReleaseUnpublished | 181 | // *Event_ReleaseUnpublished | ||
| 182 | + | // *Event_IssueResolved | |||
| 182 | Kind isEvent_Kind `protobuf_oneof:"kind"` | 183 | Kind isEvent_Kind `protobuf_oneof:"kind"` | ||
| 183 | unknownFields protoimpl.UnknownFields | 184 | unknownFields protoimpl.UnknownFields | ||
| 184 | sizeCache protoimpl.SizeCache | 185 | sizeCache protoimpl.SizeCache | ||
| @@ -487,6 +488,15 @@ func (x *Event) GetReleaseUnpublished() *ReleaseUnpublished { | |||||
| 487 | return nil | 488 | return nil | ||
| 488 | } | 489 | } | ||
| 489 | 490 | ||||
| 491 | + | func (x *Event) GetIssueResolved() *IssueResolved { | |||
| 492 | + | if x != nil { | |||
| 493 | + | if x, ok := x.Kind.(*Event_IssueResolved); ok { | |||
| 494 | + | return x.IssueResolved | |||
| 495 | + | } | |||
| 496 | + | } | |||
| 497 | + | return nil | |||
| 498 | + | } | |||
| 499 | + | ||||
| 490 | type isEvent_Kind interface { | 500 | type isEvent_Kind interface { | ||
| 491 | isEvent_Kind() | 501 | isEvent_Kind() | ||
| 492 | } | 502 | } | ||
| @@ -634,6 +644,11 @@ type Event_ReleaseUnpublished struct { | |||||
| 634 | ReleaseUnpublished *ReleaseUnpublished `protobuf:"bytes,30,opt,name=release_unpublished,json=releaseUnpublished,proto3,oneof"` | 644 | ReleaseUnpublished *ReleaseUnpublished `protobuf:"bytes,30,opt,name=release_unpublished,json=releaseUnpublished,proto3,oneof"` | ||
| 635 | } | 645 | } | ||
| 636 | 646 | ||||
| 647 | + | type Event_IssueResolved struct { | |||
| 648 | + | // IssueResolved: an issue was resolved. | |||
| 649 | + | IssueResolved *IssueResolved `protobuf:"bytes,31,opt,name=issue_resolved,json=issueResolved,proto3,oneof"` | |||
| 650 | + | } | |||
| 651 | + | ||||
| 637 | func (*Event_RepoCreated) isEvent_Kind() {} | 652 | func (*Event_RepoCreated) isEvent_Kind() {} | ||
| 638 | 653 | ||||
| 639 | func (*Event_RepoUpdated) isEvent_Kind() {} | 654 | func (*Event_RepoUpdated) isEvent_Kind() {} | ||
| @@ -690,6 +705,8 @@ func (*Event_ReleaseDeleted) isEvent_Kind() {} | |||||
| 690 | 705 | ||||
| 691 | func (*Event_ReleaseUnpublished) isEvent_Kind() {} | 706 | func (*Event_ReleaseUnpublished) isEvent_Kind() {} | ||
| 692 | 707 | ||||
| 708 | + | func (*Event_IssueResolved) isEvent_Kind() {} | |||
| 709 | + | ||||
| 693 | // RepoCreated reports a new repository. | 710 | // RepoCreated reports a new repository. | ||
| 694 | type RepoCreated struct { | 711 | type RepoCreated struct { | ||
| 695 | state protoimpl.MessageState `protogen:"open.v1"` | 712 | state protoimpl.MessageState `protogen:"open.v1"` | ||
| @@ -1569,7 +1586,8 @@ func (x *IssueOpened) GetIssue() *Issue { | |||||
| 1569 | return nil | 1586 | return nil | ||
| 1570 | } | 1587 | } | ||
| 1571 | 1588 | ||||
| 1572 | - | // IssueClosed reports a closed issue. | 1589 | + | // IssueClosed reports a closed issue. A merge that resolves an issue sends |
| 1590 | + | // issue_resolved, not issue_closed. | |||
| 1573 | type IssueClosed struct { | 1591 | type IssueClosed struct { | ||
| 1574 | state protoimpl.MessageState `protogen:"open.v1"` | 1592 | state protoimpl.MessageState `protogen:"open.v1"` | ||
| 1575 | // Issue is the issue after closing, including its repository and number. | 1593 | // Issue is the issue after closing, including its repository and number. | ||
| @@ -1615,6 +1633,53 @@ func (x *IssueClosed) GetIssue() *Issue { | |||||
| 1615 | return nil | 1633 | return nil | ||
| 1616 | } | 1634 | } | ||
| 1617 | 1635 | ||||
| 1636 | + | // IssueResolved reports a resolved issue. | |||
| 1637 | + | type IssueResolved struct { | |||
| 1638 | + | state protoimpl.MessageState `protogen:"open.v1"` | |||
| 1639 | + | // Issue is the issue after resolving, including its repository, number and | |||
| 1640 | + | // closed_by_merge_request. | |||
| 1641 | + | Issue *Issue `protobuf:"bytes,1,opt,name=issue,proto3" json:"issue,omitempty"` | |||
| 1642 | + | unknownFields protoimpl.UnknownFields | |||
| 1643 | + | sizeCache protoimpl.SizeCache | |||
| 1644 | + | } | |||
| 1645 | + | ||||
| 1646 | + | func (x *IssueResolved) Reset() { | |||
| 1647 | + | *x = IssueResolved{} | |||
| 1648 | + | mi := &file_ermite_event_proto_msgTypes[20] | |||
| 1649 | + | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |||
| 1650 | + | ms.StoreMessageInfo(mi) | |||
| 1651 | + | } | |||
| 1652 | + | ||||
| 1653 | + | func (x *IssueResolved) String() string { | |||
| 1654 | + | return protoimpl.X.MessageStringOf(x) | |||
| 1655 | + | } | |||
| 1656 | + | ||||
| 1657 | + | func (*IssueResolved) ProtoMessage() {} | |||
| 1658 | + | ||||
| 1659 | + | func (x *IssueResolved) ProtoReflect() protoreflect.Message { | |||
| 1660 | + | mi := &file_ermite_event_proto_msgTypes[20] | |||
| 1661 | + | if x != nil { | |||
| 1662 | + | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | |||
| 1663 | + | if ms.LoadMessageInfo() == nil { | |||
| 1664 | + | ms.StoreMessageInfo(mi) | |||
| 1665 | + | } | |||
| 1666 | + | return ms | |||
| 1667 | + | } | |||
| 1668 | + | return mi.MessageOf(x) | |||
| 1669 | + | } | |||
| 1670 | + | ||||
| 1671 | + | // Deprecated: Use IssueResolved.ProtoReflect.Descriptor instead. | |||
| 1672 | + | func (*IssueResolved) Descriptor() ([]byte, []int) { | |||
| 1673 | + | return file_ermite_event_proto_rawDescGZIP(), []int{20} | |||
| 1674 | + | } | |||
| 1675 | + | ||||
| 1676 | + | func (x *IssueResolved) GetIssue() *Issue { | |||
| 1677 | + | if x != nil { | |||
| 1678 | + | return x.Issue | |||
| 1679 | + | } | |||
| 1680 | + | return nil | |||
| 1681 | + | } | |||
| 1682 | + | ||||
| 1618 | // IssueReopened reports a reopened issue. | 1683 | // IssueReopened reports a reopened issue. | ||
| 1619 | type IssueReopened struct { | 1684 | type IssueReopened struct { | ||
| 1620 | state protoimpl.MessageState `protogen:"open.v1"` | 1685 | state protoimpl.MessageState `protogen:"open.v1"` | ||
| @@ -1626,7 +1691,7 @@ type IssueReopened struct { | |||||
| 1626 | 1691 | ||||
| 1627 | func (x *IssueReopened) Reset() { | 1692 | func (x *IssueReopened) Reset() { | ||
| 1628 | *x = IssueReopened{} | 1693 | *x = IssueReopened{} | ||
| 1629 | - | mi := &file_ermite_event_proto_msgTypes[20] | 1694 | + | mi := &file_ermite_event_proto_msgTypes[21] |
| 1630 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1695 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1631 | ms.StoreMessageInfo(mi) | 1696 | ms.StoreMessageInfo(mi) | ||
| 1632 | } | 1697 | } | ||
| @@ -1638,7 +1703,7 @@ func (x *IssueReopened) String() string { | |||||
| 1638 | func (*IssueReopened) ProtoMessage() {} | 1703 | func (*IssueReopened) ProtoMessage() {} | ||
| 1639 | 1704 | ||||
| 1640 | func (x *IssueReopened) ProtoReflect() protoreflect.Message { | 1705 | func (x *IssueReopened) ProtoReflect() protoreflect.Message { | ||
| 1641 | - | mi := &file_ermite_event_proto_msgTypes[20] | 1706 | + | mi := &file_ermite_event_proto_msgTypes[21] |
| 1642 | if x != nil { | 1707 | if x != nil { | ||
| 1643 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1708 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1644 | if ms.LoadMessageInfo() == nil { | 1709 | if ms.LoadMessageInfo() == nil { | ||
| @@ -1651,7 +1716,7 @@ func (x *IssueReopened) ProtoReflect() protoreflect.Message { | |||||
| 1651 | 1716 | ||||
| 1652 | // Deprecated: Use IssueReopened.ProtoReflect.Descriptor instead. | 1717 | // Deprecated: Use IssueReopened.ProtoReflect.Descriptor instead. | ||
| 1653 | func (*IssueReopened) Descriptor() ([]byte, []int) { | 1718 | func (*IssueReopened) Descriptor() ([]byte, []int) { | ||
| 1654 | - | return file_ermite_event_proto_rawDescGZIP(), []int{20} | 1719 | + | return file_ermite_event_proto_rawDescGZIP(), []int{21} |
| 1655 | } | 1720 | } | ||
| 1656 | 1721 | ||||
| 1657 | func (x *IssueReopened) GetIssue() *Issue { | 1722 | func (x *IssueReopened) GetIssue() *Issue { | ||
| @@ -1676,7 +1741,7 @@ type IssueCommented struct { | |||||
| 1676 | 1741 | ||||
| 1677 | func (x *IssueCommented) Reset() { | 1742 | func (x *IssueCommented) Reset() { | ||
| 1678 | *x = IssueCommented{} | 1743 | *x = IssueCommented{} | ||
| 1679 | - | mi := &file_ermite_event_proto_msgTypes[21] | 1744 | + | mi := &file_ermite_event_proto_msgTypes[22] |
| 1680 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1745 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1681 | ms.StoreMessageInfo(mi) | 1746 | ms.StoreMessageInfo(mi) | ||
| 1682 | } | 1747 | } | ||
| @@ -1688,7 +1753,7 @@ func (x *IssueCommented) String() string { | |||||
| 1688 | func (*IssueCommented) ProtoMessage() {} | 1753 | func (*IssueCommented) ProtoMessage() {} | ||
| 1689 | 1754 | ||||
| 1690 | func (x *IssueCommented) ProtoReflect() protoreflect.Message { | 1755 | func (x *IssueCommented) ProtoReflect() protoreflect.Message { | ||
| 1691 | - | mi := &file_ermite_event_proto_msgTypes[21] | 1756 | + | mi := &file_ermite_event_proto_msgTypes[22] |
| 1692 | if x != nil { | 1757 | if x != nil { | ||
| 1693 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1758 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1694 | if ms.LoadMessageInfo() == nil { | 1759 | if ms.LoadMessageInfo() == nil { | ||
| @@ -1701,7 +1766,7 @@ func (x *IssueCommented) ProtoReflect() protoreflect.Message { | |||||
| 1701 | 1766 | ||||
| 1702 | // Deprecated: Use IssueCommented.ProtoReflect.Descriptor instead. | 1767 | // Deprecated: Use IssueCommented.ProtoReflect.Descriptor instead. | ||
| 1703 | func (*IssueCommented) Descriptor() ([]byte, []int) { | 1768 | func (*IssueCommented) Descriptor() ([]byte, []int) { | ||
| 1704 | - | return file_ermite_event_proto_rawDescGZIP(), []int{21} | 1769 | + | return file_ermite_event_proto_rawDescGZIP(), []int{22} |
| 1705 | } | 1770 | } | ||
| 1706 | 1771 | ||||
| 1707 | func (x *IssueCommented) GetRepo() string { | 1772 | func (x *IssueCommented) GetRepo() string { | ||
| @@ -1740,7 +1805,7 @@ type IssueSubmitted struct { | |||||
| 1740 | 1805 | ||||
| 1741 | func (x *IssueSubmitted) Reset() { | 1806 | func (x *IssueSubmitted) Reset() { | ||
| 1742 | *x = IssueSubmitted{} | 1807 | *x = IssueSubmitted{} | ||
| 1743 | - | mi := &file_ermite_event_proto_msgTypes[22] | 1808 | + | mi := &file_ermite_event_proto_msgTypes[23] |
| 1744 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1809 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1745 | ms.StoreMessageInfo(mi) | 1810 | ms.StoreMessageInfo(mi) | ||
| 1746 | } | 1811 | } | ||
| @@ -1752,7 +1817,7 @@ func (x *IssueSubmitted) String() string { | |||||
| 1752 | func (*IssueSubmitted) ProtoMessage() {} | 1817 | func (*IssueSubmitted) ProtoMessage() {} | ||
| 1753 | 1818 | ||||
| 1754 | func (x *IssueSubmitted) ProtoReflect() protoreflect.Message { | 1819 | func (x *IssueSubmitted) ProtoReflect() protoreflect.Message { | ||
| 1755 | - | mi := &file_ermite_event_proto_msgTypes[22] | 1820 | + | mi := &file_ermite_event_proto_msgTypes[23] |
| 1756 | if x != nil { | 1821 | if x != nil { | ||
| 1757 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1822 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1758 | if ms.LoadMessageInfo() == nil { | 1823 | if ms.LoadMessageInfo() == nil { | ||
| @@ -1765,7 +1830,7 @@ func (x *IssueSubmitted) ProtoReflect() protoreflect.Message { | |||||
| 1765 | 1830 | ||||
| 1766 | // Deprecated: Use IssueSubmitted.ProtoReflect.Descriptor instead. | 1831 | // Deprecated: Use IssueSubmitted.ProtoReflect.Descriptor instead. | ||
| 1767 | func (*IssueSubmitted) Descriptor() ([]byte, []int) { | 1832 | func (*IssueSubmitted) Descriptor() ([]byte, []int) { | ||
| 1768 | - | return file_ermite_event_proto_rawDescGZIP(), []int{22} | 1833 | + | return file_ermite_event_proto_rawDescGZIP(), []int{23} |
| 1769 | } | 1834 | } | ||
| 1770 | 1835 | ||||
| 1771 | func (x *IssueSubmitted) GetRepo() string { | 1836 | func (x *IssueSubmitted) GetRepo() string { | ||
| @@ -1795,7 +1860,7 @@ type Gap struct { | |||||
| 1795 | 1860 | ||||
| 1796 | func (x *Gap) Reset() { | 1861 | func (x *Gap) Reset() { | ||
| 1797 | *x = Gap{} | 1862 | *x = Gap{} | ||
| 1798 | - | mi := &file_ermite_event_proto_msgTypes[23] | 1863 | + | mi := &file_ermite_event_proto_msgTypes[24] |
| 1799 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1864 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1800 | ms.StoreMessageInfo(mi) | 1865 | ms.StoreMessageInfo(mi) | ||
| 1801 | } | 1866 | } | ||
| @@ -1807,7 +1872,7 @@ func (x *Gap) String() string { | |||||
| 1807 | func (*Gap) ProtoMessage() {} | 1872 | func (*Gap) ProtoMessage() {} | ||
| 1808 | 1873 | ||||
| 1809 | func (x *Gap) ProtoReflect() protoreflect.Message { | 1874 | func (x *Gap) ProtoReflect() protoreflect.Message { | ||
| 1810 | - | mi := &file_ermite_event_proto_msgTypes[23] | 1875 | + | mi := &file_ermite_event_proto_msgTypes[24] |
| 1811 | if x != nil { | 1876 | if x != nil { | ||
| 1812 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1877 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1813 | if ms.LoadMessageInfo() == nil { | 1878 | if ms.LoadMessageInfo() == nil { | ||
| @@ -1820,7 +1885,7 @@ func (x *Gap) ProtoReflect() protoreflect.Message { | |||||
| 1820 | 1885 | ||||
| 1821 | // Deprecated: Use Gap.ProtoReflect.Descriptor instead. | 1886 | // Deprecated: Use Gap.ProtoReflect.Descriptor instead. | ||
| 1822 | func (*Gap) Descriptor() ([]byte, []int) { | 1887 | func (*Gap) Descriptor() ([]byte, []int) { | ||
| 1823 | - | return file_ermite_event_proto_rawDescGZIP(), []int{23} | 1888 | + | return file_ermite_event_proto_rawDescGZIP(), []int{24} |
| 1824 | } | 1889 | } | ||
| 1825 | 1890 | ||||
| 1826 | // RunUpdated reports a CI run that was created or whose status, conclusion or | 1891 | // RunUpdated reports a CI run that was created or whose status, conclusion or | ||
| @@ -1835,7 +1900,7 @@ type RunUpdated struct { | |||||
| 1835 | 1900 | ||||
| 1836 | func (x *RunUpdated) Reset() { | 1901 | func (x *RunUpdated) Reset() { | ||
| 1837 | *x = RunUpdated{} | 1902 | *x = RunUpdated{} | ||
| 1838 | - | mi := &file_ermite_event_proto_msgTypes[24] | 1903 | + | mi := &file_ermite_event_proto_msgTypes[25] |
| 1839 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1904 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1840 | ms.StoreMessageInfo(mi) | 1905 | ms.StoreMessageInfo(mi) | ||
| 1841 | } | 1906 | } | ||
| @@ -1847,7 +1912,7 @@ func (x *RunUpdated) String() string { | |||||
| 1847 | func (*RunUpdated) ProtoMessage() {} | 1912 | func (*RunUpdated) ProtoMessage() {} | ||
| 1848 | 1913 | ||||
| 1849 | func (x *RunUpdated) ProtoReflect() protoreflect.Message { | 1914 | func (x *RunUpdated) ProtoReflect() protoreflect.Message { | ||
| 1850 | - | mi := &file_ermite_event_proto_msgTypes[24] | 1915 | + | mi := &file_ermite_event_proto_msgTypes[25] |
| 1851 | if x != nil { | 1916 | if x != nil { | ||
| 1852 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1917 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1853 | if ms.LoadMessageInfo() == nil { | 1918 | if ms.LoadMessageInfo() == nil { | ||
| @@ -1860,7 +1925,7 @@ func (x *RunUpdated) ProtoReflect() protoreflect.Message { | |||||
| 1860 | 1925 | ||||
| 1861 | // Deprecated: Use RunUpdated.ProtoReflect.Descriptor instead. | 1926 | // Deprecated: Use RunUpdated.ProtoReflect.Descriptor instead. | ||
| 1862 | func (*RunUpdated) Descriptor() ([]byte, []int) { | 1927 | func (*RunUpdated) Descriptor() ([]byte, []int) { | ||
| 1863 | - | return file_ermite_event_proto_rawDescGZIP(), []int{24} | 1928 | + | return file_ermite_event_proto_rawDescGZIP(), []int{25} |
| 1864 | } | 1929 | } | ||
| 1865 | 1930 | ||||
| 1866 | func (x *RunUpdated) GetRun() *Run { | 1931 | func (x *RunUpdated) GetRun() *Run { | ||
| @@ -1882,7 +1947,7 @@ type JobUpdated struct { | |||||
| 1882 | 1947 | ||||
| 1883 | func (x *JobUpdated) Reset() { | 1948 | func (x *JobUpdated) Reset() { | ||
| 1884 | *x = JobUpdated{} | 1949 | *x = JobUpdated{} | ||
| 1885 | - | mi := &file_ermite_event_proto_msgTypes[25] | 1950 | + | mi := &file_ermite_event_proto_msgTypes[26] |
| 1886 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1951 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1887 | ms.StoreMessageInfo(mi) | 1952 | ms.StoreMessageInfo(mi) | ||
| 1888 | } | 1953 | } | ||
| @@ -1894,7 +1959,7 @@ func (x *JobUpdated) String() string { | |||||
| 1894 | func (*JobUpdated) ProtoMessage() {} | 1959 | func (*JobUpdated) ProtoMessage() {} | ||
| 1895 | 1960 | ||||
| 1896 | func (x *JobUpdated) ProtoReflect() protoreflect.Message { | 1961 | func (x *JobUpdated) ProtoReflect() protoreflect.Message { | ||
| 1897 | - | mi := &file_ermite_event_proto_msgTypes[25] | 1962 | + | mi := &file_ermite_event_proto_msgTypes[26] |
| 1898 | if x != nil { | 1963 | if x != nil { | ||
| 1899 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 1964 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1900 | if ms.LoadMessageInfo() == nil { | 1965 | if ms.LoadMessageInfo() == nil { | ||
| @@ -1907,7 +1972,7 @@ func (x *JobUpdated) ProtoReflect() protoreflect.Message { | |||||
| 1907 | 1972 | ||||
| 1908 | // Deprecated: Use JobUpdated.ProtoReflect.Descriptor instead. | 1973 | // Deprecated: Use JobUpdated.ProtoReflect.Descriptor instead. | ||
| 1909 | func (*JobUpdated) Descriptor() ([]byte, []int) { | 1974 | func (*JobUpdated) Descriptor() ([]byte, []int) { | ||
| 1910 | - | return file_ermite_event_proto_rawDescGZIP(), []int{25} | 1975 | + | return file_ermite_event_proto_rawDescGZIP(), []int{26} |
| 1911 | } | 1976 | } | ||
| 1912 | 1977 | ||||
| 1913 | func (x *JobUpdated) GetJob() *RunJob { | 1978 | func (x *JobUpdated) GetJob() *RunJob { | ||
| @@ -1936,7 +2001,7 @@ type MirrorFailed struct { | |||||
| 1936 | 2001 | ||||
| 1937 | func (x *MirrorFailed) Reset() { | 2002 | func (x *MirrorFailed) Reset() { | ||
| 1938 | *x = MirrorFailed{} | 2003 | *x = MirrorFailed{} | ||
| 1939 | - | mi := &file_ermite_event_proto_msgTypes[26] | 2004 | + | mi := &file_ermite_event_proto_msgTypes[27] |
| 1940 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2005 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1941 | ms.StoreMessageInfo(mi) | 2006 | ms.StoreMessageInfo(mi) | ||
| 1942 | } | 2007 | } | ||
| @@ -1948,7 +2013,7 @@ func (x *MirrorFailed) String() string { | |||||
| 1948 | func (*MirrorFailed) ProtoMessage() {} | 2013 | func (*MirrorFailed) ProtoMessage() {} | ||
| 1949 | 2014 | ||||
| 1950 | func (x *MirrorFailed) ProtoReflect() protoreflect.Message { | 2015 | func (x *MirrorFailed) ProtoReflect() protoreflect.Message { | ||
| 1951 | - | mi := &file_ermite_event_proto_msgTypes[26] | 2016 | + | mi := &file_ermite_event_proto_msgTypes[27] |
| 1952 | if x != nil { | 2017 | if x != nil { | ||
| 1953 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2018 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 1954 | if ms.LoadMessageInfo() == nil { | 2019 | if ms.LoadMessageInfo() == nil { | ||
| @@ -1961,7 +2026,7 @@ func (x *MirrorFailed) ProtoReflect() protoreflect.Message { | |||||
| 1961 | 2026 | ||||
| 1962 | // Deprecated: Use MirrorFailed.ProtoReflect.Descriptor instead. | 2027 | // Deprecated: Use MirrorFailed.ProtoReflect.Descriptor instead. | ||
| 1963 | func (*MirrorFailed) Descriptor() ([]byte, []int) { | 2028 | func (*MirrorFailed) Descriptor() ([]byte, []int) { | ||
| 1964 | - | return file_ermite_event_proto_rawDescGZIP(), []int{26} | 2029 | + | return file_ermite_event_proto_rawDescGZIP(), []int{27} |
| 1965 | } | 2030 | } | ||
| 1966 | 2031 | ||||
| 1967 | func (x *MirrorFailed) GetRepo() string { | 2032 | func (x *MirrorFailed) GetRepo() string { | ||
| @@ -1997,7 +2062,7 @@ type MirrorRecovered struct { | |||||
| 1997 | 2062 | ||||
| 1998 | func (x *MirrorRecovered) Reset() { | 2063 | func (x *MirrorRecovered) Reset() { | ||
| 1999 | *x = MirrorRecovered{} | 2064 | *x = MirrorRecovered{} | ||
| 2000 | - | mi := &file_ermite_event_proto_msgTypes[27] | 2065 | + | mi := &file_ermite_event_proto_msgTypes[28] |
| 2001 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2066 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 2002 | ms.StoreMessageInfo(mi) | 2067 | ms.StoreMessageInfo(mi) | ||
| 2003 | } | 2068 | } | ||
| @@ -2009,7 +2074,7 @@ func (x *MirrorRecovered) String() string { | |||||
| 2009 | func (*MirrorRecovered) ProtoMessage() {} | 2074 | func (*MirrorRecovered) ProtoMessage() {} | ||
| 2010 | 2075 | ||||
| 2011 | func (x *MirrorRecovered) ProtoReflect() protoreflect.Message { | 2076 | func (x *MirrorRecovered) ProtoReflect() protoreflect.Message { | ||
| 2012 | - | mi := &file_ermite_event_proto_msgTypes[27] | 2077 | + | mi := &file_ermite_event_proto_msgTypes[28] |
| 2013 | if x != nil { | 2078 | if x != nil { | ||
| 2014 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2079 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 2015 | if ms.LoadMessageInfo() == nil { | 2080 | if ms.LoadMessageInfo() == nil { | ||
| @@ -2022,7 +2087,7 @@ func (x *MirrorRecovered) ProtoReflect() protoreflect.Message { | |||||
| 2022 | 2087 | ||||
| 2023 | // Deprecated: Use MirrorRecovered.ProtoReflect.Descriptor instead. | 2088 | // Deprecated: Use MirrorRecovered.ProtoReflect.Descriptor instead. | ||
| 2024 | func (*MirrorRecovered) Descriptor() ([]byte, []int) { | 2089 | func (*MirrorRecovered) Descriptor() ([]byte, []int) { | ||
| 2025 | - | return file_ermite_event_proto_rawDescGZIP(), []int{27} | 2090 | + | return file_ermite_event_proto_rawDescGZIP(), []int{28} |
| 2026 | } | 2091 | } | ||
| 2027 | 2092 | ||||
| 2028 | func (x *MirrorRecovered) GetRepo() string { | 2093 | func (x *MirrorRecovered) GetRepo() string { | ||
| @@ -2046,7 +2111,7 @@ type ReleasePublished struct { | |||||
| 2046 | 2111 | ||||
| 2047 | func (x *ReleasePublished) Reset() { | 2112 | func (x *ReleasePublished) Reset() { | ||
| 2048 | *x = ReleasePublished{} | 2113 | *x = ReleasePublished{} | ||
| 2049 | - | mi := &file_ermite_event_proto_msgTypes[28] | 2114 | + | mi := &file_ermite_event_proto_msgTypes[29] |
| 2050 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2115 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 2051 | ms.StoreMessageInfo(mi) | 2116 | ms.StoreMessageInfo(mi) | ||
| 2052 | } | 2117 | } | ||
| @@ -2058,7 +2123,7 @@ func (x *ReleasePublished) String() string { | |||||
| 2058 | func (*ReleasePublished) ProtoMessage() {} | 2123 | func (*ReleasePublished) ProtoMessage() {} | ||
| 2059 | 2124 | ||||
| 2060 | func (x *ReleasePublished) ProtoReflect() protoreflect.Message { | 2125 | func (x *ReleasePublished) ProtoReflect() protoreflect.Message { | ||
| 2061 | - | mi := &file_ermite_event_proto_msgTypes[28] | 2126 | + | mi := &file_ermite_event_proto_msgTypes[29] |
| 2062 | if x != nil { | 2127 | if x != nil { | ||
| 2063 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2128 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 2064 | if ms.LoadMessageInfo() == nil { | 2129 | if ms.LoadMessageInfo() == nil { | ||
| @@ -2071,7 +2136,7 @@ func (x *ReleasePublished) ProtoReflect() protoreflect.Message { | |||||
| 2071 | 2136 | ||||
| 2072 | // Deprecated: Use ReleasePublished.ProtoReflect.Descriptor instead. | 2137 | // Deprecated: Use ReleasePublished.ProtoReflect.Descriptor instead. | ||
| 2073 | func (*ReleasePublished) Descriptor() ([]byte, []int) { | 2138 | func (*ReleasePublished) Descriptor() ([]byte, []int) { | ||
| 2074 | - | return file_ermite_event_proto_rawDescGZIP(), []int{28} | 2139 | + | return file_ermite_event_proto_rawDescGZIP(), []int{29} |
| 2075 | } | 2140 | } | ||
| 2076 | 2141 | ||||
| 2077 | func (x *ReleasePublished) GetRepo() string { | 2142 | func (x *ReleasePublished) GetRepo() string { | ||
| @@ -2123,7 +2188,7 @@ type ReleaseUpdated struct { | |||||
| 2123 | 2188 | ||||
| 2124 | func (x *ReleaseUpdated) Reset() { | 2189 | func (x *ReleaseUpdated) Reset() { | ||
| 2125 | *x = ReleaseUpdated{} | 2190 | *x = ReleaseUpdated{} | ||
| 2126 | - | mi := &file_ermite_event_proto_msgTypes[29] | 2191 | + | mi := &file_ermite_event_proto_msgTypes[30] |
| 2127 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2192 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 2128 | ms.StoreMessageInfo(mi) | 2193 | ms.StoreMessageInfo(mi) | ||
| 2129 | } | 2194 | } | ||
| @@ -2135,7 +2200,7 @@ func (x *ReleaseUpdated) String() string { | |||||
| 2135 | func (*ReleaseUpdated) ProtoMessage() {} | 2200 | func (*ReleaseUpdated) ProtoMessage() {} | ||
| 2136 | 2201 | ||||
| 2137 | func (x *ReleaseUpdated) ProtoReflect() protoreflect.Message { | 2202 | func (x *ReleaseUpdated) ProtoReflect() protoreflect.Message { | ||
| 2138 | - | mi := &file_ermite_event_proto_msgTypes[29] | 2203 | + | mi := &file_ermite_event_proto_msgTypes[30] |
| 2139 | if x != nil { | 2204 | if x != nil { | ||
| 2140 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2205 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 2141 | if ms.LoadMessageInfo() == nil { | 2206 | if ms.LoadMessageInfo() == nil { | ||
| @@ -2148,7 +2213,7 @@ func (x *ReleaseUpdated) ProtoReflect() protoreflect.Message { | |||||
| 2148 | 2213 | ||||
| 2149 | // Deprecated: Use ReleaseUpdated.ProtoReflect.Descriptor instead. | 2214 | // Deprecated: Use ReleaseUpdated.ProtoReflect.Descriptor instead. | ||
| 2150 | func (*ReleaseUpdated) Descriptor() ([]byte, []int) { | 2215 | func (*ReleaseUpdated) Descriptor() ([]byte, []int) { | ||
| 2151 | - | return file_ermite_event_proto_rawDescGZIP(), []int{29} | 2216 | + | return file_ermite_event_proto_rawDescGZIP(), []int{30} |
| 2152 | } | 2217 | } | ||
| 2153 | 2218 | ||||
| 2154 | func (x *ReleaseUpdated) GetRepo() string { | 2219 | func (x *ReleaseUpdated) GetRepo() string { | ||
| @@ -2198,7 +2263,7 @@ type ReleaseDeleted struct { | |||||
| 2198 | 2263 | ||||
| 2199 | func (x *ReleaseDeleted) Reset() { | 2264 | func (x *ReleaseDeleted) Reset() { | ||
| 2200 | *x = ReleaseDeleted{} | 2265 | *x = ReleaseDeleted{} | ||
| 2201 | - | mi := &file_ermite_event_proto_msgTypes[30] | 2266 | + | mi := &file_ermite_event_proto_msgTypes[31] |
| 2202 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2267 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 2203 | ms.StoreMessageInfo(mi) | 2268 | ms.StoreMessageInfo(mi) | ||
| 2204 | } | 2269 | } | ||
| @@ -2210,7 +2275,7 @@ func (x *ReleaseDeleted) String() string { | |||||
| 2210 | func (*ReleaseDeleted) ProtoMessage() {} | 2275 | func (*ReleaseDeleted) ProtoMessage() {} | ||
| 2211 | 2276 | ||||
| 2212 | func (x *ReleaseDeleted) ProtoReflect() protoreflect.Message { | 2277 | func (x *ReleaseDeleted) ProtoReflect() protoreflect.Message { | ||
| 2213 | - | mi := &file_ermite_event_proto_msgTypes[30] | 2278 | + | mi := &file_ermite_event_proto_msgTypes[31] |
| 2214 | if x != nil { | 2279 | if x != nil { | ||
| 2215 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2280 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 2216 | if ms.LoadMessageInfo() == nil { | 2281 | if ms.LoadMessageInfo() == nil { | ||
| @@ -2223,7 +2288,7 @@ func (x *ReleaseDeleted) ProtoReflect() protoreflect.Message { | |||||
| 2223 | 2288 | ||||
| 2224 | // Deprecated: Use ReleaseDeleted.ProtoReflect.Descriptor instead. | 2289 | // Deprecated: Use ReleaseDeleted.ProtoReflect.Descriptor instead. | ||
| 2225 | func (*ReleaseDeleted) Descriptor() ([]byte, []int) { | 2290 | func (*ReleaseDeleted) Descriptor() ([]byte, []int) { | ||
| 2226 | - | return file_ermite_event_proto_rawDescGZIP(), []int{30} | 2291 | + | return file_ermite_event_proto_rawDescGZIP(), []int{31} |
| 2227 | } | 2292 | } | ||
| 2228 | 2293 | ||||
| 2229 | func (x *ReleaseDeleted) GetRepo() string { | 2294 | func (x *ReleaseDeleted) GetRepo() string { | ||
| @@ -2261,7 +2326,7 @@ type ReleaseUnpublished struct { | |||||
| 2261 | 2326 | ||||
| 2262 | func (x *ReleaseUnpublished) Reset() { | 2327 | func (x *ReleaseUnpublished) Reset() { | ||
| 2263 | *x = ReleaseUnpublished{} | 2328 | *x = ReleaseUnpublished{} | ||
| 2264 | - | mi := &file_ermite_event_proto_msgTypes[31] | 2329 | + | mi := &file_ermite_event_proto_msgTypes[32] |
| 2265 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2330 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 2266 | ms.StoreMessageInfo(mi) | 2331 | ms.StoreMessageInfo(mi) | ||
| 2267 | } | 2332 | } | ||
| @@ -2273,7 +2338,7 @@ func (x *ReleaseUnpublished) String() string { | |||||
| 2273 | func (*ReleaseUnpublished) ProtoMessage() {} | 2338 | func (*ReleaseUnpublished) ProtoMessage() {} | ||
| 2274 | 2339 | ||||
| 2275 | func (x *ReleaseUnpublished) ProtoReflect() protoreflect.Message { | 2340 | func (x *ReleaseUnpublished) ProtoReflect() protoreflect.Message { | ||
| 2276 | - | mi := &file_ermite_event_proto_msgTypes[31] | 2341 | + | mi := &file_ermite_event_proto_msgTypes[32] |
| 2277 | if x != nil { | 2342 | if x != nil { | ||
| 2278 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | 2343 | ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x)) | ||
| 2279 | if ms.LoadMessageInfo() == nil { | 2344 | if ms.LoadMessageInfo() == nil { | ||
| @@ -2286,7 +2351,7 @@ func (x *ReleaseUnpublished) ProtoReflect() protoreflect.Message { | |||||
| 2286 | 2351 | ||||
| 2287 | // Deprecated: Use ReleaseUnpublished.ProtoReflect.Descriptor instead. | 2352 | // Deprecated: Use ReleaseUnpublished.ProtoReflect.Descriptor instead. | ||
| 2288 | func (*ReleaseUnpublished) Descriptor() ([]byte, []int) { | 2353 | func (*ReleaseUnpublished) Descriptor() ([]byte, []int) { | ||
| 2289 | - | return file_ermite_event_proto_rawDescGZIP(), []int{31} | 2354 | + | return file_ermite_event_proto_rawDescGZIP(), []int{32} |
| 2290 | } | 2355 | } | ||
| 2291 | 2356 | ||||
| 2292 | func (x *ReleaseUnpublished) GetRepo() string { | 2357 | func (x *ReleaseUnpublished) GetRepo() string { | ||
| @@ -2333,7 +2398,7 @@ const file_ermite_event_proto_rawDesc = "" + | |||||
| 2333 | "\x06topics\x18\x01 \x03(\tR\x06topics\x12!\n" + | 2398 | "\x06topics\x18\x01 \x03(\tR\x06topics\x12!\n" + | ||
| 2334 | "\fresume_after\x18\x02 \x01(\tR\vresumeAfter\"4\n" + | 2399 | "\fresume_after\x18\x02 \x01(\tR\vresumeAfter\"4\n" + | ||
| 2335 | "\rWatchResponse\x12#\n" + | 2400 | "\rWatchResponse\x12#\n" + | ||
| 2336 | - | "\x05event\x18\x01 \x01(\v2\r.ermite.EventR\x05event\"\xcf\x0f\n" + | 2401 | + | "\x05event\x18\x01 \x01(\v2\r.ermite.EventR\x05event\"\x8f\x10\n" + |
| 2337 | "\x05Event\x12\x0e\n" + | 2402 | "\x05Event\x12\x0e\n" + | ||
| 2338 | "\x02id\x18\x01 \x01(\tR\x02id\x12.\n" + | 2403 | "\x02id\x18\x01 \x01(\tR\x02id\x12.\n" + | ||
| 2339 | "\x04time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x04time\x128\n" + | 2404 | "\x04time\x18\x02 \x01(\v2\x1a.google.protobuf.TimestampR\x04time\x128\n" + | ||
| @@ -2367,7 +2432,8 @@ const file_ermite_event_proto_rawDesc = "" + | |||||
| 2367 | "\x11release_published\x18\x1b \x01(\v2\x18.ermite.ReleasePublishedH\x00R\x10releasePublished\x12A\n" + | 2432 | "\x11release_published\x18\x1b \x01(\v2\x18.ermite.ReleasePublishedH\x00R\x10releasePublished\x12A\n" + | ||
| 2368 | "\x0frelease_updated\x18\x1c \x01(\v2\x16.ermite.ReleaseUpdatedH\x00R\x0ereleaseUpdated\x12A\n" + | 2433 | "\x0frelease_updated\x18\x1c \x01(\v2\x16.ermite.ReleaseUpdatedH\x00R\x0ereleaseUpdated\x12A\n" + | ||
| 2369 | "\x0frelease_deleted\x18\x1d \x01(\v2\x16.ermite.ReleaseDeletedH\x00R\x0ereleaseDeleted\x12M\n" + | 2434 | "\x0frelease_deleted\x18\x1d \x01(\v2\x16.ermite.ReleaseDeletedH\x00R\x0ereleaseDeleted\x12M\n" + | ||
| 2370 | - | "\x13release_unpublished\x18\x1e \x01(\v2\x1a.ermite.ReleaseUnpublishedH\x00R\x12releaseUnpublishedB\x06\n" + | 2435 | + | "\x13release_unpublished\x18\x1e \x01(\v2\x1a.ermite.ReleaseUnpublishedH\x00R\x12releaseUnpublished\x12>\n" + |
| 2436 | + | "\x0eissue_resolved\x18\x1f \x01(\v2\x15.ermite.IssueResolvedH\x00R\rissueResolvedB\x06\n" + | |||
| 2371 | "\x04kind\"/\n" + | 2437 | "\x04kind\"/\n" + | ||
| 2372 | "\vRepoCreated\x12 \n" + | 2438 | "\vRepoCreated\x12 \n" + | ||
| 2373 | "\x04repo\x18\x01 \x01(\v2\f.ermite.RepoR\x04repo\"/\n" + | 2439 | "\x04repo\x18\x01 \x01(\v2\f.ermite.RepoR\x04repo\"/\n" + | ||
| @@ -2419,6 +2485,8 @@ const file_ermite_event_proto_rawDesc = "" + | |||||
| 2419 | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"2\n" + | 2485 | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"2\n" + | ||
| 2420 | "\vIssueClosed\x12#\n" + | 2486 | "\vIssueClosed\x12#\n" + | ||
| 2421 | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"4\n" + | 2487 | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"4\n" + | ||
| 2488 | + | "\rIssueResolved\x12#\n" + | |||
| 2489 | + | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"4\n" + | |||
| 2422 | "\rIssueReopened\x12#\n" + | 2490 | "\rIssueReopened\x12#\n" + | ||
| 2423 | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"l\n" + | 2491 | "\x05issue\x18\x01 \x01(\v2\r.ermite.IssueR\x05issue\"l\n" + | ||
| 2424 | "\x0eIssueCommented\x12\x12\n" + | 2492 | "\x0eIssueCommented\x12\x12\n" + | ||
| @@ -2487,7 +2555,7 @@ func file_ermite_event_proto_rawDescGZIP() []byte { | |||||
| 2487 | return file_ermite_event_proto_rawDescData | 2555 | return file_ermite_event_proto_rawDescData | ||
| 2488 | } | 2556 | } | ||
| 2489 | 2557 | ||||
| 2490 | - | var file_ermite_event_proto_msgTypes = make([]protoimpl.MessageInfo, 32) | 2558 | + | var file_ermite_event_proto_msgTypes = make([]protoimpl.MessageInfo, 33) |
| 2491 | var file_ermite_event_proto_goTypes = []any{ | 2559 | var file_ermite_event_proto_goTypes = []any{ | ||
| 2492 | (*WatchRequest)(nil), // 0: ermite.WatchRequest | 2560 | (*WatchRequest)(nil), // 0: ermite.WatchRequest | ||
| 2493 | (*WatchResponse)(nil), // 1: ermite.WatchResponse | 2561 | (*WatchResponse)(nil), // 1: ermite.WatchResponse | ||
| @@ -2509,87 +2577,90 @@ var file_ermite_event_proto_goTypes = []any{ | |||||
| 2509 | (*CommentResolved)(nil), // 17: ermite.CommentResolved | 2577 | (*CommentResolved)(nil), // 17: ermite.CommentResolved | ||
| 2510 | (*IssueOpened)(nil), // 18: ermite.IssueOpened | 2578 | (*IssueOpened)(nil), // 18: ermite.IssueOpened | ||
| 2511 | (*IssueClosed)(nil), // 19: ermite.IssueClosed | 2579 | (*IssueClosed)(nil), // 19: ermite.IssueClosed | ||
| 2512 | - | (*IssueReopened)(nil), // 20: ermite.IssueReopened | 2580 | + | (*IssueResolved)(nil), // 20: ermite.IssueResolved |
| 2513 | - | (*IssueCommented)(nil), // 21: ermite.IssueCommented | 2581 | + | (*IssueReopened)(nil), // 21: ermite.IssueReopened |
| 2514 | - | (*IssueSubmitted)(nil), // 22: ermite.IssueSubmitted | 2582 | + | (*IssueCommented)(nil), // 22: ermite.IssueCommented |
| 2515 | - | (*Gap)(nil), // 23: ermite.Gap | 2583 | + | (*IssueSubmitted)(nil), // 23: ermite.IssueSubmitted |
| 2516 | - | (*RunUpdated)(nil), // 24: ermite.RunUpdated | 2584 | + | (*Gap)(nil), // 24: ermite.Gap |
| 2517 | - | (*JobUpdated)(nil), // 25: ermite.JobUpdated | 2585 | + | (*RunUpdated)(nil), // 25: ermite.RunUpdated |
| 2518 | - | (*MirrorFailed)(nil), // 26: ermite.MirrorFailed | 2586 | + | (*JobUpdated)(nil), // 26: ermite.JobUpdated |
| 2519 | - | (*MirrorRecovered)(nil), // 27: ermite.MirrorRecovered | 2587 | + | (*MirrorFailed)(nil), // 27: ermite.MirrorFailed |
| 2520 | - | (*ReleasePublished)(nil), // 28: ermite.ReleasePublished | 2588 | + | (*MirrorRecovered)(nil), // 28: ermite.MirrorRecovered |
| 2521 | - | (*ReleaseUpdated)(nil), // 29: ermite.ReleaseUpdated | 2589 | + | (*ReleasePublished)(nil), // 29: ermite.ReleasePublished |
| 2522 | - | (*ReleaseDeleted)(nil), // 30: ermite.ReleaseDeleted | 2590 | + | (*ReleaseUpdated)(nil), // 30: ermite.ReleaseUpdated |
| 2523 | - | (*ReleaseUnpublished)(nil), // 31: ermite.ReleaseUnpublished | 2591 | + | (*ReleaseDeleted)(nil), // 31: ermite.ReleaseDeleted |
| 2524 | - | (*timestamppb.Timestamp)(nil), // 32: google.protobuf.Timestamp | 2592 | + | (*ReleaseUnpublished)(nil), // 32: ermite.ReleaseUnpublished |
| 2525 | - | (*Repo)(nil), // 33: ermite.Repo | 2593 | + | (*timestamppb.Timestamp)(nil), // 33: google.protobuf.Timestamp |
| 2526 | - | (*MergeRequest)(nil), // 34: ermite.MergeRequest | 2594 | + | (*Repo)(nil), // 34: ermite.Repo |
| 2527 | - | (*Mergeability)(nil), // 35: ermite.Mergeability | 2595 | + | (*MergeRequest)(nil), // 35: ermite.MergeRequest |
| 2528 | - | (*Comment)(nil), // 36: ermite.Comment | 2596 | + | (*Mergeability)(nil), // 36: ermite.Mergeability |
| 2529 | - | (*Issue)(nil), // 37: ermite.Issue | 2597 | + | (*Comment)(nil), // 37: ermite.Comment |
| 2530 | - | (*IssueComment)(nil), // 38: ermite.IssueComment | 2598 | + | (*Issue)(nil), // 38: ermite.Issue |
| 2531 | - | (*Run)(nil), // 39: ermite.Run | 2599 | + | (*IssueComment)(nil), // 39: ermite.IssueComment |
| 2532 | - | (*RunJob)(nil), // 40: ermite.RunJob | 2600 | + | (*Run)(nil), // 40: ermite.Run |
| 2533 | - | (MirrorState)(0), // 41: ermite.MirrorState | 2601 | + | (*RunJob)(nil), // 41: ermite.RunJob |
| 2602 | + | (MirrorState)(0), // 42: ermite.MirrorState | |||
| 2534 | } | 2603 | } | ||
| 2535 | var file_ermite_event_proto_depIdxs = []int32{ | 2604 | var file_ermite_event_proto_depIdxs = []int32{ | ||
| 2536 | 2, // 0: ermite.WatchResponse.event:type_name -> ermite.Event | 2605 | 2, // 0: ermite.WatchResponse.event:type_name -> ermite.Event | ||
| 2537 | - | 32, // 1: ermite.Event.time:type_name -> google.protobuf.Timestamp | 2606 | + | 33, // 1: ermite.Event.time:type_name -> google.protobuf.Timestamp |
| 2538 | 3, // 2: ermite.Event.repo_created:type_name -> ermite.RepoCreated | 2607 | 3, // 2: ermite.Event.repo_created:type_name -> ermite.RepoCreated | ||
| 2539 | 4, // 3: ermite.Event.repo_updated:type_name -> ermite.RepoUpdated | 2608 | 4, // 3: ermite.Event.repo_updated:type_name -> ermite.RepoUpdated | ||
| 2540 | 5, // 4: ermite.Event.repo_deleted:type_name -> ermite.RepoDeleted | 2609 | 5, // 4: ermite.Event.repo_deleted:type_name -> ermite.RepoDeleted | ||
| 2541 | 6, // 5: ermite.Event.pushed:type_name -> ermite.Pushed | 2610 | 6, // 5: ermite.Event.pushed:type_name -> ermite.Pushed | ||
| 2542 | - | 23, // 6: ermite.Event.gap:type_name -> ermite.Gap | 2611 | + | 24, // 6: ermite.Event.gap:type_name -> ermite.Gap |
| 2543 | 8, // 7: ermite.Event.merge_request_opened:type_name -> ermite.MergeRequestOpened | 2612 | 8, // 7: ermite.Event.merge_request_opened:type_name -> ermite.MergeRequestOpened | ||
| 2544 | 9, // 8: ermite.Event.merge_request_merged:type_name -> ermite.MergeRequestMerged | 2613 | 9, // 8: ermite.Event.merge_request_merged:type_name -> ermite.MergeRequestMerged | ||
| 2545 | 13, // 9: ermite.Event.merge_request_closed:type_name -> ermite.MergeRequestClosed | 2614 | 13, // 9: ermite.Event.merge_request_closed:type_name -> ermite.MergeRequestClosed | ||
| 2546 | 14, // 10: ermite.Event.comment_added:type_name -> ermite.CommentAdded | 2615 | 14, // 10: ermite.Event.comment_added:type_name -> ermite.CommentAdded | ||
| 2547 | - | 24, // 11: ermite.Event.run_updated:type_name -> ermite.RunUpdated | 2616 | + | 25, // 11: ermite.Event.run_updated:type_name -> ermite.RunUpdated |
| 2548 | - | 25, // 12: ermite.Event.job_updated:type_name -> ermite.JobUpdated | 2617 | + | 26, // 12: ermite.Event.job_updated:type_name -> ermite.JobUpdated |
| 2549 | 15, // 13: ermite.Event.comment_edited:type_name -> ermite.CommentEdited | 2618 | 15, // 13: ermite.Event.comment_edited:type_name -> ermite.CommentEdited | ||
| 2550 | 16, // 14: ermite.Event.comment_deleted:type_name -> ermite.CommentDeleted | 2619 | 16, // 14: ermite.Event.comment_deleted:type_name -> ermite.CommentDeleted | ||
| 2551 | 17, // 15: ermite.Event.comment_resolved:type_name -> ermite.CommentResolved | 2620 | 17, // 15: ermite.Event.comment_resolved:type_name -> ermite.CommentResolved | ||
| 2552 | 18, // 16: ermite.Event.issue_opened:type_name -> ermite.IssueOpened | 2621 | 18, // 16: ermite.Event.issue_opened:type_name -> ermite.IssueOpened | ||
| 2553 | 19, // 17: ermite.Event.issue_closed:type_name -> ermite.IssueClosed | 2622 | 19, // 17: ermite.Event.issue_closed:type_name -> ermite.IssueClosed | ||
| 2554 | - | 20, // 18: ermite.Event.issue_reopened:type_name -> ermite.IssueReopened | 2623 | + | 21, // 18: ermite.Event.issue_reopened:type_name -> ermite.IssueReopened |
| 2555 | - | 21, // 19: ermite.Event.issue_commented:type_name -> ermite.IssueCommented | 2624 | + | 22, // 19: ermite.Event.issue_commented:type_name -> ermite.IssueCommented |
| 2556 | - | 22, // 20: ermite.Event.issue_submitted:type_name -> ermite.IssueSubmitted | 2625 | + | 23, // 20: ermite.Event.issue_submitted:type_name -> ermite.IssueSubmitted |
| 2557 | 12, // 21: ermite.Event.merge_request_mergeability:type_name -> ermite.MergeRequestMergeability | 2626 | 12, // 21: ermite.Event.merge_request_mergeability:type_name -> ermite.MergeRequestMergeability | ||
| 2558 | - | 26, // 22: ermite.Event.mirror_failed:type_name -> ermite.MirrorFailed | 2627 | + | 27, // 22: ermite.Event.mirror_failed:type_name -> ermite.MirrorFailed |
| 2559 | - | 27, // 23: ermite.Event.mirror_recovered:type_name -> ermite.MirrorRecovered | 2628 | + | 28, // 23: ermite.Event.mirror_recovered:type_name -> ermite.MirrorRecovered |
| 2560 | 10, // 24: ermite.Event.merge_request_auto_merge_enabled:type_name -> ermite.MergeRequestAutoMergeEnabled | 2629 | 10, // 24: ermite.Event.merge_request_auto_merge_enabled:type_name -> ermite.MergeRequestAutoMergeEnabled | ||
| 2561 | 11, // 25: ermite.Event.merge_request_auto_merge_cancelled:type_name -> ermite.MergeRequestAutoMergeCancelled | 2630 | 11, // 25: ermite.Event.merge_request_auto_merge_cancelled:type_name -> ermite.MergeRequestAutoMergeCancelled | ||
| 2562 | - | 28, // 26: ermite.Event.release_published:type_name -> ermite.ReleasePublished | 2631 | + | 29, // 26: ermite.Event.release_published:type_name -> ermite.ReleasePublished |
| 2563 | - | 29, // 27: ermite.Event.release_updated:type_name -> ermite.ReleaseUpdated | 2632 | + | 30, // 27: ermite.Event.release_updated:type_name -> ermite.ReleaseUpdated |
| 2564 | - | 30, // 28: ermite.Event.release_deleted:type_name -> ermite.ReleaseDeleted | 2633 | + | 31, // 28: ermite.Event.release_deleted:type_name -> ermite.ReleaseDeleted |
| 2565 | - | 31, // 29: ermite.Event.release_unpublished:type_name -> ermite.ReleaseUnpublished | 2634 | + | 32, // 29: ermite.Event.release_unpublished:type_name -> ermite.ReleaseUnpublished |
| 2566 | - | 33, // 30: ermite.RepoCreated.repo:type_name -> ermite.Repo | 2635 | + | 20, // 30: ermite.Event.issue_resolved:type_name -> ermite.IssueResolved |
| 2567 | - | 33, // 31: ermite.RepoUpdated.repo:type_name -> ermite.Repo | 2636 | + | 34, // 31: ermite.RepoCreated.repo:type_name -> ermite.Repo |
| 2568 | - | 7, // 32: ermite.Pushed.ref_updates:type_name -> ermite.RefUpdate | 2637 | + | 34, // 32: ermite.RepoUpdated.repo:type_name -> ermite.Repo |
| 2569 | - | 34, // 33: ermite.MergeRequestOpened.merge_request:type_name -> ermite.MergeRequest | 2638 | + | 7, // 33: ermite.Pushed.ref_updates:type_name -> ermite.RefUpdate |
| 2570 | - | 34, // 34: ermite.MergeRequestMerged.merge_request:type_name -> ermite.MergeRequest | 2639 | + | 35, // 34: ermite.MergeRequestOpened.merge_request:type_name -> ermite.MergeRequest |
| 2571 | - | 34, // 35: ermite.MergeRequestAutoMergeEnabled.merge_request:type_name -> ermite.MergeRequest | 2640 | + | 35, // 35: ermite.MergeRequestMerged.merge_request:type_name -> ermite.MergeRequest |
| 2572 | - | 34, // 36: ermite.MergeRequestAutoMergeCancelled.merge_request:type_name -> ermite.MergeRequest | 2641 | + | 35, // 36: ermite.MergeRequestAutoMergeEnabled.merge_request:type_name -> ermite.MergeRequest |
| 2573 | - | 35, // 37: ermite.MergeRequestMergeability.mergeability:type_name -> ermite.Mergeability | 2642 | + | 35, // 37: ermite.MergeRequestAutoMergeCancelled.merge_request:type_name -> ermite.MergeRequest |
| 2574 | - | 34, // 38: ermite.MergeRequestClosed.merge_request:type_name -> ermite.MergeRequest | 2643 | + | 36, // 38: ermite.MergeRequestMergeability.mergeability:type_name -> ermite.Mergeability |
| 2575 | - | 36, // 39: ermite.CommentAdded.comment:type_name -> ermite.Comment | 2644 | + | 35, // 39: ermite.MergeRequestClosed.merge_request:type_name -> ermite.MergeRequest |
| 2576 | - | 36, // 40: ermite.CommentEdited.comment:type_name -> ermite.Comment | 2645 | + | 37, // 40: ermite.CommentAdded.comment:type_name -> ermite.Comment |
| 2577 | - | 36, // 41: ermite.CommentDeleted.comment:type_name -> ermite.Comment | 2646 | + | 37, // 41: ermite.CommentEdited.comment:type_name -> ermite.Comment |
| 2578 | - | 36, // 42: ermite.CommentResolved.comment:type_name -> ermite.Comment | 2647 | + | 37, // 42: ermite.CommentDeleted.comment:type_name -> ermite.Comment |
| 2579 | - | 37, // 43: ermite.IssueOpened.issue:type_name -> ermite.Issue | 2648 | + | 37, // 43: ermite.CommentResolved.comment:type_name -> ermite.Comment |
| 2580 | - | 37, // 44: ermite.IssueClosed.issue:type_name -> ermite.Issue | 2649 | + | 38, // 44: ermite.IssueOpened.issue:type_name -> ermite.Issue |
| 2581 | - | 37, // 45: ermite.IssueReopened.issue:type_name -> ermite.Issue | 2650 | + | 38, // 45: ermite.IssueClosed.issue:type_name -> ermite.Issue |
| 2582 | - | 38, // 46: ermite.IssueCommented.comment:type_name -> ermite.IssueComment | 2651 | + | 38, // 46: ermite.IssueResolved.issue:type_name -> ermite.Issue |
| 2583 | - | 39, // 47: ermite.RunUpdated.run:type_name -> ermite.Run | 2652 | + | 38, // 47: ermite.IssueReopened.issue:type_name -> ermite.Issue |
| 2584 | - | 40, // 48: ermite.JobUpdated.job:type_name -> ermite.RunJob | 2653 | + | 39, // 48: ermite.IssueCommented.comment:type_name -> ermite.IssueComment |
| 2585 | - | 41, // 49: ermite.MirrorFailed.state:type_name -> ermite.MirrorState | 2654 | + | 40, // 49: ermite.RunUpdated.run:type_name -> ermite.Run |
| 2586 | - | 0, // 50: ermite.EventService.Watch:input_type -> ermite.WatchRequest | 2655 | + | 41, // 50: ermite.JobUpdated.job:type_name -> ermite.RunJob |
| 2587 | - | 1, // 51: ermite.EventService.Watch:output_type -> ermite.WatchResponse | 2656 | + | 42, // 51: ermite.MirrorFailed.state:type_name -> ermite.MirrorState |
| 2588 | - | 51, // [51:52] is the sub-list for method output_type | 2657 | + | 0, // 52: ermite.EventService.Watch:input_type -> ermite.WatchRequest |
| 2589 | - | 50, // [50:51] is the sub-list for method input_type | 2658 | + | 1, // 53: ermite.EventService.Watch:output_type -> ermite.WatchResponse |
| 2590 | - | 50, // [50:50] is the sub-list for extension type_name | 2659 | + | 53, // [53:54] is the sub-list for method output_type |
| 2591 | - | 50, // [50:50] is the sub-list for extension extendee | 2660 | + | 52, // [52:53] is the sub-list for method input_type |
| 2592 | - | 0, // [0:50] is the sub-list for field type_name | 2661 | + | 52, // [52:52] is the sub-list for extension type_name |
| 2662 | + | 52, // [52:52] is the sub-list for extension extendee | |||
| 2663 | + | 0, // [0:52] is the sub-list for field type_name | |||
| 2593 | } | 2664 | } | ||
| 2594 | 2665 | ||||
| 2595 | func init() { file_ermite_event_proto_init() } | 2666 | func init() { file_ermite_event_proto_init() } | ||
| @@ -2631,6 +2702,7 @@ func file_ermite_event_proto_init() { | |||||
| 2631 | (*Event_ReleaseUpdated)(nil), | 2702 | (*Event_ReleaseUpdated)(nil), | ||
| 2632 | (*Event_ReleaseDeleted)(nil), | 2703 | (*Event_ReleaseDeleted)(nil), | ||
| 2633 | (*Event_ReleaseUnpublished)(nil), | 2704 | (*Event_ReleaseUnpublished)(nil), | ||
| 2705 | + | (*Event_IssueResolved)(nil), | |||
| 2634 | } | 2706 | } | ||
| 2635 | type x struct{} | 2707 | type x struct{} | ||
| 2636 | out := protoimpl.TypeBuilder{ | 2708 | out := protoimpl.TypeBuilder{ | ||
| @@ -2638,7 +2710,7 @@ func file_ermite_event_proto_init() { | |||||
| 2638 | GoPackagePath: reflect.TypeOf(x{}).PkgPath(), | 2710 | GoPackagePath: reflect.TypeOf(x{}).PkgPath(), | ||
| 2639 | RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_event_proto_rawDesc), len(file_ermite_event_proto_rawDesc)), | 2711 | RawDescriptor: unsafe.Slice(unsafe.StringData(file_ermite_event_proto_rawDesc), len(file_ermite_event_proto_rawDesc)), | ||
| 2640 | NumEnums: 0, | 2712 | NumEnums: 0, | ||
| 2641 | - | NumMessages: 32, | 2713 | + | NumMessages: 33, |
| 2642 | NumExtensions: 0, | 2714 | NumExtensions: 0, | ||
| 2643 | NumServices: 1, | 2715 | NumServices: 1, | ||
| 2644 | }, | 2716 | }, | ||
M gen/ermite/issue.pb.go +216 -83 generated file: collapsed
M gen/ermite/merge_request.pb.go +546 -174 generated file: collapsed
M issue_test.go +2 -1
| @@ -19,6 +19,7 @@ func TestIssueProcedures(t *testing.T) { | |||
| 19 | 19 | ermiteconnect.IssueServiceAddIssueCommentProcedure: "AddIssueComment", | |
| 20 | 20 | ermiteconnect.IssueServiceCloseIssueProcedure: "CloseIssue", | |
| 21 | 21 | ermiteconnect.IssueServiceReopenIssueProcedure: "ReopenIssue", | |
| 22 | + | ermiteconnect.IssueServiceResolveIssueProcedure: "ResolveIssue", | |
| 22 | 23 | ermiteconnect.IssueServiceListPendingIssuesProcedure: "ListPendingIssues", | |
| 23 | 24 | ermiteconnect.IssueServiceApproveIssueProcedure: "ApproveIssue", | |
| 24 | 25 | ermiteconnect.IssueServiceRejectIssueProcedure: "RejectIssue", | |
| @@ -58,7 +59,7 @@ func TestIssueContract(t *testing.T) { | |||
| 58 | 59 | if ermite.Scope_SCOPE_ISSUE_WRITE != 11 { | |
| 59 | 60 | t.Fatal("issue:write scope number changed") | |
| 60 | 61 | } | |
| 61 | - | for name, want := range map[string]int32{"ISSUE_STATE_UNSPECIFIED": 0, "ISSUE_STATE_OPEN": 1, "ISSUE_STATE_CLOSED": 2, "ISSUE_STATE_PENDING": 3} { | |
| 62 | + | for name, want := range map[string]int32{"ISSUE_STATE_UNSPECIFIED": 0, "ISSUE_STATE_OPEN": 1, "ISSUE_STATE_CLOSED": 2, "ISSUE_STATE_PENDING": 3, "ISSUE_STATE_RESOLVED": 4} { | |
| 62 | 63 | if got := ermite.IssueState_value[name]; got != want { | |
| 63 | 64 | t.Errorf("%s = %d, want %d", name, got, want) | |
| 64 | 65 | } | |
| @@ -19,6 +19,7 @@ func TestIssueProcedures(t *testing.T) { | |||||
| 19 | ermiteconnect.IssueServiceAddIssueCommentProcedure: "AddIssueComment", | 19 | ermiteconnect.IssueServiceAddIssueCommentProcedure: "AddIssueComment", | ||
| 20 | ermiteconnect.IssueServiceCloseIssueProcedure: "CloseIssue", | 20 | ermiteconnect.IssueServiceCloseIssueProcedure: "CloseIssue", | ||
| 21 | ermiteconnect.IssueServiceReopenIssueProcedure: "ReopenIssue", | 21 | ermiteconnect.IssueServiceReopenIssueProcedure: "ReopenIssue", | ||
| 22 | + | ermiteconnect.IssueServiceResolveIssueProcedure: "ResolveIssue", | |||
| 22 | ermiteconnect.IssueServiceListPendingIssuesProcedure: "ListPendingIssues", | 23 | ermiteconnect.IssueServiceListPendingIssuesProcedure: "ListPendingIssues", | ||
| 23 | ermiteconnect.IssueServiceApproveIssueProcedure: "ApproveIssue", | 24 | ermiteconnect.IssueServiceApproveIssueProcedure: "ApproveIssue", | ||
| 24 | ermiteconnect.IssueServiceRejectIssueProcedure: "RejectIssue", | 25 | ermiteconnect.IssueServiceRejectIssueProcedure: "RejectIssue", | ||
| @@ -58,7 +59,7 @@ func TestIssueContract(t *testing.T) { | |||||
| 58 | if ermite.Scope_SCOPE_ISSUE_WRITE != 11 { | 59 | if ermite.Scope_SCOPE_ISSUE_WRITE != 11 { | ||
| 59 | t.Fatal("issue:write scope number changed") | 60 | t.Fatal("issue:write scope number changed") | ||
| 60 | } | 61 | } | ||
| 61 | - | for name, want := range map[string]int32{"ISSUE_STATE_UNSPECIFIED": 0, "ISSUE_STATE_OPEN": 1, "ISSUE_STATE_CLOSED": 2, "ISSUE_STATE_PENDING": 3} { | 62 | + | for name, want := range map[string]int32{"ISSUE_STATE_UNSPECIFIED": 0, "ISSUE_STATE_OPEN": 1, "ISSUE_STATE_CLOSED": 2, "ISSUE_STATE_PENDING": 3, "ISSUE_STATE_RESOLVED": 4} { |
| 62 | if got := ermite.IssueState_value[name]; got != want { | 63 | if got := ermite.IssueState_value[name]; got != want { | ||
| 63 | t.Errorf("%s = %d, want %d", name, got, want) | 64 | t.Errorf("%s = %d, want %d", name, got, want) | ||
| 64 | } | 65 | } | ||
M proto/ermite/event.proto +15 -4
| @@ -21,9 +21,10 @@ service EventService { | |||
| 21 | 21 | // for merge requests, merge_request_opened, merge_request_merged, | |
| 22 | 22 | // merge_request_closed, comment_added, comment_edited, comment_deleted and | |
| 23 | 23 | // comment_resolved (a thread resolved or reopened); for issues, issue_opened, | |
| 24 | - | // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each | |
| 25 | - | // one is delivered on the "repo:<name>" topic of its repository and on | |
| 26 | - | // "home", subject to the visibility of the repository, except | |
| 24 | + | // issue_closed, issue_resolved, issue_reopened and issue_commented, and | |
| 25 | + | // issue_submitted. Each one is delivered on the "repo:<name>" topic of its | |
| 26 | + | // repository and on "home", subject to the visibility of the repository, | |
| 27 | + | // except | |
| 27 | 28 | // issue_submitted: it is delivered only on the "owner" topic, never on | |
| 28 | 29 | // "home" or "repo:<name>", and carries no content (see IssueSubmitted). | |
| 29 | 30 | // | |
| @@ -153,6 +154,8 @@ message Event { | |||
| 153 | 154 | ReleaseDeleted release_deleted = 29; | |
| 154 | 155 | // ReleaseUnpublished reports a release turned into a draft after tag deletion. | |
| 155 | 156 | ReleaseUnpublished release_unpublished = 30; | |
| 157 | + | // IssueResolved: an issue was resolved. | |
| 158 | + | IssueResolved issue_resolved = 31; | |
| 156 | 159 | } | |
| 157 | 160 | } | |
| 158 | 161 | ||
| @@ -290,12 +293,20 @@ message IssueOpened { | |||
| 290 | 293 | Issue issue = 1; | |
| 291 | 294 | } | |
| 292 | 295 | ||
| 293 | - | // IssueClosed reports a closed issue. | |
| 296 | + | // IssueClosed reports a closed issue. A merge that resolves an issue sends | |
| 297 | + | // issue_resolved, not issue_closed. | |
| 294 | 298 | message IssueClosed { | |
| 295 | 299 | // Issue is the issue after closing, including its repository and number. | |
| 296 | 300 | Issue issue = 1; | |
| 297 | 301 | } | |
| 298 | 302 | ||
| 303 | + | // IssueResolved reports a resolved issue. | |
| 304 | + | message IssueResolved { | |
| 305 | + | // Issue is the issue after resolving, including its repository, number and | |
| 306 | + | // closed_by_merge_request. | |
| 307 | + | Issue issue = 1; | |
| 308 | + | } | |
| 309 | + | ||
| 299 | 310 | // IssueReopened reports a reopened issue. | |
| 300 | 311 | message IssueReopened { | |
| 301 | 312 | // Issue is the issue after reopening, including its repository and number. | |
| @@ -21,9 +21,10 @@ service EventService { | |||||
| 21 | // for merge requests, merge_request_opened, merge_request_merged, | 21 | // for merge requests, merge_request_opened, merge_request_merged, | ||
| 22 | // merge_request_closed, comment_added, comment_edited, comment_deleted and | 22 | // merge_request_closed, comment_added, comment_edited, comment_deleted and | ||
| 23 | // comment_resolved (a thread resolved or reopened); for issues, issue_opened, | 23 | // comment_resolved (a thread resolved or reopened); for issues, issue_opened, | ||
| 24 | - | // issue_closed, issue_reopened and issue_commented, and issue_submitted. Each | 24 | + | // issue_closed, issue_resolved, issue_reopened and issue_commented, and |
| 25 | - | // one is delivered on the "repo:<name>" topic of its repository and on | 25 | + | // issue_submitted. Each one is delivered on the "repo:<name>" topic of its |
| 26 | - | // "home", subject to the visibility of the repository, except | 26 | + | // repository and on "home", subject to the visibility of the repository, |
| 27 | + | // except | |||
| 27 | // issue_submitted: it is delivered only on the "owner" topic, never on | 28 | // issue_submitted: it is delivered only on the "owner" topic, never on | ||
| 28 | // "home" or "repo:<name>", and carries no content (see IssueSubmitted). | 29 | // "home" or "repo:<name>", and carries no content (see IssueSubmitted). | ||
| 29 | // | 30 | // | ||
| @@ -153,6 +154,8 @@ message Event { | |||||
| 153 | ReleaseDeleted release_deleted = 29; | 154 | ReleaseDeleted release_deleted = 29; | ||
| 154 | // ReleaseUnpublished reports a release turned into a draft after tag deletion. | 155 | // ReleaseUnpublished reports a release turned into a draft after tag deletion. | ||
| 155 | ReleaseUnpublished release_unpublished = 30; | 156 | ReleaseUnpublished release_unpublished = 30; | ||
| 157 | + | // IssueResolved: an issue was resolved. | |||
| 158 | + | IssueResolved issue_resolved = 31; | |||
| 156 | } | 159 | } | ||
| 157 | } | 160 | } | ||
| 158 | 161 | ||||
| @@ -290,12 +293,20 @@ message IssueOpened { | |||||
| 290 | Issue issue = 1; | 293 | Issue issue = 1; | ||
| 291 | } | 294 | } | ||
| 292 | 295 | ||||
| 293 | - | // IssueClosed reports a closed issue. | 296 | + | // IssueClosed reports a closed issue. A merge that resolves an issue sends |
| 297 | + | // issue_resolved, not issue_closed. | |||
| 294 | message IssueClosed { | 298 | message IssueClosed { | ||
| 295 | // Issue is the issue after closing, including its repository and number. | 299 | // Issue is the issue after closing, including its repository and number. | ||
| 296 | Issue issue = 1; | 300 | Issue issue = 1; | ||
| 297 | } | 301 | } | ||
| 298 | 302 | ||||
| 303 | + | // IssueResolved reports a resolved issue. | |||
| 304 | + | message IssueResolved { | |||
| 305 | + | // Issue is the issue after resolving, including its repository, number and | |||
| 306 | + | // closed_by_merge_request. | |||
| 307 | + | Issue issue = 1; | |||
| 308 | + | } | |||
| 309 | + | ||||
| 299 | // IssueReopened reports a reopened issue. | 310 | // IssueReopened reports a reopened issue. | ||
| 300 | message IssueReopened { | 311 | message IssueReopened { | ||
| 301 | // Issue is the issue after reopening, including its repository and number. | 312 | // Issue is the issue after reopening, including its repository and number. | ||
M proto/ermite/issue.proto +46 -15
| @@ -14,10 +14,14 @@ enum IssueState { | |||
| 14 | 14 | ISSUE_STATE_UNSPECIFIED = 0; | |
| 15 | 15 | // The issue is open. | |
| 16 | 16 | ISSUE_STATE_OPEN = 1; | |
| 17 | - | // The issue is closed. | |
| 17 | + | // The issue is closed without being resolved (won't fix, duplicate, ...). | |
| 18 | 18 | ISSUE_STATE_CLOSED = 2; | |
| 19 | 19 | // Reserved for later use: awaiting moderation, owner-only. | |
| 20 | 20 | ISSUE_STATE_PENDING = 3; | |
| 21 | + | // The issue was fixed: by the merge of a merge request with a closing | |
| 22 | + | // reference, or by hand (ResolveIssue). CLOSED means closed without being | |
| 23 | + | // resolved. | |
| 24 | + | ISSUE_STATE_RESOLVED = 4; | |
| 21 | 25 | } | |
| 22 | 26 | ||
| 23 | 27 | // Issue is a discussion in a repository. | |
| @@ -45,9 +49,10 @@ message Issue { | |||
| 45 | 49 | google.protobuf.Timestamp updated_at = 8; | |
| 46 | 50 | // CommentCount is the number of comments on the issue. | |
| 47 | 51 | int32 comment_count = 9; | |
| 48 | - | // ClosedByMergeRequest is the number of the merge request whose merge closed | |
| 49 | - | // the issue (a closing reference such as "Fixes #N"); 0 when the issue was | |
| 50 | - | // closed by hand or is open. Reset when the issue is reopened. | |
| 52 | + | // ClosedByMergeRequest is the number of the merge request whose merge | |
| 53 | + | // resolved the issue (a closing reference such as "Fixes #N"); 0 when the | |
| 54 | + | // issue was resolved by hand, is closed, or is open. Reset when the issue is | |
| 55 | + | // reopened. | |
| 51 | 56 | int64 closed_by_merge_request = 10; | |
| 52 | 57 | } | |
| 53 | 58 | ||
| @@ -86,29 +91,35 @@ message IssueComment { | |||
| 86 | 91 | // | |
| 87 | 92 | // Reading (ListIssues, GetIssue) needs the same access as reading the | |
| 88 | 93 | // repository: nothing for a public one, the repo:read scope for a private one. | |
| 89 | - | // Writing (CreateIssue, AddIssueComment, CloseIssue, ReopenIssue) needs the | |
| 94 | + | // Writing (CreateIssue, AddIssueComment, CloseIssue, ResolveIssue, | |
| 95 | + | // ReopenIssue) needs the | |
| 90 | 96 | // owner or a token with the issue:write scope on the repository; branch | |
| 91 | 97 | // prefixes do not restrict it. A caller without credentials gets | |
| 92 | 98 | // unauthenticated, one with an insufficient scope gets permission_denied, and | |
| 93 | 99 | // one that cannot read the repository gets not_found. | |
| 94 | 100 | // | |
| 95 | 101 | // A closing reference ("Fixes #N", "Closes #N", "Resolves #N") in the title, | |
| 96 | - | // description or commit messages of a merge request closes the issue when the | |
| 97 | - | // request is merged, and only then; the issue.closed event and Issue carry | |
| 98 | - | // closed_by_merge_request. Servers that report these links (GetIssueResponse. | |
| 99 | - | // references, Issue.closed_by_merge_request) list "issues.links" in | |
| 100 | - | // GetVersionResponse.features; older servers leave them empty. | |
| 102 | + | // description or commit messages of a merge request resolves the issue when the | |
| 103 | + | // request is merged, and only then: the issue gets the state RESOLVED, an | |
| 104 | + | // issue.resolved event is sent, and Issue carries closed_by_merge_request. | |
| 105 | + | // Servers that report these links (GetIssueResponse.references, | |
| 106 | + | // Issue.closed_by_merge_request) list "issues.links" in | |
| 107 | + | // GetVersionResponse.features; older servers leave them empty. Servers that | |
| 108 | + | // also keep the history of issues (GetIssueResponse.events), implement | |
| 109 | + | // ResolveIssue and the RESOLVED state list "issues.resolve". | |
| 101 | 110 | // | |
| 102 | 111 | // Text fields are normalized to NFC and stripped of control and Unicode | |
| 103 | 112 | // bidirectional characters (line breaks and tabs stay in bodies and comments). | |
| 104 | 113 | // The title is one line of 1 to 120 code points; body and comment text are at | |
| 105 | 114 | // most 10,000 code points and a comment must not be blank. A text that breaks | |
| 106 | 115 | // a rule is rejected with invalid_argument. A comment on an issue that already | |
| 107 | - | // holds 1,000 comments gives resource_exhausted. Closing an issue that is not | |
| 108 | - | // open, or reopening one that is not closed, gives failed_precondition. | |
| 116 | + | // holds 1,000 comments gives resource_exhausted. Closing or resolving an issue | |
| 117 | + | // that is not open, or reopening one that is neither closed nor resolved, | |
| 118 | + | // gives failed_precondition. | |
| 109 | 119 | // | |
| 110 | - | // The ordinary RPCs only return issues in state OPEN or CLOSED, and | |
| 111 | - | // ListIssues with state ISSUE_STATE_PENDING is invalid_argument. Submissions | |
| 120 | + | // The ordinary RPCs return issues in state OPEN, CLOSED or RESOLVED, and | |
| 121 | + | // ListIssues accepts these three states; ISSUE_STATE_PENDING is | |
| 122 | + | // invalid_argument. Submissions | |
| 112 | 123 | // from the public form wait as PendingIssue records, reachable only through | |
| 113 | 124 | // the three moderation RPCs (ListPendingIssues, ApproveIssue, RejectIssue). | |
| 114 | 125 | // These need owner rights (root, an owner session, or a token holding every | |
| @@ -126,7 +137,10 @@ service IssueService { | |||
| 126 | 137 | rpc AddIssueComment(AddIssueCommentRequest) returns (AddIssueCommentResponse); | |
| 127 | 138 | // CloseIssue closes an issue. Needs the issue:write scope. | |
| 128 | 139 | rpc CloseIssue(CloseIssueRequest) returns (CloseIssueResponse); | |
| 129 | - | // ReopenIssue reopens an issue. Needs the issue:write scope. | |
| 140 | + | // ResolveIssue marks an open issue as resolved. Needs the issue:write scope. | |
| 141 | + | rpc ResolveIssue(ResolveIssueRequest) returns (ResolveIssueResponse); | |
| 142 | + | // ReopenIssue reopens a closed or resolved issue. Needs the issue:write | |
| 143 | + | // scope. | |
| 130 | 144 | rpc ReopenIssue(ReopenIssueRequest) returns (ReopenIssueResponse); | |
| 131 | 145 | // ListPendingIssues lists issues awaiting moderation, oldest first. Owner | |
| 132 | 146 | // rights only; anyone else gets NOT_FOUND. | |
| @@ -196,6 +210,9 @@ message GetIssueResponse { | |||
| 196 | 210 | // References are the merge requests naming the issue, ascending by number, | |
| 197 | 211 | // at most 100. | |
| 198 | 212 | repeated IssueReference references = 3; | |
| 213 | + | // Events are the history of the issue, oldest first, at most 500 (a server | |
| 214 | + | // limit). Clients interleave them with the comments by created_at. | |
| 215 | + | repeated IssueEvent events = 4; | |
| 199 | 216 | } | |
| 200 | 217 | ||
| 201 | 218 | // AddIssueCommentRequest describes the comment to add. | |
| @@ -228,6 +245,20 @@ message CloseIssueResponse { | |||
| 228 | 245 | Issue issue = 1; | |
| 229 | 246 | } | |
| 230 | 247 | ||
| 248 | + | // ResolveIssueRequest names the issue to resolve. | |
| 249 | + | message ResolveIssueRequest { | |
| 250 | + | // Repo is the repository name. | |
| 251 | + | string repo = 1; | |
| 252 | + | // Number is the issue number. | |
| 253 | + | int64 number = 2; | |
| 254 | + | } | |
| 255 | + | ||
| 256 | + | // ResolveIssueResponse holds the issue after resolving. | |
| 257 | + | message ResolveIssueResponse { | |
| 258 | + | // Issue is the resolved issue. | |
| 259 | + | Issue issue = 1; | |
| 260 | + | } | |
| 261 | + | ||
| 231 | 262 | // ReopenIssueRequest names the issue to reopen. | |
| 232 | 263 | message ReopenIssueRequest { | |
| 233 | 264 | // Repo is the repository name. | |
| @@ -14,10 +14,14 @@ enum IssueState { | |||||
| 14 | ISSUE_STATE_UNSPECIFIED = 0; | 14 | ISSUE_STATE_UNSPECIFIED = 0; | ||
| 15 | // The issue is open. | 15 | // The issue is open. | ||
| 16 | ISSUE_STATE_OPEN = 1; | 16 | ISSUE_STATE_OPEN = 1; | ||
| 17 | - | // The issue is closed. | 17 | + | // The issue is closed without being resolved (won't fix, duplicate, ...). |
| 18 | ISSUE_STATE_CLOSED = 2; | 18 | ISSUE_STATE_CLOSED = 2; | ||
| 19 | // Reserved for later use: awaiting moderation, owner-only. | 19 | // Reserved for later use: awaiting moderation, owner-only. | ||
| 20 | ISSUE_STATE_PENDING = 3; | 20 | ISSUE_STATE_PENDING = 3; | ||
| 21 | + | // The issue was fixed: by the merge of a merge request with a closing | |||
| 22 | + | // reference, or by hand (ResolveIssue). CLOSED means closed without being | |||
| 23 | + | // resolved. | |||
| 24 | + | ISSUE_STATE_RESOLVED = 4; | |||
| 21 | } | 25 | } | ||
| 22 | 26 | ||||
| 23 | // Issue is a discussion in a repository. | 27 | // Issue is a discussion in a repository. | ||
| @@ -45,9 +49,10 @@ message Issue { | |||||
| 45 | google.protobuf.Timestamp updated_at = 8; | 49 | google.protobuf.Timestamp updated_at = 8; | ||
| 46 | // CommentCount is the number of comments on the issue. | 50 | // CommentCount is the number of comments on the issue. | ||
| 47 | int32 comment_count = 9; | 51 | int32 comment_count = 9; | ||
| 48 | - | // ClosedByMergeRequest is the number of the merge request whose merge closed | 52 | + | // ClosedByMergeRequest is the number of the merge request whose merge |
| 49 | - | // the issue (a closing reference such as "Fixes #N"); 0 when the issue was | 53 | + | // resolved the issue (a closing reference such as "Fixes #N"); 0 when the |
| 50 | - | // closed by hand or is open. Reset when the issue is reopened. | 54 | + | // issue was resolved by hand, is closed, or is open. Reset when the issue is |
| 55 | + | // reopened. | |||
| 51 | int64 closed_by_merge_request = 10; | 56 | int64 closed_by_merge_request = 10; | ||
| 52 | } | 57 | } | ||
| 53 | 58 | ||||
| @@ -86,29 +91,35 @@ message IssueComment { | |||||
| 86 | // | 91 | // | ||
| 87 | // Reading (ListIssues, GetIssue) needs the same access as reading the | 92 | // Reading (ListIssues, GetIssue) needs the same access as reading the | ||
| 88 | // repository: nothing for a public one, the repo:read scope for a private one. | 93 | // repository: nothing for a public one, the repo:read scope for a private one. | ||
| 89 | - | // Writing (CreateIssue, AddIssueComment, CloseIssue, ReopenIssue) needs the | 94 | + | // Writing (CreateIssue, AddIssueComment, CloseIssue, ResolveIssue, |
| 95 | + | // ReopenIssue) needs the | |||
| 90 | // owner or a token with the issue:write scope on the repository; branch | 96 | // owner or a token with the issue:write scope on the repository; branch | ||
| 91 | // prefixes do not restrict it. A caller without credentials gets | 97 | // prefixes do not restrict it. A caller without credentials gets | ||
| 92 | // unauthenticated, one with an insufficient scope gets permission_denied, and | 98 | // unauthenticated, one with an insufficient scope gets permission_denied, and | ||
| 93 | // one that cannot read the repository gets not_found. | 99 | // one that cannot read the repository gets not_found. | ||
| 94 | // | 100 | // | ||
| 95 | // A closing reference ("Fixes #N", "Closes #N", "Resolves #N") in the title, | 101 | // A closing reference ("Fixes #N", "Closes #N", "Resolves #N") in the title, | ||
| 96 | - | // description or commit messages of a merge request closes the issue when the | 102 | + | // description or commit messages of a merge request resolves the issue when the |
| 97 | - | // request is merged, and only then; the issue.closed event and Issue carry | 103 | + | // request is merged, and only then: the issue gets the state RESOLVED, an |
| 98 | - | // closed_by_merge_request. Servers that report these links (GetIssueResponse. | 104 | + | // issue.resolved event is sent, and Issue carries closed_by_merge_request. |
| 99 | - | // references, Issue.closed_by_merge_request) list "issues.links" in | 105 | + | // Servers that report these links (GetIssueResponse.references, |
| 100 | - | // GetVersionResponse.features; older servers leave them empty. | 106 | + | // Issue.closed_by_merge_request) list "issues.links" in |
| 107 | + | // GetVersionResponse.features; older servers leave them empty. Servers that | |||
| 108 | + | // also keep the history of issues (GetIssueResponse.events), implement | |||
| 109 | + | // ResolveIssue and the RESOLVED state list "issues.resolve". | |||
| 101 | // | 110 | // | ||
| 102 | // Text fields are normalized to NFC and stripped of control and Unicode | 111 | // Text fields are normalized to NFC and stripped of control and Unicode | ||
| 103 | // bidirectional characters (line breaks and tabs stay in bodies and comments). | 112 | // bidirectional characters (line breaks and tabs stay in bodies and comments). | ||
| 104 | // The title is one line of 1 to 120 code points; body and comment text are at | 113 | // The title is one line of 1 to 120 code points; body and comment text are at | ||
| 105 | // most 10,000 code points and a comment must not be blank. A text that breaks | 114 | // most 10,000 code points and a comment must not be blank. A text that breaks | ||
| 106 | // a rule is rejected with invalid_argument. A comment on an issue that already | 115 | // a rule is rejected with invalid_argument. A comment on an issue that already | ||
| 107 | - | // holds 1,000 comments gives resource_exhausted. Closing an issue that is not | 116 | + | // holds 1,000 comments gives resource_exhausted. Closing or resolving an issue |
| 108 | - | // open, or reopening one that is not closed, gives failed_precondition. | 117 | + | // that is not open, or reopening one that is neither closed nor resolved, |
| 118 | + | // gives failed_precondition. | |||
| 109 | // | 119 | // | ||
| 110 | - | // The ordinary RPCs only return issues in state OPEN or CLOSED, and | 120 | + | // The ordinary RPCs return issues in state OPEN, CLOSED or RESOLVED, and |
| 111 | - | // ListIssues with state ISSUE_STATE_PENDING is invalid_argument. Submissions | 121 | + | // ListIssues accepts these three states; ISSUE_STATE_PENDING is |
| 122 | + | // invalid_argument. Submissions | |||
| 112 | // from the public form wait as PendingIssue records, reachable only through | 123 | // from the public form wait as PendingIssue records, reachable only through | ||
| 113 | // the three moderation RPCs (ListPendingIssues, ApproveIssue, RejectIssue). | 124 | // the three moderation RPCs (ListPendingIssues, ApproveIssue, RejectIssue). | ||
| 114 | // These need owner rights (root, an owner session, or a token holding every | 125 | // These need owner rights (root, an owner session, or a token holding every | ||
| @@ -126,7 +137,10 @@ service IssueService { | |||||
| 126 | rpc AddIssueComment(AddIssueCommentRequest) returns (AddIssueCommentResponse); | 137 | rpc AddIssueComment(AddIssueCommentRequest) returns (AddIssueCommentResponse); | ||
| 127 | // CloseIssue closes an issue. Needs the issue:write scope. | 138 | // CloseIssue closes an issue. Needs the issue:write scope. | ||
| 128 | rpc CloseIssue(CloseIssueRequest) returns (CloseIssueResponse); | 139 | rpc CloseIssue(CloseIssueRequest) returns (CloseIssueResponse); | ||
| 129 | - | // ReopenIssue reopens an issue. Needs the issue:write scope. | 140 | + | // ResolveIssue marks an open issue as resolved. Needs the issue:write scope. |
| 141 | + | rpc ResolveIssue(ResolveIssueRequest) returns (ResolveIssueResponse); | |||
| 142 | + | // ReopenIssue reopens a closed or resolved issue. Needs the issue:write | |||
| 143 | + | // scope. | |||
| 130 | rpc ReopenIssue(ReopenIssueRequest) returns (ReopenIssueResponse); | 144 | rpc ReopenIssue(ReopenIssueRequest) returns (ReopenIssueResponse); | ||
| 131 | // ListPendingIssues lists issues awaiting moderation, oldest first. Owner | 145 | // ListPendingIssues lists issues awaiting moderation, oldest first. Owner | ||
| 132 | // rights only; anyone else gets NOT_FOUND. | 146 | // rights only; anyone else gets NOT_FOUND. | ||
| @@ -196,6 +210,9 @@ message GetIssueResponse { | |||||
| 196 | // References are the merge requests naming the issue, ascending by number, | 210 | // References are the merge requests naming the issue, ascending by number, | ||
| 197 | // at most 100. | 211 | // at most 100. | ||
| 198 | repeated IssueReference references = 3; | 212 | repeated IssueReference references = 3; | ||
| 213 | + | // Events are the history of the issue, oldest first, at most 500 (a server | |||
| 214 | + | // limit). Clients interleave them with the comments by created_at. | |||
| 215 | + | repeated IssueEvent events = 4; | |||
| 199 | } | 216 | } | ||
| 200 | 217 | ||||
| 201 | // AddIssueCommentRequest describes the comment to add. | 218 | // AddIssueCommentRequest describes the comment to add. | ||
| @@ -228,6 +245,20 @@ message CloseIssueResponse { | |||||
| 228 | Issue issue = 1; | 245 | Issue issue = 1; | ||
| 229 | } | 246 | } | ||
| 230 | 247 | ||||
| 248 | + | // ResolveIssueRequest names the issue to resolve. | |||
| 249 | + | message ResolveIssueRequest { | |||
| 250 | + | // Repo is the repository name. | |||
| 251 | + | string repo = 1; | |||
| 252 | + | // Number is the issue number. | |||
| 253 | + | int64 number = 2; | |||
| 254 | + | } | |||
| 255 | + | ||||
| 256 | + | // ResolveIssueResponse holds the issue after resolving. | |||
| 257 | + | message ResolveIssueResponse { | |||
| 258 | + | // Issue is the resolved issue. | |||
| 259 | + | Issue issue = 1; | |||
| 260 | + | } | |||
| 261 | + | ||||
| 231 | // ReopenIssueRequest names the issue to reopen. | 262 | // ReopenIssueRequest names the issue to reopen. | ||
| 232 | message ReopenIssueRequest { | 263 | message ReopenIssueRequest { | ||
| 233 | // Repo is the repository name. | 264 | // Repo is the repository name. | ||
M proto/ermite/merge_request.proto +78 -0
| @@ -402,6 +402,76 @@ message ListMergeRequestsResponse { | |||
| 402 | 402 | string next_page_token = 2; | |
| 403 | 403 | } | |
| 404 | 404 | ||
| 405 | + | // MergeRequestIssueState is where an issue named by a merge request is in its | |
| 406 | + | // life. Values share their numbers with IssueState (3, awaiting moderation, | |
| 407 | + | // is never shown here). It exists because issue.proto imports this file and | |
| 408 | + | // cannot be imported back. | |
| 409 | + | enum MergeRequestIssueState { | |
| 410 | + | // Not set. Never returned by the server. | |
| 411 | + | MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED = 0; | |
| 412 | + | // The issue is open. | |
| 413 | + | MERGE_REQUEST_ISSUE_STATE_OPEN = 1; | |
| 414 | + | // The issue is closed without being resolved. | |
| 415 | + | MERGE_REQUEST_ISSUE_STATE_CLOSED = 2; | |
| 416 | + | // The issue was resolved, by a merge or by hand. | |
| 417 | + | MERGE_REQUEST_ISSUE_STATE_RESOLVED = 4; | |
| 418 | + | } | |
| 419 | + | ||
| 420 | + | // MergeRequestIssue is an issue of the same repository that a merge request | |
| 421 | + | // names ("#N"). | |
| 422 | + | message MergeRequestIssue { | |
| 423 | + | // Number is the number of the issue. | |
| 424 | + | int64 number = 1; | |
| 425 | + | // Title is the title of the issue. | |
| 426 | + | string title = 2; | |
| 427 | + | // State is where the issue is in its life. | |
| 428 | + | MergeRequestIssueState state = 3; | |
| 429 | + | // Closes says that a closing reference names the issue: merging the request | |
| 430 | + | // resolves it. | |
| 431 | + | bool closes = 4; | |
| 432 | + | } | |
| 433 | + | ||
| 434 | + | // IssueEventKind is what happened in an IssueEvent. | |
| 435 | + | enum IssueEventKind { | |
| 436 | + | // Not set. Never returned by the server. | |
| 437 | + | ISSUE_EVENT_KIND_UNSPECIFIED = 0; | |
| 438 | + | // A merge request started naming the issue; closes says whether with a | |
| 439 | + | // closing reference. | |
| 440 | + | ISSUE_EVENT_KIND_REFERENCED = 1; | |
| 441 | + | // The issue was closed without being resolved. | |
| 442 | + | ISSUE_EVENT_KIND_CLOSED = 2; | |
| 443 | + | // The issue was reopened. | |
| 444 | + | ISSUE_EVENT_KIND_REOPENED = 3; | |
| 445 | + | // The issue was resolved; merge_request is set when a merge resolved it. | |
| 446 | + | ISSUE_EVENT_KIND_RESOLVED = 4; | |
| 447 | + | } | |
| 448 | + | ||
| 449 | + | // IssueEvent is one entry in the history of an issue. Events are append-only: | |
| 450 | + | // a reference that later disappears does not remove its event. | |
| 451 | + | message IssueEvent { | |
| 452 | + | // Id identifies the event within its issue. Opaque. Events of different | |
| 453 | + | // issues can share an id: key them by (issue, id). | |
| 454 | + | string id = 1; | |
| 455 | + | // Kind is what happened. | |
| 456 | + | IssueEventKind kind = 2; | |
| 457 | + | // Issue is the number of the issue. | |
| 458 | + | int64 issue = 3; | |
| 459 | + | // MergeRequest is the number of the merge request involved; 0 if none. | |
| 460 | + | int64 merge_request = 4; | |
| 461 | + | // MergeRequestTitle is the title of that merge request at read time; empty | |
| 462 | + | // if none. | |
| 463 | + | string merge_request_title = 5; | |
| 464 | + | // Closes says that the reference was a closing one. Only set for | |
| 465 | + | // ISSUE_EVENT_KIND_REFERENCED. | |
| 466 | + | bool closes = 6; | |
| 467 | + | // Actor names who caused the event, like Issue.author: the label of the | |
| 468 | + | // token or session. For events triggered by a merge, the label of who | |
| 469 | + | // merged. | |
| 470 | + | string actor = 7; | |
| 471 | + | // CreatedAt is when the event happened. | |
| 472 | + | google.protobuf.Timestamp created_at = 8; | |
| 473 | + | } | |
| 474 | + | ||
| 405 | 475 | // GetMergeRequestRequest selects a merge request. | |
| 406 | 476 | message GetMergeRequestRequest { | |
| 407 | 477 | // Repo is the repository name. | |
| @@ -452,6 +522,14 @@ message GetMergeRequestResponse { | |||
| 452 | 522 | // Verdicts are the current verdicts, one per author who gave one, ordered | |
| 453 | 523 | // by the comment that carries them, oldest first. | |
| 454 | 524 | repeated AuthorVerdict verdicts = 10; | |
| 525 | + | // Issues are the issues of the same repository that the merge request names, | |
| 526 | + | // ascending by number, at most 100. Empty when issues are off. | |
| 527 | + | repeated MergeRequestIssue issues = 11; | |
| 528 | + | // IssueEvents are the history entries that involve this merge request: the | |
| 529 | + | // REFERENCED and RESOLVED events of the issues it names or once named, | |
| 530 | + | // oldest first, at most 500. An event can name an issue that is no longer | |
| 531 | + | // in issues. Empty when issues are off. | |
| 532 | + | repeated IssueEvent issue_events = 12; | |
| 455 | 533 | } | |
| 456 | 534 | ||
| 457 | 535 | // AddCommentRequest describes the comment to add. | |
| @@ -402,6 +402,76 @@ message ListMergeRequestsResponse { | |||||
| 402 | string next_page_token = 2; | 402 | string next_page_token = 2; | ||
| 403 | } | 403 | } | ||
| 404 | 404 | ||||
| 405 | + | // MergeRequestIssueState is where an issue named by a merge request is in its | |||
| 406 | + | // life. Values share their numbers with IssueState (3, awaiting moderation, | |||
| 407 | + | // is never shown here). It exists because issue.proto imports this file and | |||
| 408 | + | // cannot be imported back. | |||
| 409 | + | enum MergeRequestIssueState { | |||
| 410 | + | // Not set. Never returned by the server. | |||
| 411 | + | MERGE_REQUEST_ISSUE_STATE_UNSPECIFIED = 0; | |||
| 412 | + | // The issue is open. | |||
| 413 | + | MERGE_REQUEST_ISSUE_STATE_OPEN = 1; | |||
| 414 | + | // The issue is closed without being resolved. | |||
| 415 | + | MERGE_REQUEST_ISSUE_STATE_CLOSED = 2; | |||
| 416 | + | // The issue was resolved, by a merge or by hand. | |||
| 417 | + | MERGE_REQUEST_ISSUE_STATE_RESOLVED = 4; | |||
| 418 | + | } | |||
| 419 | + | ||||
| 420 | + | // MergeRequestIssue is an issue of the same repository that a merge request | |||
| 421 | + | // names ("#N"). | |||
| 422 | + | message MergeRequestIssue { | |||
| 423 | + | // Number is the number of the issue. | |||
| 424 | + | int64 number = 1; | |||
| 425 | + | // Title is the title of the issue. | |||
| 426 | + | string title = 2; | |||
| 427 | + | // State is where the issue is in its life. | |||
| 428 | + | MergeRequestIssueState state = 3; | |||
| 429 | + | // Closes says that a closing reference names the issue: merging the request | |||
| 430 | + | // resolves it. | |||
| 431 | + | bool closes = 4; | |||
| 432 | + | } | |||
| 433 | + | ||||
| 434 | + | // IssueEventKind is what happened in an IssueEvent. | |||
| 435 | + | enum IssueEventKind { | |||
| 436 | + | // Not set. Never returned by the server. | |||
| 437 | + | ISSUE_EVENT_KIND_UNSPECIFIED = 0; | |||
| 438 | + | // A merge request started naming the issue; closes says whether with a | |||
| 439 | + | // closing reference. | |||
| 440 | + | ISSUE_EVENT_KIND_REFERENCED = 1; | |||
| 441 | + | // The issue was closed without being resolved. | |||
| 442 | + | ISSUE_EVENT_KIND_CLOSED = 2; | |||
| 443 | + | // The issue was reopened. | |||
| 444 | + | ISSUE_EVENT_KIND_REOPENED = 3; | |||
| 445 | + | // The issue was resolved; merge_request is set when a merge resolved it. | |||
| 446 | + | ISSUE_EVENT_KIND_RESOLVED = 4; | |||
| 447 | + | } | |||
| 448 | + | ||||
| 449 | + | // IssueEvent is one entry in the history of an issue. Events are append-only: | |||
| 450 | + | // a reference that later disappears does not remove its event. | |||
| 451 | + | message IssueEvent { | |||
| 452 | + | // Id identifies the event within its issue. Opaque. Events of different | |||
| 453 | + | // issues can share an id: key them by (issue, id). | |||
| 454 | + | string id = 1; | |||
| 455 | + | // Kind is what happened. | |||
| 456 | + | IssueEventKind kind = 2; | |||
| 457 | + | // Issue is the number of the issue. | |||
| 458 | + | int64 issue = 3; | |||
| 459 | + | // MergeRequest is the number of the merge request involved; 0 if none. | |||
| 460 | + | int64 merge_request = 4; | |||
| 461 | + | // MergeRequestTitle is the title of that merge request at read time; empty | |||
| 462 | + | // if none. | |||
| 463 | + | string merge_request_title = 5; | |||
| 464 | + | // Closes says that the reference was a closing one. Only set for | |||
| 465 | + | // ISSUE_EVENT_KIND_REFERENCED. | |||
| 466 | + | bool closes = 6; | |||
| 467 | + | // Actor names who caused the event, like Issue.author: the label of the | |||
| 468 | + | // token or session. For events triggered by a merge, the label of who | |||
| 469 | + | // merged. | |||
| 470 | + | string actor = 7; | |||
| 471 | + | // CreatedAt is when the event happened. | |||
| 472 | + | google.protobuf.Timestamp created_at = 8; | |||
| 473 | + | } | |||
| 474 | + | ||||
| 405 | // GetMergeRequestRequest selects a merge request. | 475 | // GetMergeRequestRequest selects a merge request. | ||
| 406 | message GetMergeRequestRequest { | 476 | message GetMergeRequestRequest { | ||
| 407 | // Repo is the repository name. | 477 | // Repo is the repository name. | ||
| @@ -452,6 +522,14 @@ message GetMergeRequestResponse { | |||||
| 452 | // Verdicts are the current verdicts, one per author who gave one, ordered | 522 | // Verdicts are the current verdicts, one per author who gave one, ordered | ||
| 453 | // by the comment that carries them, oldest first. | 523 | // by the comment that carries them, oldest first. | ||
| 454 | repeated AuthorVerdict verdicts = 10; | 524 | repeated AuthorVerdict verdicts = 10; | ||
| 525 | + | // Issues are the issues of the same repository that the merge request names, | |||
| 526 | + | // ascending by number, at most 100. Empty when issues are off. | |||
| 527 | + | repeated MergeRequestIssue issues = 11; | |||
| 528 | + | // IssueEvents are the history entries that involve this merge request: the | |||
| 529 | + | // REFERENCED and RESOLVED events of the issues it names or once named, | |||
| 530 | + | // oldest first, at most 500. An event can name an issue that is no longer | |||
| 531 | + | // in issues. Empty when issues are off. | |||
| 532 | + | repeated IssueEvent issue_events = 12; | |||
| 455 | } | 533 | } | ||
| 456 | 534 | ||||
| 457 | // AddCommentRequest describes the comment to add. | 535 | // AddCommentRequest describes the comment to add. | ||