helm-lint-ls is helm lint language server protocol LSP.

      / / / /__  / /___ ___     / /   (_)___  / /_   / /   _____
     / /_/ / _ \/ / __  __ \   / /   / / __ \/ __/  / /   / ___/
    / __  /  __/ / / / / / /  / /___/ / / / / /_   / /___(__  ) 
 /_/ /_/\___/_/_/ /_/ /_/  /_____/_/_/ /_/\__/  /_____/____/

This project is under construction.

asciicast

About HelmLintLs

helm-lint-ls is helm lint language server protocol LSP.

Installation

Download the latest helm_lint_ls executable file from here and move it to your binaries directory

Download it with curl

replace the {os} and {arch} variables in the url

curl -L https://github.com/mrjosh/helm-lint-ls/releases/download/master/helm_lint_ls_{os}_{arch} --output /usr/local/bin/helm_lint_ls

Make it executable

chmod +x /usr/local/bin/helm_lint_ls

nvim-lspconfig setup

local lspconfig = require 'lspconfig'
local configs = require 'lspconfig/configs'

if not configs.helm_lint_ls then
  configs.helm_lint_ls = {
    default_config = {
      cmd = {"helm-lint-ls", "serve"},
      filetypes = {'helm'},
      root_dir = function(fname)
        return util.root_pattern('Chart.yaml', 'values.yaml')(fname)
      end,
    },
  }
end

lspconfig.helm_lint_ls.setup {
  filetypes = {"helm"},
  cmd = {"helm-lint-ls", "serve"},
}

Contributing

Thank you for considering contributing to HelmLintLs project!

License

The HelmLintLs is open-source software licensed under the MIT license.

