dev-util/docker-language-server: new package, add 0.20.1

Signed-off-by: ingenarel (NeoJesus) <ingenarel_neojesus@disroot.org>
This commit is contained in:
ingenarel (NeoJesus)
2026-06-16 09:11:56 +06:00
parent f3d8df75e6
commit 8e5bd0b0ad
4 changed files with 173 additions and 0 deletions

View File

@@ -0,0 +1,2 @@
DIST docker-language-server-0.20.1-deps.tar.xz 170888880 BLAKE2B b6083d3452a67a8774405db2afdf52ae672f338451dd9896e9a395c837cce565f7b41baf375490b3f0c69d6e4b27f72170dbc9225c4522dafc182f2267102f61 SHA512 163b1e04ada6e2c1219430a9fe65397c74d954e41062b487a821c1a60134b50df4a29064073538db88cdb2334e2f8aff42e6c32a38a9ee2d4db48c7fa525db66
DIST docker-language-server-0.20.1.tar.gz 261348 BLAKE2B fef37c694fb4b0288a17a28d81ce6c01384e42433e753589d7021808ed4ec170ff65f8a3df9cbfea0bce1c2b052ffe3274fc0c21423637a21d9215b3c77451ec SHA512 0fb5edb069e0fa3a2ed0e5d0879e8385b93f31509de16b3c1d4824251ccf9b81ee97220e2abe89aaee481b1b47525fb36a2c48e854c481a79ace408b391c394d

View File

@@ -0,0 +1,71 @@
# Copyright 2026 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=8
inherit go-module shell-completion optfeature
DESCRIPTION="Language server for Dockerfiles, Compose files, and Bake files"
HOMEPAGE="https://github.com/docker/docker-language-server"
if [[ "${PV}" == 9999 ]]; then
inherit git-r3
EGIT_REPO_URI="https://github.com/docker/docker-language-server.git"
else
KEYWORDS="~amd64"
SRC_URI="https://github.com/docker/${PN}/archive/refs/tags/v${PV}.tar.gz -> ${P}.tar.gz
https://github.com/ingenarel/guru-depfiles/releases/download/${P}-deps.tar.xz/${P}-go-mod-deps.tar.xz ->
${P}-deps.tar.xz
"
fi
LICENSE="Apache-2.0"
#gentoo-go-license docker-language-server-0.20.1.ebuild
LICENSE+=" Apache-2.0 BSD-2 BSD ISC MIT MPL-2.0 Unicode-DFS-2016 "
# dependency licenses
# if it says unknown license, and it's for in_toto, it's Apache-2.0
SLOT="0"
RESTRICT="test"
BDEPEND=">=dev-lang/go-1.25.0"
PATCHES=(
"${FILESDIR}/telemetry-0.20.1.patch"
)
# the telemetry patch removes some unnessary bloat where the lsp would try to publish the telemetry (but will fail
# anyway because we don't have the api keys), otherwise i would actually use the telemetry use flag for this
src_unpack(){
if [[ "${PV}" == 9999 ]];then
git-r3_src_unpack
go-module_live_vendor
else
default
fi
}
src_compile(){
local VERSION
if [[ "${PV}" == 9999 ]]; then
VERSION="$(git show -s --format=%cs)-$(git rev-parse --short HEAD)"
else
VERSION="${PV}"
fi
CGO_ENABLED=0 ego build \
-ldflags="-s -w -X 'github.com/docker/docker-language-server/internal/pkg/cli/metadata.Version=${VERSION}'" \
-o ./bin/"${PN}" ./cmd/"${PN}"
}
src_install(){
dobin ./bin/"${PN}"
./bin/"${PN}" completion bash > "${PN}" || die "generating bash completion failed"
dobashcomp "${PN}"
./bin/"${PN}" completion zsh > "_${PN}" || die "generating zsh completion failed"
dozshcomp "_${PN}"
./bin/"${PN}" completion fish > "${PN}.fish" || die "generating fish completion failed"
dofishcomp "${PN}.fish"
}
pkg_postinst(){
# at the time of writing this, it doesn't say what features, just some optional features
# https://github.com/docker/docker-language-server/blob/5187ff578db630f5df5b5922a10d8415a5bb7d32/README.md?plain=1#L7
optfeature "some optional features" app-containers/docker-buildx
}

