diff --git a/installer/install-dagger-cue-lsp.sh b/installer/install-dagger-cue-lsp.sh new file mode 100755 index 00000000..2961051d --- /dev/null +++ b/installer/install-dagger-cue-lsp.sh @@ -0,0 +1,25 @@ +#!/bin/sh + +set -e + +# check if dagger is present +dagger_path=$(which dagger) +if [ -f $dagger_path ]; then + echo "Dagger CLI already installed, using it…" + exit 0 +fi + +os=$(uname -s | tr "[:upper:]" "[:lower:]") + +url="http://can.not.find.cue.lsp.version" + +arch=$(uname -i) +if [ "$arch" = "x86_64" ]; then + arch="amd64" +elif [ "$arch" = "aarch64" ]; then + arch="arm64" +fi + +url=$(curl -H "Accept: application/vnd.github+json" https://api.github.com/repos/dagger/cuelsp/releases/latest | grep $os | grep $arch | grep "browser_download_url" | awk '{ print $2; }' | sed 's/"//g' ) + +curl -L "$url" | tar -xz diff --git a/settings.json b/settings.json index fcc921b7..98bfa41d 100644 --- a/settings.json +++ b/settings.json @@ -340,6 +340,19 @@ } } ], + "dagger_cue_lsp": [ + { + "command": "dagger", + "url": "https://github.com/dagger/dagger/", + "description": "Dagger CUE LSP", + "requires": [ + "dagger" + ], + "root_uri_patterns": [ + "cue.mod" + ] + } + ], "go": [ { "command": "gopls", diff --git a/settings/dagger-cue-lsp.vim b/settings/dagger-cue-lsp.vim new file mode 100644 index 00000000..9443aa44 --- /dev/null +++ b/settings/dagger-cue-lsp.vim @@ -0,0 +1,32 @@ +" NOTE: For compatibility, this looks up not only +" dagger lsp's user config but also +" cuelsp's one. +augroup vim_lsp_settings_dagger_cue_lsp + au! + LspRegisterServer { + \ 'name': 'dagger_cue_lsp', + \ 'cmd': {server_info-> + \ lsp_settings#get('dagger_cue_lsp', 'cmd', + \ [lsp_settings#exec_path('dagger')]+ + \ lsp_settings#get('dagger_cue_lsp', 'args', ['cuelsp'], + \ ))}, + \ 'root_uri': {server_info-> + \ lsp_settings#get('dagger_cue_lsp', 'root_uri', + \ lsp_settings#root_uri('dagger_cue_lsp'))}, + \ 'allowlist': + \ lsp_settings#get('dagger_cue_lsp', 'allowlist', + \ ['cue']), + \ 'blocklist': + \ lsp_settings#get('dagger_cue_lsp', 'blocklist', + \ []), + \ 'config': + \ lsp_settings#get('dagger_cue_lsp', 'config', + \ lsp_settings#server_config('dagger_cue_lsp')), + \ 'workspace_config': + \ lsp_settings#get('dagger_cue_lsp', 'workspace_config', + \ {}), + \ 'semantic_highlight': + \ lsp_settings#get('dagger_cue_lsp', 'semantic_highlight', + \ {}), + \ } +augroup END