summaryrefslogtreecommitdiff
path: root/neovim/lua/vimrc/helm.lua
diff options
context:
space:
mode:
Diffstat (limited to 'neovim/lua/vimrc/helm.lua')
-rw-r--r--neovim/lua/vimrc/helm.lua129
1 files changed, 129 insertions, 0 deletions
diff --git a/neovim/lua/vimrc/helm.lua b/neovim/lua/vimrc/helm.lua
new file mode 100644
index 0000000..5597759
--- /dev/null
+++ b/neovim/lua/vimrc/helm.lua
@@ -0,0 +1,129 @@
+local vim = vim
+local cmd = vim.cmd
+local fn = vim.fn
+
+local M = {}
+function M.setup(opts)
+ assert(opts.release_name, "release name is required. ")
+ assert(opts.chart_dir, "chartdir is required. ")
+ assert(opts.docker_dir, "docker_dir is required. ")
+ assert(opts.docker_tag, "docker_tag is required. ")
+
+ local values_files = opts.values_files or {}
+ local values_sets = opts.values_sets or {}
+ local cluster = opts.cluster or "so"
+
+ local dependency_update = ""
+ if opts.dependency_update then
+ dependency_update = "--dependency-update"
+ end
+
+ table.insert(values_sets, "envshort=" .. cluster)
+ table.insert(values_sets, "cluster=" .. cluster)
+ table.insert(values_sets, "clusterHost=" .. cluster .. ".stater.com")
+
+ local functions = {}
+ functions.helm_upgrade = function(output_qf)
+ local cmd = {
+ "helm",
+ "upgrade",
+ "--install",
+ "--values",
+ string.join(values_files, ","),
+ opts.release_name,
+ "."
+ }
+ require('firvish.job_control').start_job({
+ cmd = cmd,
+ filetype = "log",
+ title = "upgrade",
+ listed = true,
+ output_qf = output_qf,
+ is_background_job = true,
+ cwd = opts.chart_dir,
+ })
+ end
+
+ functions.helm_delete = function(output_qf)
+ require('firvish.job_control').start_job({
+ cmd = {
+ "helm",
+ "delete",
+ opts.release_name,
+ },
+ filetype = "log",
+ title = "delete",
+ listed = true,
+ output_qf = output_qf,
+ is_background_job = true,
+ cwd = opts.chart_dir,
+ })
+ end
+
+ functions.helm_build = function(output_qf)
+ local cmd = {
+ "/bin/sh",
+ "-c",
+ string.format(
+ [[if docker build -t %s %s && ]] ..
+ [[docker push %s ; then ]] ..
+ [[helm delete %s ; ]] ..
+ [[helm upgrade --install %s --values %s --set %s %s . ; fi]],
+ opts.docker_tag,
+ opts.docker_dir,
+ opts.docker_tag,
+ opts.release_name,
+ dependency_update,
+ string.join(values_files, ","),
+ string.join(values_sets, ","),
+ opts.release_name
+ )
+ }
+ P(cmd)
+ require('firvish.job_control').start_job({
+ cmd = cmd,
+ filetype = "log",
+ title = "delete",
+ listed = true,
+ output_qf = output_qf,
+ is_background_job = true,
+ cwd = opts.chart_dir,
+ })
+ end
+
+ functions.helm_debug = function(update_remote)
+ local cmd = {
+ "helm",
+ "template",
+ "--debug",
+ "--values",
+ string.join(values_files, ","),
+ "--set",
+ string.join(values_sets, ","),
+ opts.release_name,
+ "."
+ }
+ P(cmd)
+ if update_remote then
+ table.insert(cmd, 3, "--dependency-update")
+ end
+ require('firvish.job_control').start_job({
+ cmd = cmd,
+ filetype = "log",
+ title = "delete",
+ listed = true,
+ output_qf = false,
+ is_background_job = false,
+ cwd = opts.chart_dir,
+ })
+ end
+
+ _G.helm_functions = functions
+ cmd [[command! -bang HelmPut :lua _G.helm_functions.helm_upgrade("<bang>" ~= "!")]]
+ cmd [[command! -bang HelmDelete :lua _G.helm_functions.helm_delete("<bang>" ~= "!")]]
+
+ cmd [[command! -bang HelmBuild :lua _G.helm_functions.helm_build("<bang>" ~= "!")]]
+ cmd [[command! -bang HelmBug :lua _G.helm_functions.helm_debug("<bang>" ~= "!")]]
+
+end
+return M