View File

@@ -0,0 +1,85 @@
diff --git a/internal/pkg/cli/start.go b/internal/pkg/cli/start.go
index 47ea4c5..55722d5 100644
--- a/internal/pkg/cli/start.go
+++ b/internal/pkg/cli/start.go
@@ -84,13 +84,11 @@ For socket mode, pass the --address option.
func runStdioServer(_ context.Context) error {
docManager := document.NewDocumentManager()
s := server.NewServer(docManager)
- s.StartBackgrondProcesses(context.Background())
return s.RunStdio()
}
func runSocketServer(_ context.Context, addr string) error {
docManager := document.NewDocumentManager()
s := server.NewServer(docManager)
- s.StartBackgrondProcesses(context.Background())
return s.RunTCP(addr)
}
diff --git a/internal/pkg/server/server.go b/internal/pkg/server/server.go
index 220bff6..139a442 100644
--- a/internal/pkg/server/server.go
+++ b/internal/pkg/server/server.go
@@ -159,7 +159,6 @@ func (s *Server) Initialized(context *glsp.Context, params *protocol.Initialized
}
func (s *Server) shutdown(ctx *glsp.Context) error {
- _, _ = s.telemetry.Publish(context.Background())
protocol.SetTraceValue(protocol.TraceValueOff)
return nil
}
@@ -182,26 +181,6 @@ func (s *Server) recomputeDiagnostics() {
}
}
-func (s *Server) StartBackgrondProcesses(ctx context.Context) {
- s.publishTelemetry(ctx)
-}
-
-func (s *Server) publishTelemetry(ctx context.Context) {
- go func() {
- defer s.handlePanic("publishTelemetry")
-
- for {
- select {
- case <-ctx.Done():
- return
- default:
- time.Sleep(time.Second * 60)
- _, _ = s.telemetry.Publish(ctx)
- }
- }
- }()
-}
-
func (s *Server) handleRecovered(method string, recovered interface{}) bool {
if recovered != nil {
debug.PrintStack()
diff --git a/internal/telemetry/client.go b/internal/telemetry/client.go
index 8d942f6..42ba887 100644
--- a/internal/telemetry/client.go
+++ b/internal/telemetry/client.go
@@ -27,19 +27,19 @@ type TelemetryClientImpl struct {
}
func NewClient() TelemetryClient {
- return &TelemetryClientImpl{telemetry: configuration.TelemetrySettingAll}
+ return &TelemetryClientImpl{telemetry: configuration.TelemetrySettingOff}
}
func (c *TelemetryClientImpl) UpdateTelemetrySetting(value string) {
switch value {
case "all":
- c.telemetry = configuration.TelemetrySettingAll
+ c.telemetry = configuration.TelemetrySettingOff
case "error":
- c.telemetry = configuration.TelemetrySettingError
+ c.telemetry = configuration.TelemetrySettingOff
case "off":
c.telemetry = configuration.TelemetrySettingOff
default:
- c.telemetry = configuration.TelemetrySettingAll
+ c.telemetry = configuration.TelemetrySettingOff
}
}

View File

@@ -0,0 +1,15 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE pkgmetadata SYSTEM "https://www.gentoo.org/dtd/metadata.dtd">
<pkgmetadata>
<maintainer type="person">
<email>ingenarel_neojesus@disroot.org</email>
<name>ingenarel</name>
</maintainer>
<upstream>
<remote-id type="github">docker/docker-language-server</remote-id>
</upstream>
<longdescription lang="en">
The Docker Language Server is a language server for providing language features for file types in the Docker
ecosystem (Dockerfiles, Compose files, and Bake files).
</longdescription>
</pkgmetadata>