Skip to content

Commit

Permalink
Add InfoService (#3)
Browse files Browse the repository at this point in the history
  • Loading branch information
bufdev authored Sep 28, 2024
1 parent 7a524b4 commit 2b4dc9e
Show file tree
Hide file tree
Showing 2 changed files with 102 additions and 0 deletions.
63 changes: 63 additions & 0 deletions buf/plugin/info/v1/info.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
// Copyright 2024 Buf Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package buf.plugin.info.v1;

import "buf/validate/validate.proto";

option go_package = "buf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go/buf/plugin/info/v1";

// Information about a plugin.
message Info {
// The url for the plugin.
//
// This typically is the source control repository that contains the plugin's implementation.
string url = 1 [(buf.validate.field).string.uri = true];
// The license of the plugin.
License license = 2;
// Documentation for a plugin.
Doc doc = 3;
}

// A plugin license.
message License {
// The SPDX license ID.
//
// See https://spdx.org/licenses.
string spdx_license_id = 1;
// The source of a license is either raw text, or a URL that contains the license.
oneof source {
option (buf.validate.oneof).required = true;

// The raw text of the license.
string text = 2;
// The url that contains the license
string url = 3 [(buf.validate.field).string.uri = true];
}
}

// Documentation for a plugin.
message Doc {
// A short string describing the plugin.
//
// This is required.
string short = 1 [(buf.validate.field).required = true];
// A long string providing more details on using the plugin.
//
// When producing documentation for the plugin, this will be concatenated with
// the value from short with a newline separating short and long.
string long = 2;
}
39 changes: 39 additions & 0 deletions buf/plugin/info/v1/info_service.proto
Original file line number Diff line number Diff line change
@@ -0,0 +1,39 @@
// Copyright 2024 Buf Technologies, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

syntax = "proto3";

package buf.plugin.info.v1;

import "buf/plugin/info/v1/info.proto";
import "buf/validate/validate.proto";

option go_package = "buf.build/gen/go/bufbuild/bufplugin/protocolbuffers/go/buf/plugin/info/v1";

// The service that returns information about the plugin.
service InfoService {
// GetInfo gets information about the plugin.
rpc GetInfo(GetInfoRequest) returns (GetInfoResponse) {
option idempotency_level = NO_SIDE_EFFECTS;
}
}

// A request to get information about a plugin.
message GetInfoRequest {}

// A response containing information about a plugin.
message GetInfoResponse {
// The information about the plugin.
Info info = 1 [(buf.validate.field).required = true];
}

0 comments on commit 2b4dc9e

Please sign in to comment.