v0.16.0 751d351

release.connect.go RawHistoryFolder

1// SPDX-License-Identifier: MIT
2
3// Code generated by protoc-gen-connect-go. DO NOT EDIT.
4//
5// Source: ermite/release.proto
6
7package ermiteconnect
8
9import (
10	ermite "bnema.dev/ermite-api/gen/ermite"
11	connect "connectrpc.com/connect"
12	context "context"
13	errors "errors"
14	http "net/http"
15	strings "strings"
16)
17
18// This is a compile-time assertion to ensure that this generated file and the connect package are
19// compatible. If you get a compiler error that this constant is not defined, this code was
20// generated with a version of connect newer than the one compiled into your binary. You can fix the
21// problem by either regenerating this code with an older version of connect or updating the connect
22// version compiled into your binary.
23const _ = connect.IsAtLeastVersion1_13_0
24
25const (
26	// ReleaseServiceName is the fully-qualified name of the ReleaseService service.
27	ReleaseServiceName = "ermite.ReleaseService"
28)
29
30// These constants are the fully-qualified names of the RPCs defined in this package. They're
31// exposed at runtime as Spec.Procedure and as the final two segments of the HTTP route.
32//
33// Note that these are different from the fully-qualified method names used by
34// google.golang.org/protobuf/reflect/protoreflect. To convert from these constants to
35// reflection-formatted method names, remove the leading slash and convert the remaining slash to a
36// period.
37const (
38	// ReleaseServiceCreateReleaseProcedure is the fully-qualified name of the ReleaseService's
39	// CreateRelease RPC.
40	ReleaseServiceCreateReleaseProcedure = "/ermite.ReleaseService/CreateRelease"
41	// ReleaseServiceGetReleaseProcedure is the fully-qualified name of the ReleaseService's GetRelease
42	// RPC.
43	ReleaseServiceGetReleaseProcedure = "/ermite.ReleaseService/GetRelease"
44	// ReleaseServiceListReleasesProcedure is the fully-qualified name of the ReleaseService's
45	// ListReleases RPC.
46	ReleaseServiceListReleasesProcedure = "/ermite.ReleaseService/ListReleases"
47	// ReleaseServiceUpdateReleaseProcedure is the fully-qualified name of the ReleaseService's
48	// UpdateRelease RPC.
49	ReleaseServiceUpdateReleaseProcedure = "/ermite.ReleaseService/UpdateRelease"
50	// ReleaseServiceDeleteReleaseProcedure is the fully-qualified name of the ReleaseService's
51	// DeleteRelease RPC.
52	ReleaseServiceDeleteReleaseProcedure = "/ermite.ReleaseService/DeleteRelease"
53	// ReleaseServiceUploadReleaseAssetProcedure is the fully-qualified name of the ReleaseService's
54	// UploadReleaseAsset RPC.
55	ReleaseServiceUploadReleaseAssetProcedure = "/ermite.ReleaseService/UploadReleaseAsset"
56	// ReleaseServiceUpdateReleaseAssetProcedure is the fully-qualified name of the ReleaseService's
57	// UpdateReleaseAsset RPC.
58	ReleaseServiceUpdateReleaseAssetProcedure = "/ermite.ReleaseService/UpdateReleaseAsset"
59	// ReleaseServiceDeleteReleaseAssetProcedure is the fully-qualified name of the ReleaseService's
60	// DeleteReleaseAsset RPC.
61	ReleaseServiceDeleteReleaseAssetProcedure = "/ermite.ReleaseService/DeleteReleaseAsset"
62	// ReleaseServiceDownloadReleaseAssetProcedure is the fully-qualified name of the ReleaseService's
63	// DownloadReleaseAsset RPC.
64	ReleaseServiceDownloadReleaseAssetProcedure = "/ermite.ReleaseService/DownloadReleaseAsset"
65	// ReleaseServiceListReleaseAssetsProcedure is the fully-qualified name of the ReleaseService's
66	// ListReleaseAssets RPC.
67	ReleaseServiceListReleaseAssetsProcedure = "/ermite.ReleaseService/ListReleaseAssets"
68	// ReleaseServiceGetReleaseUsageProcedure is the fully-qualified name of the ReleaseService's
69	// GetReleaseUsage RPC.
70	ReleaseServiceGetReleaseUsageProcedure = "/ermite.ReleaseService/GetReleaseUsage"
71)
72
73// ReleaseServiceClient is a client for the ermite.ReleaseService service.
74type ReleaseServiceClient interface {
75	// CreateRelease creates one release per tag (already_exists on duplication).
76	// Publishing without an existing tag is failed_precondition, unless
77	// target_commitish is supplied to create it; existing tags never move.
78	CreateRelease(context.Context, *connect.Request[ermite.CreateReleaseRequest]) (*connect.Response[ermite.CreateReleaseResponse], error)
79	// GetRelease selects by id, tag or latest (latest must be true).
80	GetRelease(context.Context, *connect.Request[ermite.GetReleaseRequest]) (*connect.Response[ermite.GetReleaseResponse], error)
81	// ListReleases lists newest first, including drafts only for writers.
82	ListReleases(context.Context, *connect.Request[ermite.ListReleasesRequest]) (*connect.Response[ermite.ListReleasesResponse], error)
83	// UpdateRelease changes masked fields. Publishing requires an existing tag
84	// or target_commitish to create it; otherwise failed_precondition.
85	UpdateRelease(context.Context, *connect.Request[ermite.UpdateReleaseRequest]) (*connect.Response[ermite.UpdateReleaseResponse], error)
86	// DeleteRelease removes a release and its assets.
87	DeleteRelease(context.Context, *connect.Request[ermite.DeleteReleaseRequest]) (*connect.Response[ermite.DeleteReleaseResponse], error)
88	// UploadReleaseAsset reserves size before reading. The first message carries
89	// metadata; subsequent messages carry only data, at most 1 MiB per message.
90	// Size must be nonnegative (-1 is refused). An interrupted stream stores no
91	// asset. A taken name gives already_exists unless replace is true. Uploading
92	// to a release of another repo gives failed_precondition.
93	UploadReleaseAsset(context.Context) *connect.ClientStreamForClient[ermite.UploadReleaseAssetRequest, ermite.UploadReleaseAssetResponse]
94	// UpdateReleaseAsset changes masked name and label; a taken name gives already_exists.
95	UpdateReleaseAsset(context.Context, *connect.Request[ermite.UpdateReleaseAssetRequest]) (*connect.Response[ermite.UpdateReleaseAssetResponse], error)
96	// DeleteReleaseAsset removes an asset.
97	DeleteReleaseAsset(context.Context, *connect.Request[ermite.DeleteReleaseAssetRequest]) (*connect.Response[ermite.DeleteReleaseAssetResponse], error)
98	// DownloadReleaseAsset sends asset metadata first, then chunks of at most
99	// 1 MiB. Resume with the offset after the last byte received. An offset
100	// beyond the size gives out_of_range.
101	DownloadReleaseAsset(context.Context, *connect.Request[ermite.DownloadReleaseAssetRequest]) (*connect.ServerStreamForClient[ermite.DownloadReleaseAssetResponse], error)
102	// ListReleaseAssets lists uploaded assets, ordered by name.
103	ListReleaseAssets(context.Context, *connect.Request[ermite.ListReleaseAssetsRequest]) (*connect.Response[ermite.ListReleaseAssetsResponse], error)
104	// GetReleaseUsage returns usage (including reserved uploads) and limits.
105	GetReleaseUsage(context.Context, *connect.Request[ermite.GetReleaseUsageRequest]) (*connect.Response[ermite.GetReleaseUsageResponse], error)
106}
107
108// NewReleaseServiceClient constructs a client for the ermite.ReleaseService service. By default, it
109// uses the Connect protocol with the binary Protobuf Codec, asks for gzipped responses, and sends
110// uncompressed requests. To use the gRPC or gRPC-Web protocols, supply the connect.WithGRPC() or
111// connect.WithGRPCWeb() options.
112//
113// The URL supplied here should be the base URL for the Connect or gRPC server (for example,
114// http://api.acme.com or https://acme.com/grpc).
115func NewReleaseServiceClient(httpClient connect.HTTPClient, baseURL string, opts ...connect.ClientOption) ReleaseServiceClient {
116	baseURL = strings.TrimRight(baseURL, "/")
117	releaseServiceMethods := ermite.File_ermite_release_proto.Services().ByName("ReleaseService").Methods()
118	return &releaseServiceClient{
119		createRelease: connect.NewClient[ermite.CreateReleaseRequest, ermite.CreateReleaseResponse](
120			httpClient,
121			baseURL+ReleaseServiceCreateReleaseProcedure,
122			connect.WithSchema(releaseServiceMethods.ByName("CreateRelease")),
123			connect.WithClientOptions(opts...),
124		),
125		getRelease: connect.NewClient[ermite.GetReleaseRequest, ermite.GetReleaseResponse](
126			httpClient,
127			baseURL+ReleaseServiceGetReleaseProcedure,
128			connect.WithSchema(releaseServiceMethods.ByName("GetRelease")),
129			connect.WithClientOptions(opts...),
130		),
131		listReleases: connect.NewClient[ermite.ListReleasesRequest, ermite.ListReleasesResponse](
132			httpClient,
133			baseURL+ReleaseServiceListReleasesProcedure,
134			connect.WithSchema(releaseServiceMethods.ByName("ListReleases")),
135			connect.WithClientOptions(opts...),
136		),
137		updateRelease: connect.NewClient[ermite.UpdateReleaseRequest, ermite.UpdateReleaseResponse](
138			httpClient,
139			baseURL+ReleaseServiceUpdateReleaseProcedure,
140			connect.WithSchema(releaseServiceMethods.ByName("UpdateRelease")),
141			connect.WithClientOptions(opts...),
142		),
143		deleteRelease: connect.NewClient[ermite.DeleteReleaseRequest, ermite.DeleteReleaseResponse](
144			httpClient,
145			baseURL+ReleaseServiceDeleteReleaseProcedure,
146			connect.WithSchema(releaseServiceMethods.ByName("DeleteRelease")),
147			connect.WithClientOptions(opts...),
148		),
149		uploadReleaseAsset: connect.NewClient[ermite.UploadReleaseAssetRequest, ermite.UploadReleaseAssetResponse](
150			httpClient,
151			baseURL+ReleaseServiceUploadReleaseAssetProcedure,
152			connect.WithSchema(releaseServiceMethods.ByName("UploadReleaseAsset")),
153			connect.WithClientOptions(opts...),
154		),
155		updateReleaseAsset: connect.NewClient[ermite.UpdateReleaseAssetRequest, ermite.UpdateReleaseAssetResponse](
156			httpClient,
157			baseURL+ReleaseServiceUpdateReleaseAssetProcedure,
158			connect.WithSchema(releaseServiceMethods.ByName("UpdateReleaseAsset")),
159			connect.WithClientOptions(opts...),
160		),
161		deleteReleaseAsset: connect.NewClient[ermite.DeleteReleaseAssetRequest, ermite.DeleteReleaseAssetResponse](
162			httpClient,
163			baseURL+ReleaseServiceDeleteReleaseAssetProcedure,
164			connect.WithSchema(releaseServiceMethods.ByName("DeleteReleaseAsset")),
165			connect.WithClientOptions(opts...),
166		),
167		downloadReleaseAsset: connect.NewClient[ermite.DownloadReleaseAssetRequest, ermite.DownloadReleaseAssetResponse](
168			httpClient,
169			baseURL+ReleaseServiceDownloadReleaseAssetProcedure,
170			connect.WithSchema(releaseServiceMethods.ByName("DownloadReleaseAsset")),
171			connect.WithClientOptions(opts...),
172		),
173		listReleaseAssets: connect.NewClient[ermite.ListReleaseAssetsRequest, ermite.ListReleaseAssetsResponse](
174			httpClient,
175			baseURL+ReleaseServiceListReleaseAssetsProcedure,
176			connect.WithSchema(releaseServiceMethods.ByName("ListReleaseAssets")),
177			connect.WithClientOptions(opts...),
178		),
179		getReleaseUsage: connect.NewClient[ermite.GetReleaseUsageRequest, ermite.GetReleaseUsageResponse](
180			httpClient,
181			baseURL+ReleaseServiceGetReleaseUsageProcedure,
182			connect.WithSchema(releaseServiceMethods.ByName("GetReleaseUsage")),
183			connect.WithClientOptions(opts...),
184		),
185	}
186}
187
188// releaseServiceClient implements ReleaseServiceClient.
189type releaseServiceClient struct {
190	createRelease        *connect.Client[ermite.CreateReleaseRequest, ermite.CreateReleaseResponse]
191	getRelease           *connect.Client[ermite.GetReleaseRequest, ermite.GetReleaseResponse]
192	listReleases         *connect.Client[ermite.ListReleasesRequest, ermite.ListReleasesResponse]
193	updateRelease        *connect.Client[ermite.UpdateReleaseRequest, ermite.UpdateReleaseResponse]
194	deleteRelease        *connect.Client[ermite.DeleteReleaseRequest, ermite.DeleteReleaseResponse]
195	uploadReleaseAsset   *connect.Client[ermite.UploadReleaseAssetRequest, ermite.UploadReleaseAssetResponse]
196	updateReleaseAsset   *connect.Client[ermite.UpdateReleaseAssetRequest, ermite.UpdateReleaseAssetResponse]
197	deleteReleaseAsset   *connect.Client[ermite.DeleteReleaseAssetRequest, ermite.DeleteReleaseAssetResponse]
198	downloadReleaseAsset *connect.Client[ermite.DownloadReleaseAssetRequest, ermite.DownloadReleaseAssetResponse]
199	listReleaseAssets    *connect.Client[ermite.ListReleaseAssetsRequest, ermite.ListReleaseAssetsResponse]
200	getReleaseUsage      *connect.Client[ermite.GetReleaseUsageRequest, ermite.GetReleaseUsageResponse]
201}
202
203// CreateRelease calls ermite.ReleaseService.CreateRelease.
204func (c *releaseServiceClient) CreateRelease(ctx context.Context, req *connect.Request[ermite.CreateReleaseRequest]) (*connect.Response[ermite.CreateReleaseResponse], error) {
205	return c.createRelease.CallUnary(ctx, req)
206}
207
208// GetRelease calls ermite.ReleaseService.GetRelease.
209func (c *releaseServiceClient) GetRelease(ctx context.Context, req *connect.Request[ermite.GetReleaseRequest]) (*connect.Response[ermite.GetReleaseResponse], error) {
210	return c.getRelease.CallUnary(ctx, req)
211}
212
213// ListReleases calls ermite.ReleaseService.ListReleases.
214func (c *releaseServiceClient) ListReleases(ctx context.Context, req *connect.Request[ermite.ListReleasesRequest]) (*connect.Response[ermite.ListReleasesResponse], error) {
215	return c.listReleases.CallUnary(ctx, req)
216}
217
218// UpdateRelease calls ermite.ReleaseService.UpdateRelease.
219func (c *releaseServiceClient) UpdateRelease(ctx context.Context, req *connect.Request[ermite.UpdateReleaseRequest]) (*connect.Response[ermite.UpdateReleaseResponse], error) {
220	return c.updateRelease.CallUnary(ctx, req)
221}
222
223// DeleteRelease calls ermite.ReleaseService.DeleteRelease.
224func (c *releaseServiceClient) DeleteRelease(ctx context.Context, req *connect.Request[ermite.DeleteReleaseRequest]) (*connect.Response[ermite.DeleteReleaseResponse], error) {
225	return c.deleteRelease.CallUnary(ctx, req)
226}
227
228// UploadReleaseAsset calls ermite.ReleaseService.UploadReleaseAsset.
229func (c *releaseServiceClient) UploadReleaseAsset(ctx context.Context) *connect.ClientStreamForClient[ermite.UploadReleaseAssetRequest, ermite.UploadReleaseAssetResponse] {
230	return c.uploadReleaseAsset.CallClientStream(ctx)
231}
232
233// UpdateReleaseAsset calls ermite.ReleaseService.UpdateReleaseAsset.
234func (c *releaseServiceClient) UpdateReleaseAsset(ctx context.Context, req *connect.Request[ermite.UpdateReleaseAssetRequest]) (*connect.Response[ermite.UpdateReleaseAssetResponse], error) {
235	return c.updateReleaseAsset.CallUnary(ctx, req)
236}
237
238// DeleteReleaseAsset calls ermite.ReleaseService.DeleteReleaseAsset.
239func (c *releaseServiceClient) DeleteReleaseAsset(ctx context.Context, req *connect.Request[ermite.DeleteReleaseAssetRequest]) (*connect.Response[ermite.DeleteReleaseAssetResponse], error) {
240	return c.deleteReleaseAsset.CallUnary(ctx, req)
241}
242
243// DownloadReleaseAsset calls ermite.ReleaseService.DownloadReleaseAsset.
244func (c *releaseServiceClient) DownloadReleaseAsset(ctx context.Context, req *connect.Request[ermite.DownloadReleaseAssetRequest]) (*connect.ServerStreamForClient[ermite.DownloadReleaseAssetResponse], error) {
245	return c.downloadReleaseAsset.CallServerStream(ctx, req)
246}
247
248// ListReleaseAssets calls ermite.ReleaseService.ListReleaseAssets.
249func (c *releaseServiceClient) ListReleaseAssets(ctx context.Context, req *connect.Request[ermite.ListReleaseAssetsRequest]) (*connect.Response[ermite.ListReleaseAssetsResponse], error) {
250	return c.listReleaseAssets.CallUnary(ctx, req)
251}
252
253// GetReleaseUsage calls ermite.ReleaseService.GetReleaseUsage.
254func (c *releaseServiceClient) GetReleaseUsage(ctx context.Context, req *connect.Request[ermite.GetReleaseUsageRequest]) (*connect.Response[ermite.GetReleaseUsageResponse], error) {
255	return c.getReleaseUsage.CallUnary(ctx, req)
256}
257
258// ReleaseServiceHandler is an implementation of the ermite.ReleaseService service.
259type ReleaseServiceHandler interface {
260	// CreateRelease creates one release per tag (already_exists on duplication).
261	// Publishing without an existing tag is failed_precondition, unless
262	// target_commitish is supplied to create it; existing tags never move.
263	CreateRelease(context.Context, *connect.Request[ermite.CreateReleaseRequest]) (*connect.Response[ermite.CreateReleaseResponse], error)
264	// GetRelease selects by id, tag or latest (latest must be true).
265	GetRelease(context.Context, *connect.Request[ermite.GetReleaseRequest]) (*connect.Response[ermite.GetReleaseResponse], error)
266	// ListReleases lists newest first, including drafts only for writers.
267	ListReleases(context.Context, *connect.Request[ermite.ListReleasesRequest]) (*connect.Response[ermite.ListReleasesResponse], error)
268	// UpdateRelease changes masked fields. Publishing requires an existing tag
269	// or target_commitish to create it; otherwise failed_precondition.
270	UpdateRelease(context.Context, *connect.Request[ermite.UpdateReleaseRequest]) (*connect.Response[ermite.UpdateReleaseResponse], error)
271	// DeleteRelease removes a release and its assets.
272	DeleteRelease(context.Context, *connect.Request[ermite.DeleteReleaseRequest]) (*connect.Response[ermite.DeleteReleaseResponse], error)
273	// UploadReleaseAsset reserves size before reading. The first message carries
274	// metadata; subsequent messages carry only data, at most 1 MiB per message.
275	// Size must be nonnegative (-1 is refused). An interrupted stream stores no
276	// asset. A taken name gives already_exists unless replace is true. Uploading
277	// to a release of another repo gives failed_precondition.
278	UploadReleaseAsset(context.Context, *connect.ClientStream[ermite.UploadReleaseAssetRequest]) (*connect.Response[ermite.UploadReleaseAssetResponse], error)
279	// UpdateReleaseAsset changes masked name and label; a taken name gives already_exists.
280	UpdateReleaseAsset(context.Context, *connect.Request[ermite.UpdateReleaseAssetRequest]) (*connect.Response[ermite.UpdateReleaseAssetResponse], error)
281	// DeleteReleaseAsset removes an asset.
282	DeleteReleaseAsset(context.Context, *connect.Request[ermite.DeleteReleaseAssetRequest]) (*connect.Response[ermite.DeleteReleaseAssetResponse], error)
283	// DownloadReleaseAsset sends asset metadata first, then chunks of at most
284	// 1 MiB. Resume with the offset after the last byte received. An offset
285	// beyond the size gives out_of_range.
286	DownloadReleaseAsset(context.Context, *connect.Request[ermite.DownloadReleaseAssetRequest], *connect.ServerStream[ermite.DownloadReleaseAssetResponse]) error
287	// ListReleaseAssets lists uploaded assets, ordered by name.
288	ListReleaseAssets(context.Context, *connect.Request[ermite.ListReleaseAssetsRequest]) (*connect.Response[ermite.ListReleaseAssetsResponse], error)
289	// GetReleaseUsage returns usage (including reserved uploads) and limits.
290	GetReleaseUsage(context.Context, *connect.Request[ermite.GetReleaseUsageRequest]) (*connect.Response[ermite.GetReleaseUsageResponse], error)
291}
292
293// NewReleaseServiceHandler builds an HTTP handler from the service implementation. It returns the
294// path on which to mount the handler and the handler itself.
295//
296// By default, handlers support the Connect, gRPC, and gRPC-Web protocols with the binary Protobuf
297// and JSON codecs. They also support gzip compression.
298func NewReleaseServiceHandler(svc ReleaseServiceHandler, opts ...connect.HandlerOption) (string, http.Handler) {
299	releaseServiceMethods := ermite.File_ermite_release_proto.Services().ByName("ReleaseService").Methods()
300	releaseServiceCreateReleaseHandler := connect.NewUnaryHandler(
301		ReleaseServiceCreateReleaseProcedure,
302		svc.CreateRelease,
303		connect.WithSchema(releaseServiceMethods.ByName("CreateRelease")),
304		connect.WithHandlerOptions(opts...),
305	)
306	releaseServiceGetReleaseHandler := connect.NewUnaryHandler(
307		ReleaseServiceGetReleaseProcedure,
308		svc.GetRelease,
309		connect.WithSchema(releaseServiceMethods.ByName("GetRelease")),
310		connect.WithHandlerOptions(opts...),
311	)
312	releaseServiceListReleasesHandler := connect.NewUnaryHandler(
313		ReleaseServiceListReleasesProcedure,
314		svc.ListReleases,
315		connect.WithSchema(releaseServiceMethods.ByName("ListReleases")),
316		connect.WithHandlerOptions(opts...),
317	)
318	releaseServiceUpdateReleaseHandler := connect.NewUnaryHandler(
319		ReleaseServiceUpdateReleaseProcedure,
320		svc.UpdateRelease,
321		connect.WithSchema(releaseServiceMethods.ByName("UpdateRelease")),
322		connect.WithHandlerOptions(opts...),
323	)
324	releaseServiceDeleteReleaseHandler := connect.NewUnaryHandler(
325		ReleaseServiceDeleteReleaseProcedure,
326		svc.DeleteRelease,
327		connect.WithSchema(releaseServiceMethods.ByName("DeleteRelease")),
328		connect.WithHandlerOptions(opts...),
329	)
330	releaseServiceUploadReleaseAssetHandler := connect.NewClientStreamHandler(
331		ReleaseServiceUploadReleaseAssetProcedure,
332		svc.UploadReleaseAsset,
333		connect.WithSchema(releaseServiceMethods.ByName("UploadReleaseAsset")),
334		connect.WithHandlerOptions(opts...),
335	)
336	releaseServiceUpdateReleaseAssetHandler := connect.NewUnaryHandler(
337		ReleaseServiceUpdateReleaseAssetProcedure,
338		svc.UpdateReleaseAsset,
339		connect.WithSchema(releaseServiceMethods.ByName("UpdateReleaseAsset")),
340		connect.WithHandlerOptions(opts...),
341	)
342	releaseServiceDeleteReleaseAssetHandler := connect.NewUnaryHandler(
343		ReleaseServiceDeleteReleaseAssetProcedure,
344		svc.DeleteReleaseAsset,
345		connect.WithSchema(releaseServiceMethods.ByName("DeleteReleaseAsset")),
346		connect.WithHandlerOptions(opts...),
347	)
348	releaseServiceDownloadReleaseAssetHandler := connect.NewServerStreamHandler(
349		ReleaseServiceDownloadReleaseAssetProcedure,
350		svc.DownloadReleaseAsset,
351		connect.WithSchema(releaseServiceMethods.ByName("DownloadReleaseAsset")),
352		connect.WithHandlerOptions(opts...),
353	)
354	releaseServiceListReleaseAssetsHandler := connect.NewUnaryHandler(
355		ReleaseServiceListReleaseAssetsProcedure,
356		svc.ListReleaseAssets,
357		connect.WithSchema(releaseServiceMethods.ByName("ListReleaseAssets")),
358		connect.WithHandlerOptions(opts...),
359	)
360	releaseServiceGetReleaseUsageHandler := connect.NewUnaryHandler(
361		ReleaseServiceGetReleaseUsageProcedure,
362		svc.GetReleaseUsage,
363		connect.WithSchema(releaseServiceMethods.ByName("GetReleaseUsage")),
364		connect.WithHandlerOptions(opts...),
365	)
366	return "/ermite.ReleaseService/", http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
367		switch r.URL.Path {
368		case ReleaseServiceCreateReleaseProcedure:
369			releaseServiceCreateReleaseHandler.ServeHTTP(w, r)
370		case ReleaseServiceGetReleaseProcedure:
371			releaseServiceGetReleaseHandler.ServeHTTP(w, r)
372		case ReleaseServiceListReleasesProcedure:
373			releaseServiceListReleasesHandler.ServeHTTP(w, r)
374		case ReleaseServiceUpdateReleaseProcedure:
375			releaseServiceUpdateReleaseHandler.ServeHTTP(w, r)
376		case ReleaseServiceDeleteReleaseProcedure:
377			releaseServiceDeleteReleaseHandler.ServeHTTP(w, r)
378		case ReleaseServiceUploadReleaseAssetProcedure:
379			releaseServiceUploadReleaseAssetHandler.ServeHTTP(w, r)
380		case ReleaseServiceUpdateReleaseAssetProcedure:
381			releaseServiceUpdateReleaseAssetHandler.ServeHTTP(w, r)
382		case ReleaseServiceDeleteReleaseAssetProcedure:
383			releaseServiceDeleteReleaseAssetHandler.ServeHTTP(w, r)
384		case ReleaseServiceDownloadReleaseAssetProcedure:
385			releaseServiceDownloadReleaseAssetHandler.ServeHTTP(w, r)
386		case ReleaseServiceListReleaseAssetsProcedure:
387			releaseServiceListReleaseAssetsHandler.ServeHTTP(w, r)
388		case ReleaseServiceGetReleaseUsageProcedure:
389			releaseServiceGetReleaseUsageHandler.ServeHTTP(w, r)
390		default:
391			http.NotFound(w, r)
392		}
393	})
394}
395
396// UnimplementedReleaseServiceHandler returns CodeUnimplemented from all methods.
397type UnimplementedReleaseServiceHandler struct{}
398
399func (UnimplementedReleaseServiceHandler) CreateRelease(context.Context, *connect.Request[ermite.CreateReleaseRequest]) (*connect.Response[ermite.CreateReleaseResponse], error) {
400	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.CreateRelease is not implemented"))
401}
402
403func (UnimplementedReleaseServiceHandler) GetRelease(context.Context, *connect.Request[ermite.GetReleaseRequest]) (*connect.Response[ermite.GetReleaseResponse], error) {
404	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.GetRelease is not implemented"))
405}
406
407func (UnimplementedReleaseServiceHandler) ListReleases(context.Context, *connect.Request[ermite.ListReleasesRequest]) (*connect.Response[ermite.ListReleasesResponse], error) {
408	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.ListReleases is not implemented"))
409}
410
411func (UnimplementedReleaseServiceHandler) UpdateRelease(context.Context, *connect.Request[ermite.UpdateReleaseRequest]) (*connect.Response[ermite.UpdateReleaseResponse], error) {
412	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.UpdateRelease is not implemented"))
413}
414
415func (UnimplementedReleaseServiceHandler) DeleteRelease(context.Context, *connect.Request[ermite.DeleteReleaseRequest]) (*connect.Response[ermite.DeleteReleaseResponse], error) {
416	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.DeleteRelease is not implemented"))
417}
418
419func (UnimplementedReleaseServiceHandler) UploadReleaseAsset(context.Context, *connect.ClientStream[ermite.UploadReleaseAssetRequest]) (*connect.Response[ermite.UploadReleaseAssetResponse], error) {
420	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.UploadReleaseAsset is not implemented"))
421}
422
423func (UnimplementedReleaseServiceHandler) UpdateReleaseAsset(context.Context, *connect.Request[ermite.UpdateReleaseAssetRequest]) (*connect.Response[ermite.UpdateReleaseAssetResponse], error) {
424	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.UpdateReleaseAsset is not implemented"))
425}
426
427func (UnimplementedReleaseServiceHandler) DeleteReleaseAsset(context.Context, *connect.Request[ermite.DeleteReleaseAssetRequest]) (*connect.Response[ermite.DeleteReleaseAssetResponse], error) {
428	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.DeleteReleaseAsset is not implemented"))
429}
430
431func (UnimplementedReleaseServiceHandler) DownloadReleaseAsset(context.Context, *connect.Request[ermite.DownloadReleaseAssetRequest], *connect.ServerStream[ermite.DownloadReleaseAssetResponse]) error {
432	return connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.DownloadReleaseAsset is not implemented"))
433}
434
435func (UnimplementedReleaseServiceHandler) ListReleaseAssets(context.Context, *connect.Request[ermite.ListReleaseAssetsRequest]) (*connect.Response[ermite.ListReleaseAssetsResponse], error) {
436	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.ListReleaseAssets is not implemented"))
437}
438
439func (UnimplementedReleaseServiceHandler) GetReleaseUsage(context.Context, *connect.Request[ermite.GetReleaseUsageRequest]) (*connect.Response[ermite.GetReleaseUsageResponse], error) {
440	return nil, connect.NewError(connect.CodeUnimplemented, errors.New("ermite.ReleaseService.GetReleaseUsage is not implemented"))
441}

Keyboard shortcuts

Single-key shortcuts are on. ctrl k and esc work whatever this says.

ctrl k :
go to a section, branch, tag, file or repository
?
this list
j k
move the row cursor down / up
enter
open the row under the cursor; on Files, a directory opens or closes in place
↑ ↓ ← → home end
in the file tree (focus on a row): previous / next row, close / open a directory or go to its parent / first entry, first / last row. They never open a file
l h
on Files: open a directory or a file / close a directory or go up to its parent, then to the parent page. Elsewhere: into the side panel (on a merge request, its files) / back to the content; there j k move between its controls
g g G
first / last row
/
filter the list; on Files, find a file anywhere in the repository (esc clears, enter opens the best match)
b
switch branch or tag
g s g f g c g b g m g i g r g a
tabs: summary, files, commits, branches & tags, merge requests, issues, releases, actions (when available)
g h
home
w
wide mode: use the whole width of the screen, or not (remembered)
y
copy a permalink pinned to the commit
d u x
diff: split / unified / collapse or expand all
e E
diff: the whole file in view / every file, with the lines the hunks hide
n
merge request: next note in the diff
esc
close a dialog, leave a field

Branches 2

Tags 18

↑↓ moveenter openesc close