Owner
MrJosh
Alireza Josheghani | Software Engineer | Kubernetes Enthusiast
MrJosh
Comments
  • Add working helm_lint_ls config

    Add working helm_lint_ls config

    Hey and thank you for your plugin. I was trying to setup the plugin and had some problems with the config.

    I saw your comment in this issue and took this as a base to get the config working. I think the lspconfig.util import is missing. Also there is no helm-lint-ls binary. It is helm_lint_ls instead.

  • Bump helm.sh/helm/v3 from 3.8.1 to 3.9.4

    Bump helm.sh/helm/v3 from 3.8.1 to 3.9.4

    Bumps helm.sh/helm/v3 from 3.8.1 to 3.9.4.

    Release notes

    Sourced from helm.sh/helm/v3's releases.

    Helm 3.9.4

    Helm v3.9.4 is a security (patch) release. Users are strongly recommended to update to this release.

    While fuzz testing Helm, provided by the CNCF, a possible out of memory panic was discovered with the strvals package. Out of memory panics cannot be recovered from in Go. This can potentially be used to produce a denial of service (DOS). More details are available in the advisory.

    The community keeps growing, and we'd love to see you there!

    • Join the discussion in Kubernetes Slack:
      • for questions and just to hang out
      • for discussing PRs, code, and bugs
    • Hang out at the Public Developer Call: Thursday, 9:30 Pacific via Zoom
    • Test, debug, and contribute charts: ArtifactHub/packages

    Installation and Upgrading

    Download Helm v3.9.4. The common platform binaries are here:

    This release was signed with 672C 657B E06B 4B30 969C 4A57 4614 49C2 5E36 B98E and can be found at @​mattfarina keybase account. Please use the attached signatures for verifying this release using gpg.

    The Quickstart Guide will get you going from there. For upgrade instructions or detailed installation notes, check the install guide. You can also use a script to install on any system with bash.

    What's Next

    • 3.10.0 is the next feature release and will be on September 14, 2022

    Helm 3.9.3

    Helm v3.9.3 is a patch release. Users are encouraged to upgrade for the best experience. Users are encouraged to upgrade for the best experience.

    The community keeps growing, and we'd love to see you there!

    • Join the discussion in Kubernetes Slack:
      • for questions and just to hang out
      • for discussing PRs, code, and bugs
    • Hang out at the Public Developer Call: Thursday, 9:30 Pacific via Zoom
    • Test, debug, and contribute charts: ArtifactHub/packages

    Installation and Upgrading

    Download Helm v3.9.3. The common platform binaries are here:

    ... (truncated)

    Commits
    • dbc6d8e Updating the certificates used for testing
    • 43ccc35 Updating index handling
    • 414ff28 Bump k8s.io/kube-openapi to fix CVE-2022-1996 in github.com/emicklei/go-restful
    • c801d88 fixes #11142 missing array length check on release
    • 1addefb Merge pull request #11161 from mattfarina/rel-3.9-ci-fix
    • a2d0792 Updating the circleci image we use
    • a7c043a Upgrading to Kubernetes 1.24.2
    • 06f449d fix: improve logging & safety of statefulSetReady
    • 1cf5bc4 make token caching an opt in feature
    • c768c3e chore(deps): bump github.com/lib/pq from 1.10.5 to 1.10.6
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

  • Client 1 quit with exit code 2 and signal 0

    Client 1 quit with exit code 2 and signal 0

    Hi, first of all, thanks for this awesome ls ! I've been struggling for a while now with proper chart template validation.

    It works nicely, but I noticed that it produces this error msg after closing nvim:

    ❯ vi deployment.yaml
    Client 1 quit with exit code 2 and signal 0
    

    Here's the relevant output from /home/varac/.cache/nvim/lsp.log, see the last two lines:

    [START][2022-11-23 10:04:43] LSP logging initiated
    [START][2022-11-23 10:04:47] LSP logging initiated
    [ERROR][2022-11-23 10:04:47] .../vim/lsp/rpc.lua:420	"rpc"	"helm_ls"	"stderr"	'{"level":"info","msg":"helm-lint-langserver: connections opened","time":"2022-11-23T10:04:47+01:00"}\n'
    [ERROR][2022-11-23 10:04:47] .../vim/lsp/rpc.lua:420	"rpc"	"helm_ls"	"stderr"	'{"level":"info","msg":"/home/varac/projects/containers/kubernetes/helm/charts/varac/helmcharts/personal-gitlab-exporter","time":"2022-11-23T10:04:47+01:00"}\n'
    [ERROR][2022-11-23 10:04:47] .../vim/lsp/rpc.lua:420	"rpc"	"helm_ls"	"stderr"	'{"level":"info","msg":"/home/varac/projects/containers/kubernetes/helm/charts/varac/helmcharts/personal-gitlab-exporter/values.yaml file loaded successfully","time":"2022-11-23T10:04:47+01:00"}\n'
    [ERROR][2022-11-23 10:04:47] .../vim/lsp/rpc.lua:420	"rpc"	"helm_ls"	"stderr"	'{"level":"info","msg":"helm lint: result: []","time":"2022-11-23T10:04:47+01:00"}\n'
    
    [ERROR][2022-11-23 10:04:49] .../vim/lsp/rpc.lua:420	"rpc"	"helm_ls"	"stderr"	'panic: request "shutdown" was never replied to\n\ngoroutine 10 [running]:\n'
    [ERROR][2022-11-23 10:04:49] .../vim/lsp/rpc.lua:420	"rpc"	"helm_ls"	"stderr"	"go.lsp.dev/jsonrpc2.ReplyHandler.func1({0x17ec1d8, 0xc0001ae000}, 0xc00034a460, {0x7f6544163958?, 0xc000624080?})\n\t/home/runner/go/pkg/mod/go.lsp.dev/[email protected]/handler.go:44 +0x165\ngo.lsp.dev/jsonrpc2.(*conn).run(0xc0004faa50, {0x17ec1d8, 0xc0001ae000}, 0xc000287df0)\n\t/home/runner/go/pkg/mod/go.lsp.dev/[email protected]/conn.go:206 +0x24b\ncreated by go.lsp.dev/jsonrpc2.(*conn).Go\n\t/home/runner/go/pkg/mod/go.lsp.dev/[email protected]/conn.go:189 +0xb0\n"
    

    Here's a minmal config to reproduce (same as I used for https://github.com/neovim/nvim-lspconfig/issues/2252):

    Click me local on_windows = vim.loop.os_uname().version:match 'Windows'

    local function join_paths(...) local path_sep = on_windows and '\' or '/' local result = table.concat({ ... }, path_sep) return result end

    vim.cmd [[set runtimepath=$VIMRUNTIME]]

    local temp_dir = vim.loop.os_getenv 'TEMP' or '/tmp'

    vim.cmd('set packpath=' .. join_paths(temp_dir, 'nvim', 'site'))

    local package_root = join_paths(temp_dir, 'nvim', 'site', 'pack') local install_path = join_paths(package_root, 'packer', 'start', 'packer.nvim') local compile_path = join_paths(install_path, 'plugin', 'packer_compiled.lua')

    local function load_plugins() require('packer').startup { { 'wbthomason/packer.nvim', 'towolf/vim-helm', 'neovim/nvim-lspconfig', }, config = { package_root = package_root, compile_path = compile_path, }, } end

    local load_config = function() vim.lsp.set_log_level 'trace' require('vim.lsp.log').set_format_func(vim.inspect) local nvim_lsp = require 'lspconfig' local on_attach = function(_, bufnr) local function buf_set_option(...) vim.api.nvim_buf_set_option(bufnr, ...) end

    buf_set_option('omnifunc', 'v:lua.vim.lsp.omnifunc')
    
    -- Mappings.
    local opts = { buffer = bufnr, noremap = true, silent = true }
    vim.keymap.set('n', 'gD', vim.lsp.buf.declaration, opts)
    vim.keymap.set('n', 'gd', vim.lsp.buf.definition, opts)
    vim.keymap.set('n', 'K', vim.lsp.buf.hover, opts)
    vim.keymap.set('n', 'gi', vim.lsp.buf.implementation, opts)
    vim.keymap.set('n', '<C-k>', vim.lsp.buf.signature_help, opts)
    vim.keymap.set('n', '<space>wa', vim.lsp.buf.add_workspace_folder, opts)
    vim.keymap.set('n', '<space>wr', vim.lsp.buf.remove_workspace_folder, opts)
    vim.keymap.set('n', '<space>wl', function()
      print(vim.inspect(vim.lsp.buf.list_workspace_folders()))
    end, opts)
    vim.keymap.set('n', '<space>D', vim.lsp.buf.type_definition, opts)
    vim.keymap.set('n', '<space>rn', vim.lsp.buf.rename, opts)
    vim.keymap.set('n', 'gr', vim.lsp.buf.references, opts)
    vim.keymap.set('n', '<space>e', vim.diagnostic.open_float, opts)
    vim.keymap.set('n', '[d', vim.diagnostic.goto_prev, opts)
    vim.keymap.set('n', ']d', vim.diagnostic.goto_next, opts)
    vim.keymap.set('n', '<space>q', vim.diagnostic.setloclist, opts)
    

    end

    vim.api.nvim_create_autocmd({'BufNewFile', 'BufRead'} , { pattern = '/templates/.yaml,/templates/.tpl,.gotmpl,helmfile.yaml', -- pattern = 'deployment.yaml', callback = function() vim.opt_local.filetype = 'helm' end })

    -- Add the server that troubles you here

    -- https://github.com/mrjosh/helm-ls#nvim-lspconfig-setup

    local configs = require('lspconfig.configs') local util = require('lspconfig.util')

    if not configs.helm_ls then configs.helm_ls = { default_config = { cmd = {"helm_ls", "serve"}, filetypes = {'helm'}, root_dir = function(fname) return util.root_pattern('Chart.yaml')(fname) end, }, } end local lsp = require('lspconfig') lsp.helm_ls.setup { filetypes = {"helm"}, cmd = {"helm_ls", "serve"}, }

    lsp.yamlls.setup{ -- on_attach = on_attach, -- -- filetypes = { "yaml", "yaml.docker-compose" }, -- filetypes = { "yaml.docker-compose" }, -- flags = lsp_flags, -- capabilities = capabilities, -- settings = { -- yaml = { -- completion = true, }

    print [[You can find your log at $HOME/.cache/nvim/lsp.log. Please paste in a github issue under a details tag as described in the issue template.]] end

    if vim.fn.isdirectory(install_path) == 0 then vim.fn.system { 'git', 'clone', 'https://github.com/wbthomason/packer.nvim', install_path } load_plugins() require('packer').sync() local packer_group = vim.api.nvim_create_augroup('Packer', { clear = true }) vim.api.nvim_create_autocmd( 'User', { pattern = 'PackerComplete', callback = load_config, group = packer_group, once = true } ) else load_plugins() require('packer').sync() load_config() end

  • Publish a release

    Publish a release

    Please do a release - it helps ppl using GH package managers to properly install it without browsing the release page. I know it's still in development Thx !

  • Questions and feedback

    Questions and feedback

    Hi, first off, awesome work on this!

    It is super useful in its current state, and I only really miss few things:

    • go-to/peek definition - i. e. being able to hover (K) or vim.lsp.buf.definition()
    • running alongside yaml LSP - not sure how this is possible (I guess the yaml needs to be stripped), however, what I hope to achieve is yaml schema validation
    • extra: perhaps https://github.com/ngalaiko/tree-sitter-go-template can be adopted for better syntax highlighting

    A question though, do you have a wishlist or set of features already?

    Edit: Trying not to mix up LSP and TS

Helm Operator is designed to managed the full lifecycle of Helm charts with Kubernetes CRD resource.

Helm Operator Helm Operator is designed to install and manage Helm charts with Kubernetes CRD resource. Helm Operator does not create the Helm release

Aug 25, 2022
Create changelogs for Helm Charts, based on git history

helm-changelog Create changelogs for Helm Charts, based on git history. The application depends on the assumption that the helm chart is released on t

Nov 27, 2022
A helm v3 plugin to get values from a previous release

helm-val helm-val is a helm plugin to fetch values from a previous release. Getting started Installation To install the plugin: $ helm plugin install

Dec 11, 2022
Dredger is a utility to help convert helm charts to Terraform modules using kubernetes provider.

dredger Dredger is a utility to help convert helm charts to Terraform modules using kubernetes provider. Dredger is made of dark magic and cannot full

Aug 25, 2022
Render helm values-files from others

helm-plugin-render-values The Helm downloader plugin with rendering templated values files Install Use helm CLI to install this plugin: $ helm plugin

Aug 1, 2022
sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC), and Everything as Code. So it is a tool for DevOps.

sail 中文文档 sail is an operation framework based on Ansible/Helm. sail follows the principles of Infrastructure as Code (IaC), Operation as Code (OaC),a

Dec 16, 2021
Plugin for Helm to integrate the sigstore ecosystem

helm-sigstore Plugin for Helm to integrate the sigstore ecosystem. Search, upload and verify signed Helm Charts in the Rekor Transparency Log. Info he

Dec 21, 2022
Creates Helm chart from Kubernetes yaml

Helmify CLI that creates Helm charts from kubernetes yamls. Helmify reads a list of supported k8s objects from stdin and converts it to a helm chart.

Dec 28, 2022
A best practices Go source project with unit-test and integration test, also use skaffold & helm to automate CI & CD at local to optimize development cycle

Dependencies Docker Go 1.17 MySQL 8.0.25 Bootstrap Run chmod +x start.sh if start.sh script does not have privileged to run Run ./start.sh --bootstrap

Apr 4, 2022
The CLI tool glueing Git, Docker, Helm and Kubernetes with any CI system to implement CI/CD and Giterminism
The CLI tool glueing Git, Docker, Helm and Kubernetes with any CI system to implement CI/CD and Giterminism

___ werf is an Open Source CLI tool written in Go, designed to simplify and speed up the delivery of applications. To use it, you need to describe the

Jan 4, 2023
Helm : a tool for managing Kubernetes charts

Helm Helm is a tool for managing Kubernetes charts. Charts are packages of pre-configured Kubernetes resources. Use Helm to: Find and use popular soft

Nov 30, 2021
Katenary - Convert docker-compose to a configurable helm chart
Katenary - Convert docker-compose to a configurable helm chart

Katenary is a tool to help transforming docker-compose files to a working Helm C

Dec 23, 2022
Kubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates
Kubernetes Operator to automate Helm, DaemonSet, StatefulSet & Deployment updates

Keel - automated Kubernetes deployments for the rest of us Website https://keel.sh Slack - kubernetes.slack.com look for channel #keel Keel is a tool

Dec 28, 2022
Becca - A simple dynamic language for exploring language design

Becca A simple dynamic language for exploring language design What is Becca Becc

Aug 15, 2022
easyssh-proxy provides a simple implementation of some SSH protocol features in Go

easyssh-proxy easyssh-proxy provides a simple implementation of some SSH protocol features in Go. Feature This project is forked from easyssh but add

Dec 30, 2022
This is a K6 extension to be able to test using NATS protocol
This is a K6 extension to be able to test using NATS protocol

xk6-nats This is a k6 extension using the xk6 system, that allows to use NATS protocol. ❗ This is a proof of concept, isn't supported by the k6 team,

Nov 24, 2022
LLS-Exporter exports fuel level sensor data (rs-485 lls protocol) as prometheus metrics

LLS Exporter LLS Exporter reads rs485/rs232 data from serial port, decodes lls protocol and exports fuel level sensor data as prometheus metrics. Lice

Dec 14, 2021
Extensible Provisioning Protocol (EPP) in Go

EPP for Go Extensible Provisioning Protocol (EPP) for Go. EPP is an XML-based protocol for provisioning and managing domain names and other objects at

Jan 18, 2022
fabric 1.4 bdls protocol on top of the SmartBFT 1.4 project

Hyperledger Fabric Note: This is a read-only mirror of the formal Gerrit repository, where active development is ongoing. Issue tracking is handled in

Feb 22, 2022