Remove lure-api-server
This commit is contained in:
parent
be1d9be7a8
commit
02a6104fb0
|
@ -1,3 +0,0 @@
|
||||||
FROM alpine:latest
|
|
||||||
COPY lure-api-server /usr/bin/lure-api-server
|
|
||||||
ENTRYPOINT lure-api-server
|
|
|
@ -1,3 +0,0 @@
|
||||||
# lure-api-server
|
|
||||||
|
|
||||||
`lure-api-server` is the backend API server for lure-web, the web interface for LURE.
|
|
|
@ -1,166 +0,0 @@
|
||||||
/*
|
|
||||||
* LURE - Linux User REpository
|
|
||||||
* Copyright (C) 2023 Elara Musayelyan
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"io"
|
|
||||||
|
|
||||||
"github.com/twitchtv/twirp"
|
|
||||||
"go.elara.ws/lure/cmd/lure-api-server/internal/api"
|
|
||||||
"go.elara.ws/lure/internal/log"
|
|
||||||
"go.elara.ws/lure/pkg/search"
|
|
||||||
"golang.org/x/text/language"
|
|
||||||
)
|
|
||||||
|
|
||||||
type lureWebAPI struct{}
|
|
||||||
|
|
||||||
func (l lureWebAPI) Search(ctx context.Context, req *api.SearchRequest) (*api.SearchResponse, error) {
|
|
||||||
pkgs, err := search.Search(search.Options{
|
|
||||||
Filter: search.Filter(req.FilterType),
|
|
||||||
SortBy: search.SortBy(req.SortBy),
|
|
||||||
Limit: req.Limit,
|
|
||||||
Query: req.Query,
|
|
||||||
})
|
|
||||||
return &api.SearchResponse{Packages: searchPkgsToAPI(ctx, pkgs)}, err
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l lureWebAPI) GetPkg(ctx context.Context, req *api.GetPackageRequest) (*api.Package, error) {
|
|
||||||
pkg, err := search.GetPkg(req.Repository, req.Name)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
return searchPkgToAPI(ctx, pkg), nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (l lureWebAPI) GetBuildScript(ctx context.Context, req *api.GetBuildScriptRequest) (*api.GetBuildScriptResponse, error) {
|
|
||||||
r, err := search.GetScript(req.Repository, req.Name)
|
|
||||||
if err == search.ErrScriptNotFound {
|
|
||||||
return nil, twirp.NewError(twirp.NotFound, err.Error())
|
|
||||||
} else if err == search.ErrInvalidArgument {
|
|
||||||
return nil, twirp.NewError(twirp.InvalidArgument, err.Error())
|
|
||||||
} else if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
data, err := io.ReadAll(r)
|
|
||||||
if err != nil {
|
|
||||||
return nil, err
|
|
||||||
}
|
|
||||||
|
|
||||||
return &api.GetBuildScriptResponse{Script: string(data)}, nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func searchPkgsToAPI(ctx context.Context, pkgs []search.Package) []*api.Package {
|
|
||||||
out := make([]*api.Package, len(pkgs))
|
|
||||||
for i, pkg := range pkgs {
|
|
||||||
out[i] = searchPkgToAPI(ctx, pkg)
|
|
||||||
}
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|
||||||
func searchPkgToAPI(ctx context.Context, pkg search.Package) *api.Package {
|
|
||||||
return &api.Package{
|
|
||||||
Name: pkg.Name,
|
|
||||||
Repository: pkg.Repository,
|
|
||||||
Version: pkg.Version,
|
|
||||||
Release: int64(pkg.Release),
|
|
||||||
Epoch: ptr(int64(pkg.Epoch)),
|
|
||||||
Description: performTranslation(ctx, pkg.Description),
|
|
||||||
Homepage: performTranslation(ctx, pkg.Homepage),
|
|
||||||
Maintainer: performTranslation(ctx, pkg.Maintainer),
|
|
||||||
Architectures: pkg.Architectures,
|
|
||||||
Licenses: pkg.Licenses,
|
|
||||||
Provides: pkg.Provides,
|
|
||||||
Conflicts: pkg.Conflicts,
|
|
||||||
Replaces: pkg.Replaces,
|
|
||||||
Depends: mapToAPI(pkg.Depends),
|
|
||||||
BuildDepends: mapToAPI(pkg.BuildDepends),
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func ptr[T any](v T) *T {
|
|
||||||
return &v
|
|
||||||
}
|
|
||||||
|
|
||||||
func mapToAPI(m map[string][]string) map[string]*api.StringList {
|
|
||||||
out := make(map[string]*api.StringList, len(m))
|
|
||||||
for override, list := range m {
|
|
||||||
out[override] = &api.StringList{Entries: list}
|
|
||||||
}
|
|
||||||
return out
|
|
||||||
}
|
|
||||||
|
|
||||||
func performTranslation(ctx context.Context, v map[string]string) *string {
|
|
||||||
alVal := ctx.Value(acceptLanguageKey{})
|
|
||||||
langVal := ctx.Value(langParameterKey{})
|
|
||||||
|
|
||||||
if alVal == nil && langVal == nil {
|
|
||||||
val, ok := v[""]
|
|
||||||
if !ok {
|
|
||||||
return ptr("<unknown>")
|
|
||||||
}
|
|
||||||
return &val
|
|
||||||
}
|
|
||||||
|
|
||||||
al, _ := alVal.(string)
|
|
||||||
lang, _ := langVal.(string)
|
|
||||||
|
|
||||||
tags, _, err := language.ParseAcceptLanguage(al)
|
|
||||||
if err != nil {
|
|
||||||
log.Warn("Error parsing Accept-Language header").Err(err).Send()
|
|
||||||
}
|
|
||||||
|
|
||||||
var bases []string
|
|
||||||
if lang != "" {
|
|
||||||
langTag, err := language.Parse(lang)
|
|
||||||
if err != nil {
|
|
||||||
log.Warn("Error parsing lang parameter").Err(err).Send()
|
|
||||||
bases = getLangBases(tags)
|
|
||||||
} else {
|
|
||||||
bases = getLangBases(append([]language.Tag{langTag}, tags...))
|
|
||||||
}
|
|
||||||
} else {
|
|
||||||
bases = getLangBases(tags)
|
|
||||||
}
|
|
||||||
|
|
||||||
if len(bases) == 1 {
|
|
||||||
bases = []string{"en", ""}
|
|
||||||
}
|
|
||||||
|
|
||||||
for _, name := range bases {
|
|
||||||
val, ok := v[name]
|
|
||||||
if !ok {
|
|
||||||
continue
|
|
||||||
}
|
|
||||||
return &val
|
|
||||||
}
|
|
||||||
|
|
||||||
return ptr("<unknown>")
|
|
||||||
}
|
|
||||||
|
|
||||||
func getLangBases(langs []language.Tag) []string {
|
|
||||||
out := make([]string, len(langs)+1)
|
|
||||||
for i, lang := range langs {
|
|
||||||
base, _ := lang.Base()
|
|
||||||
out[i] = base.String()
|
|
||||||
}
|
|
||||||
out[len(out)-1] = ""
|
|
||||||
return out
|
|
||||||
}
|
|
File diff suppressed because one or more lines are too long
|
@ -1,58 +0,0 @@
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
_ "embed"
|
|
||||||
"net/http"
|
|
||||||
"net/url"
|
|
||||||
"strconv"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"github.com/go-chi/chi/v5"
|
|
||||||
"go.elara.ws/lure/pkg/search"
|
|
||||||
)
|
|
||||||
|
|
||||||
//go:embed badge-logo.txt
|
|
||||||
var logoData string
|
|
||||||
|
|
||||||
var _ http.HandlerFunc
|
|
||||||
|
|
||||||
func handleBadge() http.HandlerFunc {
|
|
||||||
return func(res http.ResponseWriter, req *http.Request) {
|
|
||||||
repo := chi.URLParam(req, "repo")
|
|
||||||
name := chi.URLParam(req, "pkg")
|
|
||||||
|
|
||||||
pkg, err := search.GetPkg(repo, name)
|
|
||||||
if err != nil {
|
|
||||||
http.Error(res, err.Error(), http.StatusInternalServerError)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
http.Redirect(res, req, genBadgeURL(pkg.Name, genVersion(pkg)), http.StatusFound)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func genVersion(pkg search.Package) string {
|
|
||||||
sb := strings.Builder{}
|
|
||||||
if pkg.Epoch != 0 {
|
|
||||||
sb.WriteString(strconv.Itoa(int(pkg.Epoch)))
|
|
||||||
sb.WriteByte(':')
|
|
||||||
}
|
|
||||||
|
|
||||||
sb.WriteString(pkg.Version)
|
|
||||||
|
|
||||||
if pkg.Release != 0 {
|
|
||||||
sb.WriteByte('-')
|
|
||||||
sb.WriteString(strconv.Itoa(pkg.Release))
|
|
||||||
}
|
|
||||||
return sb.String()
|
|
||||||
}
|
|
||||||
|
|
||||||
func genBadgeURL(pkgName, pkgVersion string) string {
|
|
||||||
v := url.Values{}
|
|
||||||
v.Set("label", pkgName)
|
|
||||||
v.Set("message", pkgVersion)
|
|
||||||
v.Set("logo", logoData)
|
|
||||||
v.Set("color", "blue")
|
|
||||||
u := &url.URL{Scheme: "https", Host: "img.shields.io", Path: "/static/v1", RawQuery: v.Encode()}
|
|
||||||
return u.String()
|
|
||||||
}
|
|
|
@ -1,14 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
CGO_ENABLED=0 GOARCH=amd64 GOOS=linux go build
|
|
||||||
docker buildx build --platform linux/amd64 --tag elara6331/lure-api-server:amd64 --no-cache .
|
|
||||||
|
|
||||||
CGO_ENABLED=0 GOARCH=arm64 GOOS=linux go build
|
|
||||||
docker buildx build --platform linux/arm64/v8 --tag elara6331/lure-api-server:arm64 --no-cache .
|
|
||||||
|
|
||||||
docker login
|
|
||||||
docker push elara6331/lure-api-server -a
|
|
||||||
|
|
||||||
docker manifest rm elara6331/lure-api-server:latest
|
|
||||||
docker manifest create elara6331/lure-api-server:latest --amend elara6331/lure-api-server:arm64 --amend elara6331/lure-api-server:amd64
|
|
||||||
docker manifest push elara6331/lure-api-server:latest
|
|
|
@ -1,22 +0,0 @@
|
||||||
/*
|
|
||||||
* LURE - Linux User REpository
|
|
||||||
* Copyright (C) 2023 Elara Musayelyan
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package api
|
|
||||||
|
|
||||||
//go:generate protoc --twirp_out=. lure.proto
|
|
||||||
//go:generate protoc --go_out=. lure.proto
|
|
|
@ -1,888 +0,0 @@
|
||||||
// Code generated by protoc-gen-go. DO NOT EDIT.
|
|
||||||
// versions:
|
|
||||||
// protoc-gen-go v1.31.0
|
|
||||||
// protoc v4.24.2
|
|
||||||
// source: lure.proto
|
|
||||||
|
|
||||||
package api
|
|
||||||
|
|
||||||
import (
|
|
||||||
reflect "reflect"
|
|
||||||
sync "sync"
|
|
||||||
|
|
||||||
protoreflect "google.golang.org/protobuf/reflect/protoreflect"
|
|
||||||
protoimpl "google.golang.org/protobuf/runtime/protoimpl"
|
|
||||||
)
|
|
||||||
|
|
||||||
const (
|
|
||||||
// Verify that this generated code is sufficiently up-to-date.
|
|
||||||
_ = protoimpl.EnforceVersion(20 - protoimpl.MinVersion)
|
|
||||||
// Verify that runtime/protoimpl is sufficiently up-to-date.
|
|
||||||
_ = protoimpl.EnforceVersion(protoimpl.MaxVersion - 20)
|
|
||||||
)
|
|
||||||
|
|
||||||
// SORT_BY represents possible things to sort packages by
|
|
||||||
type SORT_BY int32
|
|
||||||
|
|
||||||
const (
|
|
||||||
SORT_BY_UNSORTED SORT_BY = 0
|
|
||||||
SORT_BY_NAME SORT_BY = 1
|
|
||||||
SORT_BY_REPOSITORY SORT_BY = 2
|
|
||||||
SORT_BY_VERSION SORT_BY = 3
|
|
||||||
)
|
|
||||||
|
|
||||||
// Enum value maps for SORT_BY.
|
|
||||||
var (
|
|
||||||
SORT_BY_name = map[int32]string{
|
|
||||||
0: "UNSORTED",
|
|
||||||
1: "NAME",
|
|
||||||
2: "REPOSITORY",
|
|
||||||
3: "VERSION",
|
|
||||||
}
|
|
||||||
SORT_BY_value = map[string]int32{
|
|
||||||
"UNSORTED": 0,
|
|
||||||
"NAME": 1,
|
|
||||||
"REPOSITORY": 2,
|
|
||||||
"VERSION": 3,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (x SORT_BY) Enum() *SORT_BY {
|
|
||||||
p := new(SORT_BY)
|
|
||||||
*p = x
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x SORT_BY) String() string {
|
|
||||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (SORT_BY) Descriptor() protoreflect.EnumDescriptor {
|
|
||||||
return file_lure_proto_enumTypes[0].Descriptor()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (SORT_BY) Type() protoreflect.EnumType {
|
|
||||||
return &file_lure_proto_enumTypes[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x SORT_BY) Number() protoreflect.EnumNumber {
|
|
||||||
return protoreflect.EnumNumber(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use SORT_BY.Descriptor instead.
|
|
||||||
func (SORT_BY) EnumDescriptor() ([]byte, []int) {
|
|
||||||
return file_lure_proto_rawDescGZIP(), []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILTER_TYPE represents possible filters for packages
|
|
||||||
type FILTER_TYPE int32
|
|
||||||
|
|
||||||
const (
|
|
||||||
FILTER_TYPE_NO_FILTER FILTER_TYPE = 0
|
|
||||||
FILTER_TYPE_IN_REPOSITORY FILTER_TYPE = 1
|
|
||||||
FILTER_TYPE_SUPPORTS_ARCH FILTER_TYPE = 2
|
|
||||||
)
|
|
||||||
|
|
||||||
// Enum value maps for FILTER_TYPE.
|
|
||||||
var (
|
|
||||||
FILTER_TYPE_name = map[int32]string{
|
|
||||||
0: "NO_FILTER",
|
|
||||||
1: "IN_REPOSITORY",
|
|
||||||
2: "SUPPORTS_ARCH",
|
|
||||||
}
|
|
||||||
FILTER_TYPE_value = map[string]int32{
|
|
||||||
"NO_FILTER": 0,
|
|
||||||
"IN_REPOSITORY": 1,
|
|
||||||
"SUPPORTS_ARCH": 2,
|
|
||||||
}
|
|
||||||
)
|
|
||||||
|
|
||||||
func (x FILTER_TYPE) Enum() *FILTER_TYPE {
|
|
||||||
p := new(FILTER_TYPE)
|
|
||||||
*p = x
|
|
||||||
return p
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x FILTER_TYPE) String() string {
|
|
||||||
return protoimpl.X.EnumStringOf(x.Descriptor(), protoreflect.EnumNumber(x))
|
|
||||||
}
|
|
||||||
|
|
||||||
func (FILTER_TYPE) Descriptor() protoreflect.EnumDescriptor {
|
|
||||||
return file_lure_proto_enumTypes[1].Descriptor()
|
|
||||||
}
|
|
||||||
|
|
||||||
func (FILTER_TYPE) Type() protoreflect.EnumType {
|
|
||||||
return &file_lure_proto_enumTypes[1]
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x FILTER_TYPE) Number() protoreflect.EnumNumber {
|
|
||||||
return protoreflect.EnumNumber(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use FILTER_TYPE.Descriptor instead.
|
|
||||||
func (FILTER_TYPE) EnumDescriptor() ([]byte, []int) {
|
|
||||||
return file_lure_proto_rawDescGZIP(), []int{1}
|
|
||||||
}
|
|
||||||
|
|
||||||
// SearchRequest is a request to search for packages
|
|
||||||
type SearchRequest struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Query string `protobuf:"bytes,1,opt,name=query,proto3" json:"query,omitempty"`
|
|
||||||
Limit int64 `protobuf:"varint,2,opt,name=limit,proto3" json:"limit,omitempty"`
|
|
||||||
SortBy SORT_BY `protobuf:"varint,3,opt,name=sort_by,json=sortBy,proto3,enum=lure.SORT_BY" json:"sort_by,omitempty"`
|
|
||||||
FilterType FILTER_TYPE `protobuf:"varint,4,opt,name=filter_type,json=filterType,proto3,enum=lure.FILTER_TYPE" json:"filter_type,omitempty"`
|
|
||||||
FilterValue *string `protobuf:"bytes,5,opt,name=filter_value,json=filterValue,proto3,oneof" json:"filter_value,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SearchRequest) Reset() {
|
|
||||||
*x = SearchRequest{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_lure_proto_msgTypes[0]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SearchRequest) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*SearchRequest) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *SearchRequest) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_lure_proto_msgTypes[0]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use SearchRequest.ProtoReflect.Descriptor instead.
|
|
||||||
func (*SearchRequest) Descriptor() ([]byte, []int) {
|
|
||||||
return file_lure_proto_rawDescGZIP(), []int{0}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SearchRequest) GetQuery() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Query
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SearchRequest) GetLimit() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.Limit
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SearchRequest) GetSortBy() SORT_BY {
|
|
||||||
if x != nil {
|
|
||||||
return x.SortBy
|
|
||||||
}
|
|
||||||
return SORT_BY_UNSORTED
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SearchRequest) GetFilterType() FILTER_TYPE {
|
|
||||||
if x != nil {
|
|
||||||
return x.FilterType
|
|
||||||
}
|
|
||||||
return FILTER_TYPE_NO_FILTER
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SearchRequest) GetFilterValue() string {
|
|
||||||
if x != nil && x.FilterValue != nil {
|
|
||||||
return *x.FilterValue
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// StringList contains a list of strings
|
|
||||||
type StringList struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Entries []string `protobuf:"bytes,1,rep,name=entries,proto3" json:"entries,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *StringList) Reset() {
|
|
||||||
*x = StringList{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_lure_proto_msgTypes[1]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *StringList) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*StringList) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *StringList) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_lure_proto_msgTypes[1]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use StringList.ProtoReflect.Descriptor instead.
|
|
||||||
func (*StringList) Descriptor() ([]byte, []int) {
|
|
||||||
return file_lure_proto_rawDescGZIP(), []int{1}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *StringList) GetEntries() []string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Entries
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
// Package represents a LURE package
|
|
||||||
type Package struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
||||||
Repository string `protobuf:"bytes,2,opt,name=repository,proto3" json:"repository,omitempty"`
|
|
||||||
Version string `protobuf:"bytes,3,opt,name=version,proto3" json:"version,omitempty"`
|
|
||||||
Release int64 `protobuf:"varint,4,opt,name=release,proto3" json:"release,omitempty"`
|
|
||||||
Epoch *int64 `protobuf:"varint,5,opt,name=epoch,proto3,oneof" json:"epoch,omitempty"`
|
|
||||||
Description *string `protobuf:"bytes,6,opt,name=description,proto3,oneof" json:"description,omitempty"`
|
|
||||||
Homepage *string `protobuf:"bytes,7,opt,name=homepage,proto3,oneof" json:"homepage,omitempty"`
|
|
||||||
Maintainer *string `protobuf:"bytes,8,opt,name=maintainer,proto3,oneof" json:"maintainer,omitempty"`
|
|
||||||
Architectures []string `protobuf:"bytes,9,rep,name=architectures,proto3" json:"architectures,omitempty"`
|
|
||||||
Licenses []string `protobuf:"bytes,10,rep,name=licenses,proto3" json:"licenses,omitempty"`
|
|
||||||
Provides []string `protobuf:"bytes,11,rep,name=provides,proto3" json:"provides,omitempty"`
|
|
||||||
Conflicts []string `protobuf:"bytes,12,rep,name=conflicts,proto3" json:"conflicts,omitempty"`
|
|
||||||
Replaces []string `protobuf:"bytes,13,rep,name=replaces,proto3" json:"replaces,omitempty"`
|
|
||||||
Depends map[string]*StringList `protobuf:"bytes,14,rep,name=depends,proto3" json:"depends,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
|
||||||
BuildDepends map[string]*StringList `protobuf:"bytes,15,rep,name=build_depends,json=buildDepends,proto3" json:"build_depends,omitempty" protobuf_key:"bytes,1,opt,name=key,proto3" protobuf_val:"bytes,2,opt,name=value,proto3"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) Reset() {
|
|
||||||
*x = Package{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_lure_proto_msgTypes[2]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*Package) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *Package) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_lure_proto_msgTypes[2]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use Package.ProtoReflect.Descriptor instead.
|
|
||||||
func (*Package) Descriptor() ([]byte, []int) {
|
|
||||||
return file_lure_proto_rawDescGZIP(), []int{2}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetName() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Name
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetRepository() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Repository
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetVersion() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Version
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetRelease() int64 {
|
|
||||||
if x != nil {
|
|
||||||
return x.Release
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetEpoch() int64 {
|
|
||||||
if x != nil && x.Epoch != nil {
|
|
||||||
return *x.Epoch
|
|
||||||
}
|
|
||||||
return 0
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetDescription() string {
|
|
||||||
if x != nil && x.Description != nil {
|
|
||||||
return *x.Description
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetHomepage() string {
|
|
||||||
if x != nil && x.Homepage != nil {
|
|
||||||
return *x.Homepage
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetMaintainer() string {
|
|
||||||
if x != nil && x.Maintainer != nil {
|
|
||||||
return *x.Maintainer
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetArchitectures() []string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Architectures
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetLicenses() []string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Licenses
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetProvides() []string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Provides
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetConflicts() []string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Conflicts
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetReplaces() []string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Replaces
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetDepends() map[string]*StringList {
|
|
||||||
if x != nil {
|
|
||||||
return x.Depends
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *Package) GetBuildDepends() map[string]*StringList {
|
|
||||||
if x != nil {
|
|
||||||
return x.BuildDepends
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetPackageRequest struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
||||||
Repository string `protobuf:"bytes,2,opt,name=repository,proto3" json:"repository,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetPackageRequest) Reset() {
|
|
||||||
*x = GetPackageRequest{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_lure_proto_msgTypes[3]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetPackageRequest) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*GetPackageRequest) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *GetPackageRequest) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_lure_proto_msgTypes[3]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use GetPackageRequest.ProtoReflect.Descriptor instead.
|
|
||||||
func (*GetPackageRequest) Descriptor() ([]byte, []int) {
|
|
||||||
return file_lure_proto_rawDescGZIP(), []int{3}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetPackageRequest) GetName() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Name
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetPackageRequest) GetRepository() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Repository
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
// SearchResponse contains returned packages
|
|
||||||
type SearchResponse struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Packages []*Package `protobuf:"bytes,1,rep,name=packages,proto3" json:"packages,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SearchResponse) Reset() {
|
|
||||||
*x = SearchResponse{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_lure_proto_msgTypes[4]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SearchResponse) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*SearchResponse) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *SearchResponse) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_lure_proto_msgTypes[4]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use SearchResponse.ProtoReflect.Descriptor instead.
|
|
||||||
func (*SearchResponse) Descriptor() ([]byte, []int) {
|
|
||||||
return file_lure_proto_rawDescGZIP(), []int{4}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *SearchResponse) GetPackages() []*Package {
|
|
||||||
if x != nil {
|
|
||||||
return x.Packages
|
|
||||||
}
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetBuildScriptRequest struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Name string `protobuf:"bytes,1,opt,name=name,proto3" json:"name,omitempty"`
|
|
||||||
Repository string `protobuf:"bytes,2,opt,name=repository,proto3" json:"repository,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetBuildScriptRequest) Reset() {
|
|
||||||
*x = GetBuildScriptRequest{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_lure_proto_msgTypes[5]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetBuildScriptRequest) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*GetBuildScriptRequest) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *GetBuildScriptRequest) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_lure_proto_msgTypes[5]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use GetBuildScriptRequest.ProtoReflect.Descriptor instead.
|
|
||||||
func (*GetBuildScriptRequest) Descriptor() ([]byte, []int) {
|
|
||||||
return file_lure_proto_rawDescGZIP(), []int{5}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetBuildScriptRequest) GetName() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Name
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetBuildScriptRequest) GetRepository() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Repository
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
type GetBuildScriptResponse struct {
|
|
||||||
state protoimpl.MessageState
|
|
||||||
sizeCache protoimpl.SizeCache
|
|
||||||
unknownFields protoimpl.UnknownFields
|
|
||||||
|
|
||||||
Script string `protobuf:"bytes,1,opt,name=script,proto3" json:"script,omitempty"`
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetBuildScriptResponse) Reset() {
|
|
||||||
*x = GetBuildScriptResponse{}
|
|
||||||
if protoimpl.UnsafeEnabled {
|
|
||||||
mi := &file_lure_proto_msgTypes[6]
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetBuildScriptResponse) String() string {
|
|
||||||
return protoimpl.X.MessageStringOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
func (*GetBuildScriptResponse) ProtoMessage() {}
|
|
||||||
|
|
||||||
func (x *GetBuildScriptResponse) ProtoReflect() protoreflect.Message {
|
|
||||||
mi := &file_lure_proto_msgTypes[6]
|
|
||||||
if protoimpl.UnsafeEnabled && x != nil {
|
|
||||||
ms := protoimpl.X.MessageStateOf(protoimpl.Pointer(x))
|
|
||||||
if ms.LoadMessageInfo() == nil {
|
|
||||||
ms.StoreMessageInfo(mi)
|
|
||||||
}
|
|
||||||
return ms
|
|
||||||
}
|
|
||||||
return mi.MessageOf(x)
|
|
||||||
}
|
|
||||||
|
|
||||||
// Deprecated: Use GetBuildScriptResponse.ProtoReflect.Descriptor instead.
|
|
||||||
func (*GetBuildScriptResponse) Descriptor() ([]byte, []int) {
|
|
||||||
return file_lure_proto_rawDescGZIP(), []int{6}
|
|
||||||
}
|
|
||||||
|
|
||||||
func (x *GetBuildScriptResponse) GetScript() string {
|
|
||||||
if x != nil {
|
|
||||||
return x.Script
|
|
||||||
}
|
|
||||||
return ""
|
|
||||||
}
|
|
||||||
|
|
||||||
var File_lure_proto protoreflect.FileDescriptor
|
|
||||||
|
|
||||||
var file_lure_proto_rawDesc = []byte{
|
|
||||||
0x0a, 0x0a, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x12, 0x04, 0x6c, 0x75,
|
|
||||||
0x72, 0x65, 0x22, 0xd0, 0x01, 0x0a, 0x0d, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71,
|
|
||||||
0x75, 0x65, 0x73, 0x74, 0x12, 0x14, 0x0a, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x18, 0x01, 0x20,
|
|
||||||
0x01, 0x28, 0x09, 0x52, 0x05, 0x71, 0x75, 0x65, 0x72, 0x79, 0x12, 0x14, 0x0a, 0x05, 0x6c, 0x69,
|
|
||||||
0x6d, 0x69, 0x74, 0x18, 0x02, 0x20, 0x01, 0x28, 0x03, 0x52, 0x05, 0x6c, 0x69, 0x6d, 0x69, 0x74,
|
|
||||||
0x12, 0x26, 0x0a, 0x07, 0x73, 0x6f, 0x72, 0x74, 0x5f, 0x62, 0x79, 0x18, 0x03, 0x20, 0x01, 0x28,
|
|
||||||
0x0e, 0x32, 0x0d, 0x2e, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x4f, 0x52, 0x54, 0x5f, 0x42, 0x59,
|
|
||||||
0x52, 0x06, 0x73, 0x6f, 0x72, 0x74, 0x42, 0x79, 0x12, 0x32, 0x0a, 0x0b, 0x66, 0x69, 0x6c, 0x74,
|
|
||||||
0x65, 0x72, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x0e, 0x32, 0x11, 0x2e,
|
|
||||||
0x6c, 0x75, 0x72, 0x65, 0x2e, 0x46, 0x49, 0x4c, 0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45,
|
|
||||||
0x52, 0x0a, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x54, 0x79, 0x70, 0x65, 0x12, 0x26, 0x0a, 0x0c,
|
|
||||||
0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x05, 0x20, 0x01,
|
|
||||||
0x28, 0x09, 0x48, 0x00, 0x52, 0x0b, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x56, 0x61, 0x6c, 0x75,
|
|
||||||
0x65, 0x88, 0x01, 0x01, 0x42, 0x0f, 0x0a, 0x0d, 0x5f, 0x66, 0x69, 0x6c, 0x74, 0x65, 0x72, 0x5f,
|
|
||||||
0x76, 0x61, 0x6c, 0x75, 0x65, 0x22, 0x26, 0x0a, 0x0a, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c,
|
|
||||||
0x69, 0x73, 0x74, 0x12, 0x18, 0x0a, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x18, 0x01,
|
|
||||||
0x20, 0x03, 0x28, 0x09, 0x52, 0x07, 0x65, 0x6e, 0x74, 0x72, 0x69, 0x65, 0x73, 0x22, 0xe4, 0x05,
|
|
||||||
0x0a, 0x07, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
|
|
||||||
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a,
|
|
||||||
0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
||||||
0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x12, 0x18, 0x0a,
|
|
||||||
0x07, 0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x18, 0x03, 0x20, 0x01, 0x28, 0x09, 0x52, 0x07,
|
|
||||||
0x76, 0x65, 0x72, 0x73, 0x69, 0x6f, 0x6e, 0x12, 0x18, 0x0a, 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61,
|
|
||||||
0x73, 0x65, 0x18, 0x04, 0x20, 0x01, 0x28, 0x03, 0x52, 0x07, 0x72, 0x65, 0x6c, 0x65, 0x61, 0x73,
|
|
||||||
0x65, 0x12, 0x19, 0x0a, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x18, 0x05, 0x20, 0x01, 0x28, 0x03,
|
|
||||||
0x48, 0x00, 0x52, 0x05, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x88, 0x01, 0x01, 0x12, 0x25, 0x0a, 0x0b,
|
|
||||||
0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x18, 0x06, 0x20, 0x01, 0x28,
|
|
||||||
0x09, 0x48, 0x01, 0x52, 0x0b, 0x64, 0x65, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e,
|
|
||||||
0x88, 0x01, 0x01, 0x12, 0x1f, 0x0a, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67, 0x65, 0x18,
|
|
||||||
0x07, 0x20, 0x01, 0x28, 0x09, 0x48, 0x02, 0x52, 0x08, 0x68, 0x6f, 0x6d, 0x65, 0x70, 0x61, 0x67,
|
|
||||||
0x65, 0x88, 0x01, 0x01, 0x12, 0x23, 0x0a, 0x0a, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61, 0x69, 0x6e,
|
|
||||||
0x65, 0x72, 0x18, 0x08, 0x20, 0x01, 0x28, 0x09, 0x48, 0x03, 0x52, 0x0a, 0x6d, 0x61, 0x69, 0x6e,
|
|
||||||
0x74, 0x61, 0x69, 0x6e, 0x65, 0x72, 0x88, 0x01, 0x01, 0x12, 0x24, 0x0a, 0x0d, 0x61, 0x72, 0x63,
|
|
||||||
0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x18, 0x09, 0x20, 0x03, 0x28, 0x09,
|
|
||||||
0x52, 0x0d, 0x61, 0x72, 0x63, 0x68, 0x69, 0x74, 0x65, 0x63, 0x74, 0x75, 0x72, 0x65, 0x73, 0x12,
|
|
||||||
0x1a, 0x0a, 0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x18, 0x0a, 0x20, 0x03, 0x28,
|
|
||||||
0x09, 0x52, 0x08, 0x6c, 0x69, 0x63, 0x65, 0x6e, 0x73, 0x65, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x70,
|
|
||||||
0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x18, 0x0b, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x70,
|
|
||||||
0x72, 0x6f, 0x76, 0x69, 0x64, 0x65, 0x73, 0x12, 0x1c, 0x0a, 0x09, 0x63, 0x6f, 0x6e, 0x66, 0x6c,
|
|
||||||
0x69, 0x63, 0x74, 0x73, 0x18, 0x0c, 0x20, 0x03, 0x28, 0x09, 0x52, 0x09, 0x63, 0x6f, 0x6e, 0x66,
|
|
||||||
0x6c, 0x69, 0x63, 0x74, 0x73, 0x12, 0x1a, 0x0a, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65,
|
|
||||||
0x73, 0x18, 0x0d, 0x20, 0x03, 0x28, 0x09, 0x52, 0x08, 0x72, 0x65, 0x70, 0x6c, 0x61, 0x63, 0x65,
|
|
||||||
0x73, 0x12, 0x34, 0x0a, 0x07, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x0e, 0x20, 0x03,
|
|
||||||
0x28, 0x0b, 0x32, 0x1a, 0x2e, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67,
|
|
||||||
0x65, 0x2e, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52, 0x07,
|
|
||||||
0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x12, 0x44, 0x0a, 0x0d, 0x62, 0x75, 0x69, 0x6c, 0x64,
|
|
||||||
0x5f, 0x64, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x18, 0x0f, 0x20, 0x03, 0x28, 0x0b, 0x32, 0x1f,
|
|
||||||
0x2e, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x2e, 0x42, 0x75,
|
|
||||||
0x69, 0x6c, 0x64, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x52,
|
|
||||||
0x0c, 0x62, 0x75, 0x69, 0x6c, 0x64, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x1a, 0x4c, 0x0a,
|
|
||||||
0x0c, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79, 0x12, 0x10, 0x0a,
|
|
||||||
0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b, 0x65, 0x79, 0x12,
|
|
||||||
0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28, 0x0b, 0x32, 0x10,
|
|
||||||
0x2e, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c, 0x69, 0x73, 0x74,
|
|
||||||
0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x1a, 0x51, 0x0a, 0x11, 0x42,
|
|
||||||
0x75, 0x69, 0x6c, 0x64, 0x44, 0x65, 0x70, 0x65, 0x6e, 0x64, 0x73, 0x45, 0x6e, 0x74, 0x72, 0x79,
|
|
||||||
0x12, 0x10, 0x0a, 0x03, 0x6b, 0x65, 0x79, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x03, 0x6b,
|
|
||||||
0x65, 0x79, 0x12, 0x26, 0x0a, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
||||||
0x0b, 0x32, 0x10, 0x2e, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x74, 0x72, 0x69, 0x6e, 0x67, 0x4c,
|
|
||||||
0x69, 0x73, 0x74, 0x52, 0x05, 0x76, 0x61, 0x6c, 0x75, 0x65, 0x3a, 0x02, 0x38, 0x01, 0x42, 0x08,
|
|
||||||
0x0a, 0x06, 0x5f, 0x65, 0x70, 0x6f, 0x63, 0x68, 0x42, 0x0e, 0x0a, 0x0c, 0x5f, 0x64, 0x65, 0x73,
|
|
||||||
0x63, 0x72, 0x69, 0x70, 0x74, 0x69, 0x6f, 0x6e, 0x42, 0x0b, 0x0a, 0x09, 0x5f, 0x68, 0x6f, 0x6d,
|
|
||||||
0x65, 0x70, 0x61, 0x67, 0x65, 0x42, 0x0d, 0x0a, 0x0b, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x74, 0x61,
|
|
||||||
0x69, 0x6e, 0x65, 0x72, 0x22, 0x47, 0x0a, 0x11, 0x47, 0x65, 0x74, 0x50, 0x61, 0x63, 0x6b, 0x61,
|
|
||||||
0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d,
|
|
||||||
0x65, 0x18, 0x01, 0x20, 0x01, 0x28, 0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a,
|
|
||||||
0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28,
|
|
||||||
0x09, 0x52, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x3b, 0x0a,
|
|
||||||
0x0e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12,
|
|
||||||
0x29, 0x0a, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x18, 0x01, 0x20, 0x03, 0x28,
|
|
||||||
0x0b, 0x32, 0x0d, 0x2e, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65,
|
|
||||||
0x52, 0x08, 0x70, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x73, 0x22, 0x4b, 0x0a, 0x15, 0x47, 0x65,
|
|
||||||
0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75,
|
|
||||||
0x65, 0x73, 0x74, 0x12, 0x12, 0x0a, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x18, 0x01, 0x20, 0x01, 0x28,
|
|
||||||
0x09, 0x52, 0x04, 0x6e, 0x61, 0x6d, 0x65, 0x12, 0x1e, 0x0a, 0x0a, 0x72, 0x65, 0x70, 0x6f, 0x73,
|
|
||||||
0x69, 0x74, 0x6f, 0x72, 0x79, 0x18, 0x02, 0x20, 0x01, 0x28, 0x09, 0x52, 0x0a, 0x72, 0x65, 0x70,
|
|
||||||
0x6f, 0x73, 0x69, 0x74, 0x6f, 0x72, 0x79, 0x22, 0x30, 0x0a, 0x16, 0x47, 0x65, 0x74, 0x42, 0x75,
|
|
||||||
0x69, 0x6c, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73,
|
|
||||||
0x65, 0x12, 0x16, 0x0a, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x18, 0x01, 0x20, 0x01, 0x28,
|
|
||||||
0x09, 0x52, 0x06, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74, 0x2a, 0x3e, 0x0a, 0x07, 0x53, 0x4f, 0x52,
|
|
||||||
0x54, 0x5f, 0x42, 0x59, 0x12, 0x0c, 0x0a, 0x08, 0x55, 0x4e, 0x53, 0x4f, 0x52, 0x54, 0x45, 0x44,
|
|
||||||
0x10, 0x00, 0x12, 0x08, 0x0a, 0x04, 0x4e, 0x41, 0x4d, 0x45, 0x10, 0x01, 0x12, 0x0e, 0x0a, 0x0a,
|
|
||||||
0x52, 0x45, 0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x02, 0x12, 0x0b, 0x0a, 0x07,
|
|
||||||
0x56, 0x45, 0x52, 0x53, 0x49, 0x4f, 0x4e, 0x10, 0x03, 0x2a, 0x42, 0x0a, 0x0b, 0x46, 0x49, 0x4c,
|
|
||||||
0x54, 0x45, 0x52, 0x5f, 0x54, 0x59, 0x50, 0x45, 0x12, 0x0d, 0x0a, 0x09, 0x4e, 0x4f, 0x5f, 0x46,
|
|
||||||
0x49, 0x4c, 0x54, 0x45, 0x52, 0x10, 0x00, 0x12, 0x11, 0x0a, 0x0d, 0x49, 0x4e, 0x5f, 0x52, 0x45,
|
|
||||||
0x50, 0x4f, 0x53, 0x49, 0x54, 0x4f, 0x52, 0x59, 0x10, 0x01, 0x12, 0x11, 0x0a, 0x0d, 0x53, 0x55,
|
|
||||||
0x50, 0x50, 0x4f, 0x52, 0x54, 0x53, 0x5f, 0x41, 0x52, 0x43, 0x48, 0x10, 0x02, 0x32, 0xb9, 0x01,
|
|
||||||
0x0a, 0x03, 0x41, 0x50, 0x49, 0x12, 0x33, 0x0a, 0x06, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x12,
|
|
||||||
0x13, 0x2e, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72, 0x63, 0x68, 0x52, 0x65, 0x71,
|
|
||||||
0x75, 0x65, 0x73, 0x74, 0x1a, 0x14, 0x2e, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x53, 0x65, 0x61, 0x72,
|
|
||||||
0x63, 0x68, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x12, 0x30, 0x0a, 0x06, 0x47, 0x65,
|
|
||||||
0x74, 0x50, 0x6b, 0x67, 0x12, 0x17, 0x2e, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x50,
|
|
||||||
0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x0d, 0x2e,
|
|
||||||
0x6c, 0x75, 0x72, 0x65, 0x2e, 0x50, 0x61, 0x63, 0x6b, 0x61, 0x67, 0x65, 0x12, 0x4b, 0x0a, 0x0e,
|
|
||||||
0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70, 0x74, 0x12, 0x1b,
|
|
||||||
0x2e, 0x6c, 0x75, 0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x63,
|
|
||||||
0x72, 0x69, 0x70, 0x74, 0x52, 0x65, 0x71, 0x75, 0x65, 0x73, 0x74, 0x1a, 0x1c, 0x2e, 0x6c, 0x75,
|
|
||||||
0x72, 0x65, 0x2e, 0x47, 0x65, 0x74, 0x42, 0x75, 0x69, 0x6c, 0x64, 0x53, 0x63, 0x72, 0x69, 0x70,
|
|
||||||
0x74, 0x52, 0x65, 0x73, 0x70, 0x6f, 0x6e, 0x73, 0x65, 0x42, 0x08, 0x5a, 0x06, 0x2e, 0x2e, 0x2f,
|
|
||||||
0x61, 0x70, 0x69, 0x62, 0x06, 0x70, 0x72, 0x6f, 0x74, 0x6f, 0x33,
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
file_lure_proto_rawDescOnce sync.Once
|
|
||||||
file_lure_proto_rawDescData = file_lure_proto_rawDesc
|
|
||||||
)
|
|
||||||
|
|
||||||
func file_lure_proto_rawDescGZIP() []byte {
|
|
||||||
file_lure_proto_rawDescOnce.Do(func() {
|
|
||||||
file_lure_proto_rawDescData = protoimpl.X.CompressGZIP(file_lure_proto_rawDescData)
|
|
||||||
})
|
|
||||||
return file_lure_proto_rawDescData
|
|
||||||
}
|
|
||||||
|
|
||||||
var (
|
|
||||||
file_lure_proto_enumTypes = make([]protoimpl.EnumInfo, 2)
|
|
||||||
file_lure_proto_msgTypes = make([]protoimpl.MessageInfo, 9)
|
|
||||||
file_lure_proto_goTypes = []interface{}{
|
|
||||||
(SORT_BY)(0), // 0: lure.SORT_BY
|
|
||||||
(FILTER_TYPE)(0), // 1: lure.FILTER_TYPE
|
|
||||||
(*SearchRequest)(nil), // 2: lure.SearchRequest
|
|
||||||
(*StringList)(nil), // 3: lure.StringList
|
|
||||||
(*Package)(nil), // 4: lure.Package
|
|
||||||
(*GetPackageRequest)(nil), // 5: lure.GetPackageRequest
|
|
||||||
(*SearchResponse)(nil), // 6: lure.SearchResponse
|
|
||||||
(*GetBuildScriptRequest)(nil), // 7: lure.GetBuildScriptRequest
|
|
||||||
(*GetBuildScriptResponse)(nil), // 8: lure.GetBuildScriptResponse
|
|
||||||
nil, // 9: lure.Package.DependsEntry
|
|
||||||
nil, // 10: lure.Package.BuildDependsEntry
|
|
||||||
}
|
|
||||||
)
|
|
||||||
var file_lure_proto_depIdxs = []int32{
|
|
||||||
0, // 0: lure.SearchRequest.sort_by:type_name -> lure.SORT_BY
|
|
||||||
1, // 1: lure.SearchRequest.filter_type:type_name -> lure.FILTER_TYPE
|
|
||||||
9, // 2: lure.Package.depends:type_name -> lure.Package.DependsEntry
|
|
||||||
10, // 3: lure.Package.build_depends:type_name -> lure.Package.BuildDependsEntry
|
|
||||||
4, // 4: lure.SearchResponse.packages:type_name -> lure.Package
|
|
||||||
3, // 5: lure.Package.DependsEntry.value:type_name -> lure.StringList
|
|
||||||
3, // 6: lure.Package.BuildDependsEntry.value:type_name -> lure.StringList
|
|
||||||
2, // 7: lure.API.Search:input_type -> lure.SearchRequest
|
|
||||||
5, // 8: lure.API.GetPkg:input_type -> lure.GetPackageRequest
|
|
||||||
7, // 9: lure.API.GetBuildScript:input_type -> lure.GetBuildScriptRequest
|
|
||||||
6, // 10: lure.API.Search:output_type -> lure.SearchResponse
|
|
||||||
4, // 11: lure.API.GetPkg:output_type -> lure.Package
|
|
||||||
8, // 12: lure.API.GetBuildScript:output_type -> lure.GetBuildScriptResponse
|
|
||||||
10, // [10:13] is the sub-list for method output_type
|
|
||||||
7, // [7:10] is the sub-list for method input_type
|
|
||||||
7, // [7:7] is the sub-list for extension type_name
|
|
||||||
7, // [7:7] is the sub-list for extension extendee
|
|
||||||
0, // [0:7] is the sub-list for field type_name
|
|
||||||
}
|
|
||||||
|
|
||||||
func init() { file_lure_proto_init() }
|
|
||||||
func file_lure_proto_init() {
|
|
||||||
if File_lure_proto != nil {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
if !protoimpl.UnsafeEnabled {
|
|
||||||
file_lure_proto_msgTypes[0].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*SearchRequest); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_lure_proto_msgTypes[1].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*StringList); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_lure_proto_msgTypes[2].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*Package); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_lure_proto_msgTypes[3].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*GetPackageRequest); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_lure_proto_msgTypes[4].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*SearchResponse); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_lure_proto_msgTypes[5].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*GetBuildScriptRequest); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_lure_proto_msgTypes[6].Exporter = func(v interface{}, i int) interface{} {
|
|
||||||
switch v := v.(*GetBuildScriptResponse); i {
|
|
||||||
case 0:
|
|
||||||
return &v.state
|
|
||||||
case 1:
|
|
||||||
return &v.sizeCache
|
|
||||||
case 2:
|
|
||||||
return &v.unknownFields
|
|
||||||
default:
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
file_lure_proto_msgTypes[0].OneofWrappers = []interface{}{}
|
|
||||||
file_lure_proto_msgTypes[2].OneofWrappers = []interface{}{}
|
|
||||||
type x struct{}
|
|
||||||
out := protoimpl.TypeBuilder{
|
|
||||||
File: protoimpl.DescBuilder{
|
|
||||||
GoPackagePath: reflect.TypeOf(x{}).PkgPath(),
|
|
||||||
RawDescriptor: file_lure_proto_rawDesc,
|
|
||||||
NumEnums: 2,
|
|
||||||
NumMessages: 9,
|
|
||||||
NumExtensions: 0,
|
|
||||||
NumServices: 1,
|
|
||||||
},
|
|
||||||
GoTypes: file_lure_proto_goTypes,
|
|
||||||
DependencyIndexes: file_lure_proto_depIdxs,
|
|
||||||
EnumInfos: file_lure_proto_enumTypes,
|
|
||||||
MessageInfos: file_lure_proto_msgTypes,
|
|
||||||
}.Build()
|
|
||||||
File_lure_proto = out.File
|
|
||||||
file_lure_proto_rawDesc = nil
|
|
||||||
file_lure_proto_goTypes = nil
|
|
||||||
file_lure_proto_depIdxs = nil
|
|
||||||
}
|
|
|
@ -1,82 +0,0 @@
|
||||||
syntax = "proto3";
|
|
||||||
package lure;
|
|
||||||
|
|
||||||
// Slight hack to provide protoc with a package name
|
|
||||||
option go_package = "../api";
|
|
||||||
|
|
||||||
// SORT_BY represents possible things to sort packages by
|
|
||||||
enum SORT_BY {
|
|
||||||
UNSORTED = 0;
|
|
||||||
NAME = 1;
|
|
||||||
REPOSITORY = 2;
|
|
||||||
VERSION = 3;
|
|
||||||
}
|
|
||||||
|
|
||||||
// FILTER_TYPE represents possible filters for packages
|
|
||||||
enum FILTER_TYPE {
|
|
||||||
NO_FILTER = 0;
|
|
||||||
IN_REPOSITORY = 1;
|
|
||||||
SUPPORTS_ARCH = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// SearchRequest is a request to search for packages
|
|
||||||
message SearchRequest {
|
|
||||||
string query = 1;
|
|
||||||
int64 limit = 2;
|
|
||||||
SORT_BY sort_by = 3;
|
|
||||||
FILTER_TYPE filter_type = 4;
|
|
||||||
optional string filter_value = 5;
|
|
||||||
}
|
|
||||||
|
|
||||||
// StringList contains a list of strings
|
|
||||||
message StringList {
|
|
||||||
repeated string entries = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Package represents a LURE package
|
|
||||||
message Package {
|
|
||||||
string name = 1;
|
|
||||||
string repository = 2;
|
|
||||||
string version = 3;
|
|
||||||
int64 release = 4;
|
|
||||||
optional int64 epoch = 5;
|
|
||||||
optional string description = 6;
|
|
||||||
optional string homepage = 7;
|
|
||||||
optional string maintainer = 8;
|
|
||||||
repeated string architectures = 9;
|
|
||||||
repeated string licenses = 10;
|
|
||||||
repeated string provides = 11;
|
|
||||||
repeated string conflicts = 12;
|
|
||||||
repeated string replaces = 13;
|
|
||||||
map<string, StringList> depends = 14;
|
|
||||||
map<string, StringList> build_depends = 15;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetPackageRequest {
|
|
||||||
string name = 1;
|
|
||||||
string repository = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
// SearchResponse contains returned packages
|
|
||||||
message SearchResponse {
|
|
||||||
repeated Package packages = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetBuildScriptRequest {
|
|
||||||
string name = 1;
|
|
||||||
string repository = 2;
|
|
||||||
}
|
|
||||||
|
|
||||||
message GetBuildScriptResponse {
|
|
||||||
string script = 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Web is the LURE Web service
|
|
||||||
service API {
|
|
||||||
// Search searches through LURE packages in the database
|
|
||||||
rpc Search(SearchRequest) returns (SearchResponse);
|
|
||||||
// GetPkg gets a single LURE package from the database
|
|
||||||
rpc GetPkg(GetPackageRequest) returns (Package);
|
|
||||||
// GetBuildScript returns the build script for the given package
|
|
||||||
rpc GetBuildScript(GetBuildScriptRequest) returns (GetBuildScriptResponse);
|
|
||||||
}
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,118 +0,0 @@
|
||||||
/*
|
|
||||||
* LURE - Linux User REpository
|
|
||||||
* Copyright (C) 2023 Elara Musayelyan
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"flag"
|
|
||||||
"net"
|
|
||||||
"net/http"
|
|
||||||
"os"
|
|
||||||
|
|
||||||
"github.com/go-chi/chi/v5"
|
|
||||||
"github.com/twitchtv/twirp"
|
|
||||||
"go.elara.ws/logger"
|
|
||||||
"go.elara.ws/lure/cmd/lure-api-server/internal/api"
|
|
||||||
"go.elara.ws/lure/internal/log"
|
|
||||||
"go.elara.ws/lure/pkg/repos"
|
|
||||||
)
|
|
||||||
|
|
||||||
func init() {
|
|
||||||
log.Logger = logger.NewPretty(os.Stderr)
|
|
||||||
}
|
|
||||||
|
|
||||||
func main() {
|
|
||||||
ctx := context.Background()
|
|
||||||
|
|
||||||
addr := flag.String("a", ":8080", "Listen address for API server")
|
|
||||||
logFile := flag.String("l", "", "Output file for JSON log")
|
|
||||||
flag.Parse()
|
|
||||||
|
|
||||||
if *logFile != "" {
|
|
||||||
fl, err := os.Create(*logFile)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error creating log file").Err(err).Send()
|
|
||||||
}
|
|
||||||
defer fl.Close()
|
|
||||||
|
|
||||||
log.Logger = logger.NewMulti(log.Logger, logger.NewJSON(fl))
|
|
||||||
}
|
|
||||||
|
|
||||||
err := repos.Pull(ctx, nil)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error pulling repositories").Err(err).Send()
|
|
||||||
}
|
|
||||||
|
|
||||||
sigCh := make(chan struct{}, 200)
|
|
||||||
go repoPullWorker(ctx, sigCh)
|
|
||||||
|
|
||||||
apiServer := api.NewAPIServer(
|
|
||||||
lureWebAPI{},
|
|
||||||
twirp.WithServerPathPrefix(""),
|
|
||||||
)
|
|
||||||
|
|
||||||
r := chi.NewRouter()
|
|
||||||
r.With(allowAllCORSHandler, withAcceptLanguage).Handle("/*", apiServer)
|
|
||||||
r.Post("/webhook", handleWebhook(sigCh))
|
|
||||||
r.Get("/badge/{repo}/{pkg}", handleBadge())
|
|
||||||
|
|
||||||
ln, err := net.Listen("tcp", *addr)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error starting listener").Err(err).Send()
|
|
||||||
}
|
|
||||||
|
|
||||||
log.Info("Starting HTTP API server").Str("addr", ln.Addr().String()).Send()
|
|
||||||
|
|
||||||
err = http.Serve(ln, r)
|
|
||||||
if err != nil {
|
|
||||||
log.Fatal("Error while running server").Err(err).Send()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func allowAllCORSHandler(h http.Handler) http.Handler {
|
|
||||||
return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
|
||||||
res.Header().Set("Access-Control-Allow-Origin", "*")
|
|
||||||
res.Header().Set("Access-Control-Allow-Headers", "*")
|
|
||||||
if req.Method == http.MethodOptions {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
h.ServeHTTP(res, req)
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
type (
|
|
||||||
acceptLanguageKey struct{}
|
|
||||||
langParameterKey struct{}
|
|
||||||
)
|
|
||||||
|
|
||||||
func withAcceptLanguage(h http.Handler) http.Handler {
|
|
||||||
return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
|
||||||
ctx := req.Context()
|
|
||||||
|
|
||||||
langs := req.Header.Get("Accept-Language")
|
|
||||||
ctx = context.WithValue(ctx, acceptLanguageKey{}, langs)
|
|
||||||
|
|
||||||
lang := req.URL.Query().Get("lang")
|
|
||||||
ctx = context.WithValue(ctx, langParameterKey{}, lang)
|
|
||||||
|
|
||||||
req = req.WithContext(ctx)
|
|
||||||
|
|
||||||
h.ServeHTTP(res, req)
|
|
||||||
})
|
|
||||||
}
|
|
|
@ -1,98 +0,0 @@
|
||||||
/*
|
|
||||||
* LURE - Linux User REpository
|
|
||||||
* Copyright (C) 2023 Elara Musayelyan
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU General Public License as published by
|
|
||||||
* the Free Software Foundation, either version 3 of the License, or
|
|
||||||
* (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
package main
|
|
||||||
|
|
||||||
import (
|
|
||||||
"context"
|
|
||||||
"crypto/hmac"
|
|
||||||
"crypto/sha256"
|
|
||||||
"encoding/hex"
|
|
||||||
"errors"
|
|
||||||
"io"
|
|
||||||
"net/http"
|
|
||||||
"os"
|
|
||||||
"strings"
|
|
||||||
|
|
||||||
"go.elara.ws/lure/internal/log"
|
|
||||||
"go.elara.ws/lure/pkg/repos"
|
|
||||||
)
|
|
||||||
|
|
||||||
func handleWebhook(sigCh chan<- struct{}) http.HandlerFunc {
|
|
||||||
return http.HandlerFunc(func(res http.ResponseWriter, req *http.Request) {
|
|
||||||
if req.Header.Get("X-GitHub-Event") != "push" {
|
|
||||||
http.Error(res, "Only push events are accepted by this bot", http.StatusBadRequest)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
err := verifySecure(req)
|
|
||||||
if err != nil {
|
|
||||||
http.Error(res, err.Error(), http.StatusForbidden)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
sigCh <- struct{}{}
|
|
||||||
return
|
|
||||||
})
|
|
||||||
}
|
|
||||||
|
|
||||||
func verifySecure(req *http.Request) error {
|
|
||||||
sigStr := req.Header.Get("X-Hub-Signature-256")
|
|
||||||
sig, err := hex.DecodeString(strings.TrimPrefix(sigStr, "sha256="))
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
secretStr, ok := os.LookupEnv("LURE_API_GITHUB_SECRET")
|
|
||||||
if !ok {
|
|
||||||
return errors.New("LURE_API_GITHUB_SECRET must be set to the secret used for setting up the github webhook\n\n")
|
|
||||||
}
|
|
||||||
secret := []byte(secretStr)
|
|
||||||
|
|
||||||
h := hmac.New(sha256.New, secret)
|
|
||||||
_, err = io.Copy(h, req.Body)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
|
|
||||||
if !hmac.Equal(h.Sum(nil), sig) {
|
|
||||||
log.Warn("Insecure webhook request").
|
|
||||||
Str("from", req.RemoteAddr).
|
|
||||||
Bytes("sig", sig).
|
|
||||||
Bytes("hmac", h.Sum(nil)).
|
|
||||||
Send()
|
|
||||||
|
|
||||||
return errors.New("webhook signature mismatch")
|
|
||||||
}
|
|
||||||
|
|
||||||
return nil
|
|
||||||
}
|
|
||||||
|
|
||||||
func repoPullWorker(ctx context.Context, sigCh <-chan struct{}) {
|
|
||||||
for {
|
|
||||||
select {
|
|
||||||
case <-sigCh:
|
|
||||||
err := repos.Pull(ctx, nil)
|
|
||||||
if err != nil {
|
|
||||||
log.Warn("Error while pulling repositories").Err(err).Send()
|
|
||||||
}
|
|
||||||
case <-ctx.Done():
|
|
||||||
return
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
3
go.mod
3
go.mod
|
@ -9,7 +9,6 @@ require (
|
||||||
github.com/charmbracelet/bubbles v0.16.1
|
github.com/charmbracelet/bubbles v0.16.1
|
||||||
github.com/charmbracelet/bubbletea v0.24.2
|
github.com/charmbracelet/bubbletea v0.24.2
|
||||||
github.com/charmbracelet/lipgloss v0.8.0
|
github.com/charmbracelet/lipgloss v0.8.0
|
||||||
github.com/go-chi/chi/v5 v5.0.10
|
|
||||||
github.com/go-git/go-billy/v5 v5.5.0
|
github.com/go-git/go-billy/v5 v5.5.0
|
||||||
github.com/go-git/go-git/v5 v5.9.0
|
github.com/go-git/go-git/v5 v5.9.0
|
||||||
github.com/goreleaser/nfpm/v2 v2.33.0
|
github.com/goreleaser/nfpm/v2 v2.33.0
|
||||||
|
@ -20,7 +19,6 @@ require (
|
||||||
github.com/muesli/reflow v0.3.0
|
github.com/muesli/reflow v0.3.0
|
||||||
github.com/pelletier/go-toml/v2 v2.1.0
|
github.com/pelletier/go-toml/v2 v2.1.0
|
||||||
github.com/schollz/progressbar/v3 v3.13.1
|
github.com/schollz/progressbar/v3 v3.13.1
|
||||||
github.com/twitchtv/twirp v8.1.3+incompatible
|
|
||||||
github.com/urfave/cli/v2 v2.25.7
|
github.com/urfave/cli/v2 v2.25.7
|
||||||
github.com/vmihailenco/msgpack/v5 v5.3.5
|
github.com/vmihailenco/msgpack/v5 v5.3.5
|
||||||
go.elara.ws/logger v0.0.0-20230421022458-e80700db2090
|
go.elara.ws/logger v0.0.0-20230421022458-e80700db2090
|
||||||
|
@ -29,7 +27,6 @@ require (
|
||||||
golang.org/x/exp v0.0.0-20230905200255-921286631fa9
|
golang.org/x/exp v0.0.0-20230905200255-921286631fa9
|
||||||
golang.org/x/sys v0.12.0
|
golang.org/x/sys v0.12.0
|
||||||
golang.org/x/text v0.13.0
|
golang.org/x/text v0.13.0
|
||||||
google.golang.org/protobuf v1.31.0
|
|
||||||
gopkg.in/yaml.v3 v3.0.1
|
gopkg.in/yaml.v3 v3.0.1
|
||||||
modernc.org/sqlite v1.25.0
|
modernc.org/sqlite v1.25.0
|
||||||
mvdan.cc/sh/v3 v3.7.0
|
mvdan.cc/sh/v3 v3.7.0
|
||||||
|
|
9
go.sum
9
go.sum
|
@ -108,8 +108,6 @@ github.com/envoyproxy/go-control-plane v0.9.1-0.20191026205805-5f8ba28d4473/go.m
|
||||||
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
github.com/envoyproxy/protoc-gen-validate v0.1.0/go.mod h1:iSmxcyjqTsJpI2R4NaDN7+kN2VEUnK/pcBlmesArF7c=
|
||||||
github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA=
|
github.com/frankban/quicktest v1.14.5 h1:dfYrrRyLtiqT9GyKXgdh+k4inNeTvmGbuSgZ3lx3GhA=
|
||||||
github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY=
|
github.com/gliderlabs/ssh v0.3.5 h1:OcaySEmAQJgyYcArR+gGGTHCyE7nvhEMTlYY+Dp8CpY=
|
||||||
github.com/go-chi/chi/v5 v5.0.10 h1:rLz5avzKpjqxrYwXNfmjkrYYXOyLJd37pz53UFHC6vk=
|
|
||||||
github.com/go-chi/chi/v5 v5.0.10/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8=
|
|
||||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376 h1:+zs/tPmkDkHx3U66DAb0lQFJrpS6731Oaa12ikc+DiI=
|
||||||
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
|
github.com/go-git/gcfg v1.5.1-0.20230307220236-3a3c6141e376/go.mod h1:an3vInlBmSxCcxctByoQdvwPiA7DTK7jaaFDBTtu0ic=
|
||||||
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
|
github.com/go-git/go-billy/v5 v5.5.0 h1:yEY4yhzCDuMGSv83oGxiBotRzhwhNr8VZyphhiu+mTU=
|
||||||
|
@ -139,7 +137,6 @@ github.com/golang/protobuf v1.2.0/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5y
|
||||||
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.3.1/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
github.com/golang/protobuf v1.3.2/go.mod h1:6lQm79b+lXiMfvg/cZm0SGofjICqVBUtrP5yJMmIC1U=
|
||||||
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
github.com/golang/protobuf v1.3.3/go.mod h1:vzj43D7+SQXF/4pzW/hwtAqwc6iTitCiVSaWz5lYuqw=
|
||||||
github.com/golang/protobuf v1.5.0/go.mod h1:FsONVRAS9T7sI+LIUmWTfcYkHO4aIWwzhcaSAoJOfIk=
|
|
||||||
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
github.com/golang/snappy v0.0.4 h1:yAGX7huGHXlcLOEtBnF4w7FQwA26wojNCwOYAEhLjQM=
|
||||||
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
github.com/golang/snappy v0.0.4/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q=
|
||||||
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
github.com/google/btree v0.0.0-20180813153112-4030bb1f1f0c/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
|
||||||
|
@ -148,7 +145,6 @@ github.com/google/go-cmp v0.2.0/go.mod h1:oXzfMopK8JAjlY9xF4vHSVASa0yLyX7SntLO5a
|
||||||
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.0/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
github.com/google/go-cmp v0.3.1/go.mod h1:8QqcDgzrUqlUb/G2PQTWiueGozuR1884gddMywk6iLU=
|
||||||
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
github.com/google/go-cmp v0.4.0/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
||||||
github.com/google/go-cmp v0.5.5/go.mod h1:v8dTdLbMG2kIc/vJvl+f65V22dbkXbowE6jgT/gNBxE=
|
|
||||||
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
github.com/google/go-cmp v0.5.9 h1:O2Tfq5qg4qc4AmwVlvv0oLiVAGB7enBSJ2x2DqQFi38=
|
||||||
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
github.com/google/martian v2.1.0+incompatible/go.mod h1:9I4somxYTbIHy5NJKHRl3wXiIaQGbYVAs8BPL6v8lEs=
|
||||||
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
github.com/google/pprof v0.0.0-20181206194817-3ea8567a2e57/go.mod h1:zfwlbNMJ+OItoe0UupaVj+oy1omPYYDuagoSzA8v9mc=
|
||||||
|
@ -309,8 +305,6 @@ github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcU
|
||||||
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo=
|
||||||
github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw=
|
github.com/therootcompany/xz v1.0.1 h1:CmOtsn1CbtmyYiusbfmhmkpAAETj0wBIH6kCYaX+xzw=
|
||||||
github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY=
|
github.com/therootcompany/xz v1.0.1/go.mod h1:3K3UH1yCKgBneZYhuQUvJ9HPD19UEXEI0BWbMn8qNMY=
|
||||||
github.com/twitchtv/twirp v8.1.3+incompatible h1:+F4TdErPgSUbMZMwp13Q/KgDVuI7HJXP61mNV3/7iuU=
|
|
||||||
github.com/twitchtv/twirp v8.1.3+incompatible/go.mod h1:RRJoFSAmTEh2weEqWtpPE3vFK5YBhA6bqp2l1kfCC5A=
|
|
||||||
github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
|
github.com/ulikunitz/xz v0.5.6/go.mod h1:2bypXElzHzzJZwzH67Y6wb67pO62Rzfn7BSiF4ABRW8=
|
||||||
github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
|
github.com/ulikunitz/xz v0.5.11 h1:kpFauv27b6ynzBNT/Xy+1k+fK4WswhN/6PN5WhFAGw8=
|
||||||
github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
github.com/ulikunitz/xz v0.5.11/go.mod h1:nbz6k7qbPmH4IRqmfOplQw/tblSgqTqBwxkY0oWt/14=
|
||||||
|
@ -537,9 +531,6 @@ google.golang.org/grpc v1.23.0/go.mod h1:Y5yQAOtifL1yxbo5wqy6BxZv8vAUGQwXBOALyac
|
||||||
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
google.golang.org/grpc v1.26.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
google.golang.org/grpc v1.27.0/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
google.golang.org/grpc v1.27.1/go.mod h1:qbnxyOmOxrQa7FizSgH+ReBfzJrCY1pSN7KXBS8abTk=
|
||||||
google.golang.org/protobuf v1.26.0-rc.1/go.mod h1:jlhhOSvTdKEhbULTjvd4ARK9grFBp09yW+WbY/TyQbw=
|
|
||||||
google.golang.org/protobuf v1.31.0 h1:g0LDEJHgrBl9N9r17Ru3sqWhkIx2NB67okBHPwC7hs8=
|
|
||||||
google.golang.org/protobuf v1.31.0/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I=
|
|
||||||
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
gopkg.in/check.v1 v1.0.0-20190902080502-41f04d3bba15/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
|
||||||
|
|
Loading…
Reference in New Issue