Commit a0cb900b authored by tobik's avatar tobik
Browse files

New port: devel/bingo

Bingo is a Go language server that speaks the Language Server
Protocol.  It supports editor features such as go-to-definition,
hover, and find-references for Go projects.

This project was largely inspired by go-langserver, but bingo is
simpler, faster, and smarter.

WWW: https://github.com/saibing/bingo
parent 8c1e7abe
......@@ -211,6 +211,7 @@
SUBDIR += bicyclerepair
SUBDIR += bin86
SUBDIR += binaryen
SUBDIR += bingo
SUBDIR += bingrep
SUBDIR += binutils
SUBDIR += bison
......
# $FreeBSD$
PORTNAME= bingo
DISTVERSIONPREFIX= v
DISTVERSION= 1.1.0-128
DISTVERSIONSUFFIX= -gac95a38
CATEGORIES= devel
MAINTAINER= tobik@FreeBSD.org
COMMENT= Go language server
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE
BUILD_DEPENDS= go>=1.11:lang/go
USE_GITHUB= yes
GH_ACCOUNT= saibing
# generated with gomod-deps below
GH_TUPLE= apache:thrift:v0.12.0:thrift/vendor/git.apache.org/thrift.git \
coreos:go-systemd:9002847aa142:go_systemd/vendor/github.com/coreos/go-systemd \
dominikh:go-tools:c2f93a96b099:go_tools/vendor/honnef.co/go/tools \
fsnotify:fsnotify:v1.4.7:fsnotify/vendor/github.com/fsnotify/fsnotify \
go-check:check:788fd7840127:check/vendor/gopkg.in/check.v1 \
go-stack:stack:v1.8.0:stack/vendor/github.com/go-stack/stack \
go-yaml:yaml:v2.2.2:yaml/vendor/gopkg.in/yaml.v2 \
go4org:go4:00e24f1b2599:go4/vendor/go4.org \
gogo:protobuf:v1.2.0:protobuf/vendor/github.com/gogo/protobuf \
golang:mock:v1.2.0:mock/vendor/github.com/golang/mock \
golang:net:915654e7eabc:net/vendor/golang.org/x/net \
golang:oauth2:5dab4167f31c:oauth2/vendor/golang.org/x/oauth2 \
golang:sys:a457fd036447:sys/vendor/golang.org/x/sys \
golang:time:85acf8d2951c:time/vendor/golang.org/x/time \
google:go-genproto:bd9b4fb69e2f:go_genproto/vendor/google.golang.org/genproto \
google:google-api-go-client:v0.1.0:google_api_go_client/vendor/google.golang.org/api \
googleapis:gax-go:v2.0.2:gax_go/vendor/github.com/googleapis/gax-go \
gopherjs:gopherjs:d547d1d9531e:gopherjs/vendor/github.com/gopherjs/gopherjs \
gorilla:websocket:v1.4.0:websocket/vendor/github.com/gorilla/websocket \
gregjones:httpcache:c63ab54fda8f:httpcache/vendor/github.com/gregjones/httpcache \
grpc-ecosystem:grpc-gateway:v1.6.4:grpc_gateway/vendor/github.com/grpc-ecosystem/grpc-gateway \
grpc:grpc-go:v1.18.0:grpc_go/vendor/google.golang.org/grpc \
inconshreveable:log15:67afb5ed74ec:log15/vendor/gopkg.in/inconshreveable/log15.v2 \
mattn:go-colorable:v0.0.9:go_colorable/vendor/github.com/mattn/go-colorable \
mattn:go-isatty:v0.0.4:go_isatty/vendor/github.com/mattn/go-isatty \
microcosm-cc:bluemonday:v1.0.2:bluemonday/vendor/github.com/microcosm-cc/bluemonday \
openzipkin:zipkin-go:v0.1.5:zipkin_go/vendor/github.com/openzipkin/zipkin-go \
pierrec:lz4:v2.0.7:lz4/vendor/github.com/pierrec/lz4 \
pmezard:go-difflib:v1.0.0:go_difflib/vendor/github.com/pmezard/go-difflib \
prometheus:client_golang:v0.9.2:client_golang/vendor/github.com/prometheus/client_golang \
prometheus:common:67670fe90761:common/vendor/github.com/prometheus/common \
russross:blackfriday:v2.0.0:blackfriday/vendor/github.com/russross/blackfriday \
saibing:tools:v1.7.3:tools/vendor/golang.org/x/tools \
Shopify:sarama:v1.20.1:sarama/vendor/github.com/Shopify/sarama \
shurcooL:sanitized_anchor_name:v1.0.0:sanitized_anchor_name/vendor/github.com/shurcooL/sanitized_anchor_name \
slimsag:godocmd:a1005ad29fe3:godocmd/vendor/github.com/slimsag/godocmd \
sourcegraph:jsonrpc2:549eb959f029:jsonrpc2/vendor/github.com/sourcegraph/jsonrpc2 \
sqs:pbtypes:v1.0.0:pbtypes/vendor/sourcegraph.com/sqs/pbtypes \
stretchr:objx:v0.1.1:objx/vendor/github.com/stretchr/objx \
stretchr:testify:v1.3.0:testify/vendor/github.com/stretchr/testify
PLIST_FILES= bin/bingo
do-build:
@cd ${WRKSRC} && ${SETENV} ${MAKE_ENV} go build -mod=vendor
do-install:
${INSTALL_PROGRAM} ${WRKSRC}/bingo ${STAGEDIR}${PREFIX}/bin
# XXX: Check if useful for other ports and maybe put it in a USES=gomod
gomod-deps: patch
@${AWK} -f ${FILESDIR}/gomod.awk ${WRKSRC}/go.mod
.include <bsd.port.mk>
TIMESTAMP = 1548838719
SHA256 (saibing-bingo-v1.1.0-128-gac95a38_GH0.tar.gz) = 0e756a3a926ad47a9045ce217d7656feae63d563e4846518eb63ded025e53989
SIZE (saibing-bingo-v1.1.0-128-gac95a38_GH0.tar.gz) = 91494
SHA256 (apache-thrift-v0.12.0_GH0.tar.gz) = b7452d1873c6c43a580d2b4ae38cfaf8fa098ee6dc2925bae98dce0c010b1366
SIZE (apache-thrift-v0.12.0_GH0.tar.gz) = 2960476
SHA256 (coreos-go-systemd-9002847aa142_GH0.tar.gz) = e9d71463378837b4cae3265fc2537cbf0a41ba29e3a5fa98ffecc71ff451bc5a
SIZE (coreos-go-systemd-9002847aa142_GH0.tar.gz) = 63572
SHA256 (dominikh-go-tools-c2f93a96b099_GH0.tar.gz) = a85163825588ef6fcc91723338d84d23b29327cff9b53c97ea64495d42084ea7
SIZE (dominikh-go-tools-c2f93a96b099_GH0.tar.gz) = 274184
SHA256 (fsnotify-fsnotify-v1.4.7_GH0.tar.gz) = b7530d973d0ab0e58ad8ce1b9a4b963d6f57b3d72f2f9e13d49846976361b1cd
SIZE (fsnotify-fsnotify-v1.4.7_GH0.tar.gz) = 31139
SHA256 (go-check-check-788fd7840127_GH0.tar.gz) = b7c9de01f3ca7111d889f30f2bbcc36eda4d07c09f032aaba83e34a324146bae
SIZE (go-check-check-788fd7840127_GH0.tar.gz) = 31597
SHA256 (go-stack-stack-v1.8.0_GH0.tar.gz) = 3b8987e137d76f4f35db1e8005ec7fb766b68eed8cac0ca0b795ac43cd72b319
SIZE (go-stack-stack-v1.8.0_GH0.tar.gz) = 8039
SHA256 (go-yaml-yaml-v2.2.2_GH0.tar.gz) = 42c3e4ef9eca2860d22b3c6c5582c6c13fb4b417e5ebc1acc56ee5e2c4ddcaff
SIZE (go-yaml-yaml-v2.2.2_GH0.tar.gz) = 70656
SHA256 (go4org-go4-00e24f1b2599_GH0.tar.gz) = 6464910bab8da430f7fe33972554617cbad8d5a3ab54ea668484e8c01e59de52
SIZE (go4org-go4-00e24f1b2599_GH0.tar.gz) = 139212
SHA256 (gogo-protobuf-v1.2.0_GH0.tar.gz) = 957c8f03cf595525d2a667035d9865a0930b3d446be0ab6eb76972934f925b00
SIZE (gogo-protobuf-v1.2.0_GH0.tar.gz) = 2011389
SHA256 (golang-mock-v1.2.0_GH0.tar.gz) = b7278e2d81b4ea2b849da7a20aedafd627748e188b2118bb536b8a2e3b95a821
SIZE (golang-mock-v1.2.0_GH0.tar.gz) = 46488
SHA256 (golang-net-915654e7eabc_GH0.tar.gz) = e1842fd852a11b277f1b2e77cfaaa12e5502739ae911532cd5a81f62e87ae383
SIZE (golang-net-915654e7eabc_GH0.tar.gz) = 966819
SHA256 (golang-oauth2-5dab4167f31c_GH0.tar.gz) = 157e8e943d5cdcc2720414d11e406692b530750f420228a2a64d8550b4ae4304
SIZE (golang-oauth2-5dab4167f31c_GH0.tar.gz) = 44122
SHA256 (golang-sys-a457fd036447_GH0.tar.gz) = c0e562f1f7791143359c077ebf598a76e0038a51115947bd3e1032aa1c7d875c
SIZE (golang-sys-a457fd036447_GH0.tar.gz) = 1220216
SHA256 (golang-time-85acf8d2951c_GH0.tar.gz) = 96c2a33d1f1409b7db0a71ca73748e7cbac8b8878430de82c76e408a08f76fd1
SIZE (golang-time-85acf8d2951c_GH0.tar.gz) = 9266
SHA256 (google-go-genproto-bd9b4fb69e2f_GH0.tar.gz) = 565ba2bac7b64aa19e5577dda6ccfe8bdc0b48973644cc8ab96e7d83ae3e5a4e
SIZE (google-go-genproto-bd9b4fb69e2f_GH0.tar.gz) = 3078124
SHA256 (google-google-api-go-client-v0.1.0_GH0.tar.gz) = cd8c631d7de097c9f0549e0c6acc7c4184226b6cf03cf562718947a36440b6e7
SIZE (google-google-api-go-client-v0.1.0_GH0.tar.gz) = 10093077
SHA256 (googleapis-gax-go-v2.0.2_GH0.tar.gz) = 624786968d59eb032cfe049f139ddc14be1be5d508c34ebf520edc3946bae2ac
SIZE (googleapis-gax-go-v2.0.2_GH0.tar.gz) = 8942
SHA256 (gopherjs-gopherjs-d547d1d9531e_GH0.tar.gz) = 9f24adce5539b96eaeae86b6b6b34c3b5d4b54b5552779f1919d583ef2045378
SIZE (gopherjs-gopherjs-d547d1d9531e_GH0.tar.gz) = 217297
SHA256 (gorilla-websocket-v1.4.0_GH0.tar.gz) = 2b5743c72bd0930c5a80e49c0138b5b7d27fa7c085efd0c86805cccfa7220c9d
SIZE (gorilla-websocket-v1.4.0_GH0.tar.gz) = 50228
SHA256 (gregjones-httpcache-c63ab54fda8f_GH0.tar.gz) = 3a4016cd2810f0ad820441e0bcc97719ab60f7959c0f9d873025ceb735f29656
SIZE (gregjones-httpcache-c63ab54fda8f_GH0.tar.gz) = 13946
SHA256 (grpc-ecosystem-grpc-gateway-v1.6.4_GH0.tar.gz) = f8cec7295e4ff002a9c3bf3aef623dff7c0cee74a93520c78dfdaed3a82543a7
SIZE (grpc-ecosystem-grpc-gateway-v1.6.4_GH0.tar.gz) = 273121
SHA256 (grpc-grpc-go-v1.18.0_GH0.tar.gz) = 078b44a673860ffda7a366f9e6a05415eb5126b54bd6cde921f2403283f95a1f
SIZE (grpc-grpc-go-v1.18.0_GH0.tar.gz) = 589845
SHA256 (inconshreveable-log15-67afb5ed74ec_GH0.tar.gz) = e4c837cfd154a0696c84605595c84459a2d1b2fb33b1abcf284a415d2ca9ab55
SIZE (inconshreveable-log15-67afb5ed74ec_GH0.tar.gz) = 23261
SHA256 (mattn-go-colorable-v0.0.9_GH0.tar.gz) = 703db7bd13f84446bb06a7f075cf6b21d65b828cd6831dc9069e28b564bdfb87
SIZE (mattn-go-colorable-v0.0.9_GH0.tar.gz) = 7593
SHA256 (mattn-go-isatty-v0.0.4_GH0.tar.gz) = a6228abe42ccfcad4b17c176117ccf2822d06bde51dc437852854056d8737f12
SIZE (mattn-go-isatty-v0.0.4_GH0.tar.gz) = 3377
SHA256 (microcosm-cc-bluemonday-v1.0.2_GH0.tar.gz) = 63b0b5c2378fded0acb8b719b13a698cb897b52b3fb0cdf7d3ce576eba0c3160
SIZE (microcosm-cc-bluemonday-v1.0.2_GH0.tar.gz) = 137669
SHA256 (openzipkin-zipkin-go-v0.1.5_GH0.tar.gz) = c28d2a2badd20ca48ecfd9320191872fa1220e8a915c5cb18666426901990487
SIZE (openzipkin-zipkin-go-v0.1.5_GH0.tar.gz) = 59416
SHA256 (pierrec-lz4-v2.0.7_GH0.tar.gz) = a3e93a97911bb1a7a6a6db58cbc567eae03f7e74c3e1d7709701e3c8f6b6bfe7
SIZE (pierrec-lz4-v2.0.7_GH0.tar.gz) = 7460343
SHA256 (pmezard-go-difflib-v1.0.0_GH0.tar.gz) = 28f3dc1b5c0efd61203ab07233f774740d3bf08da4d8153fb5310db6cea0ebda
SIZE (pmezard-go-difflib-v1.0.0_GH0.tar.gz) = 11398
SHA256 (prometheus-client_golang-v0.9.2_GH0.tar.gz) = 5f6ca8740a08622ae0a19c32b1026b8233bfd943a1f4af34963d326ab5fa94e5
SIZE (prometheus-client_golang-v0.9.2_GH0.tar.gz) = 130109
SHA256 (prometheus-common-67670fe90761_GH0.tar.gz) = a1995cca3d2c231f29a9f1ae6c84209bbbe2ce4be5cd1bae5443ef81c0c8d5de
SIZE (prometheus-common-67670fe90761_GH0.tar.gz) = 81099
SHA256 (russross-blackfriday-v2.0.0_GH0.tar.gz) = da9c7e713b2c97300cab6c1545726950d05ea2093afe13c94c1d3f2a7844e3f5
SIZE (russross-blackfriday-v2.0.0_GH0.tar.gz) = 77677
SHA256 (saibing-tools-v1.7.3_GH0.tar.gz) = f3ad53fcc48a6089cf96db3170f74b9d8f7cb2ef61c4b483b3897a0a0e5e6370
SIZE (saibing-tools-v1.7.3_GH0.tar.gz) = 2860505
SHA256 (Shopify-sarama-v1.20.1_GH0.tar.gz) = 4bdf0d28be937d3e54f8f98318e1daf10aa86229bf6478ad08a097ccf2710ef2
SIZE (Shopify-sarama-v1.20.1_GH0.tar.gz) = 188580
SHA256 (shurcooL-sanitized_anchor_name-v1.0.0_GH0.tar.gz) = 7e11964980f9b8595c17bc8970f0174621afe464920e38df7f8d77e45058388f
SIZE (shurcooL-sanitized_anchor_name-v1.0.0_GH0.tar.gz) = 2143
SHA256 (slimsag-godocmd-a1005ad29fe3_GH0.tar.gz) = 51508fc02aa43587441853fbf44ce5e41b33aff40d78923fb832866225d4196b
SIZE (slimsag-godocmd-a1005ad29fe3_GH0.tar.gz) = 39310
SHA256 (sourcegraph-jsonrpc2-549eb959f029_GH0.tar.gz) = 7f26c32b8d7efa5c4e1a6bf3687ca0532c18088e2d07044cc815efee785566bf
SIZE (sourcegraph-jsonrpc2-549eb959f029_GH0.tar.gz) = 13133
SHA256 (sqs-pbtypes-v1.0.0_GH0.tar.gz) = 64c42ffbc8ce815319a53f4e849988389e20c4633a6eadbe0d6ed225a949baf3
SIZE (sqs-pbtypes-v1.0.0_GH0.tar.gz) = 9153
SHA256 (stretchr-objx-v0.1.1_GH0.tar.gz) = 3bb0a581651f4c040435a70167ab60b723c5af04a5b0326af3c8b01ccc6fdcf0
SIZE (stretchr-objx-v0.1.1_GH0.tar.gz) = 75768
SHA256 (stretchr-testify-v1.3.0_GH0.tar.gz) = 0cd9c199a72b8d80621624b37c0ed5ac724352d458506a31dfa86710551e7fc5
SIZE (stretchr-testify-v1.3.0_GH0.tar.gz) = 102859
# Case-insensitive bubble sort
function sort_array(arr, arrlen, i, j, temp) {
for (i = 1; i < arrlen; i++) {
for (j = i + 1; j < arrlen; j++) {
if (tolower(arr[i]) > tolower(arr[j])) {
temp = arr[j]
arr[j] = arr[i]
arr[i] = temp
}
}
}
}
function print_array(start, arr, arrlen, end, i) {
end = " \\\n"
for (i = 1; i < arrlen; i++) {
if (i == arrlen - 1) {
end = "\n"
}
printf "%s\t%s%s", start, arr[i], end
start = "\t"
}
}
function distgroup(name, retval) {
gsub(/[-\.]/, "_", name)
if (_distgroup[name] == 0) {
_distgroup[name] = 1
return name
}
retval = sprintf("%s%i", name, _distgroup[name]++)
return retval
}
BEGIN {
module = "<<<unknown>>>"
# Map some modules to GitHub manually
# XXX: This could be done automatically via looking it up with curl
# https://google.golang.org/grpc?go-get=1
# or via go get -v honnef.co/go/tools
github_map["google.golang.org/api"] = "google/google-api-go-client"
github_map["google.golang.org/grpc"] = "grpc/grpc-go"
github_map["google.golang.org/genproto"] = "google/go-genproto"
github_map["go4.org"] = "go4org/go4"
github_map["honnef.co/go/tools"] = "dominikh/go-tools"
}
$1 ~ /module/ {
module = $2
}
/^require \($/, /^\)$/ {
if ($1 != "require" && $1 != ")") {
require()
}
} function require( dep, version) {
dep = $1
version = $2
_require[dep] = version
}
/^replace / {
replace()
} function replace( old_dep, new_dep, version) {
old_dep = $2
new_dep = $4
version = $5
delete _require[old_dep]
_require[new_dep] = version
_replace[new_dep] = old_dep
}
function to_gh_tuple(tuples, tmp, path, account, project, tag, tokens) {
tuples_len = 1
for (path in _require) {
split(path, tokens, "/")
account = "<<<unknown>>>"
project = "<<<unknown>>>"
tag = _require[path]
if (path ~ "^golang.org/x/") {
account = "golang"
project = tokens[3]
} else if (path ~ "^(github|sourcegraph).com/") {
account = tokens[2]
project = tokens[3]
} else if (path ~ "^gopkg.in/") {
if (length(tokens) >= 3) {
gsub(/\.v[0-9]+$/, "", tokens[3])
account = tokens[2]
project = tokens[3]
} else if (length(tokens) >= 2) {
gsub(/\.v[0-9]+$/, "", tokens[2])
account = sprintf("go-%s", tokens[2])
project = tokens[2]
}
} else if (path ~ "^git.apache.org/") {
account = "apache"
project = tokens[2]
} else {
if (split(github_map[path], tmp, "/") == 2) {
account = tmp[1]
project = tmp[2]
}
}
gsub(/\+.*$/, "", tag)
gsub(/^v[0-9\.]+-..............-/, "", tag)
gsub(/\.git$/, "", project)
if (_replace[path] != "") {
path = _replace[path]
}
tuples[tuples_len++] = sprintf("%s:%s:%s:%s/vendor/%s", account, project, tag, distgroup(project), path)
}
return tuples_len
}
function print_gh_tuple( tuples_len, tuples) {
tuples_len = to_gh_tuple(tuples)
sort_array(tuples, tuples_len)
print_array("GH_TUPLE=", tuples, tuples_len)
}
END {
print_gh_tuple()
}
Bingo is a Go language server that speaks the Language Server
Protocol. It supports editor features such as go-to-definition,
hover, and find-references for Go projects.
This project was largely inspired by go-langserver, but bingo is
simpler, faster, and smarter.
WWW: https://github.com/saibing/bingo
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment