nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 stdenv,
3 lib,
4 fetchFromGitHub,
5 buildGoModule,
6 docker,
7 gotestsum,
8 versionCheckHook,
9 installShellFiles,
10}:
11
12buildGoModule (finalAttrs: {
13 pname = "docker-language-server";
14 version = "0.20.1";
15
16 src = fetchFromGitHub {
17 owner = "docker";
18 repo = "docker-language-server";
19 tag = "v${finalAttrs.version}";
20 hash = "sha256-OSAySCTK2temrVxmkRnrl5YWVbmkp8DRlXFVxTzEW3Q=";
21 };
22
23 vendorHash = "sha256-ztA+/4l180UKTKrsqTyysDcD4oQSDgnBYUaiKDF6LvI=";
24
25 nativeBuildInputs = [
26 installShellFiles
27 ];
28
29 nativeCheckInputs = [
30 docker
31 gotestsum
32 ];
33
34 checkPhase = ''
35 runHook preCheck
36
37 # disable some tests because of sandbox
38 excludedPackages="e2e-tests|/buildkit$|/scout$"
39 packages=$(go list ./... | grep -vE "$excludedPackages")
40
41 gotestsum -- $packages \
42 -timeout 30s \
43 -skip "TestCollectDiagnostics|TestCompletion_ImageTags|TestInlayHint"
44
45 go test ./e2e-tests/... \
46 -timeout 120s \
47 -skip "TestPublishDiagnostics|TestHover"
48
49 runHook postCheck
50 '';
51
52 ldflags = [
53 "-s"
54 "-X 'github.com/docker/docker-language-server/internal/pkg/cli/metadata.Version=${finalAttrs.version}'"
55 ];
56
57 nativeInstallCheckInputs = [
58 versionCheckHook
59 ];
60 doInstallCheck = true;
61
62 postInstall = lib.optionalString (stdenv.buildPlatform.canExecute stdenv.hostPlatform) ''
63 installShellCompletion --cmd '${finalAttrs.meta.mainProgram}' \
64 --bash <("$out/bin/${finalAttrs.meta.mainProgram}" completion bash) \
65 --zsh <("$out/bin/${finalAttrs.meta.mainProgram}" completion zsh) \
66 --fish <("$out/bin/${finalAttrs.meta.mainProgram}" completion fish)
67 '';
68
69 meta = {
70 description = "Language server for providing language features for file types in the Docker ecosystem (Dockerfiles, Compose files, and Bake files)";
71 homepage = "https://github.com/docker/docker-language-server";
72 changelog = "https://github.com/docker/docker-language-server/blob/${finalAttrs.src.tag}/CHANGELOG.md";
73 mainProgram = "docker-language-server";
74 license = lib.licenses.asl20;
75 maintainers = with lib.maintainers; [ baongoc124 ];
76 };
77})