diff options
| author | Mike Vink <mike1994vink@gmail.com> | 2022-10-29 16:26:38 +0200 |
|---|---|---|
| committer | Mike Vink <mike1994vink@gmail.com> | 2022-10-29 16:26:38 +0200 |
| commit | 18a37da86840c9e111172f5f24ceebe227ca56ed (patch) | |
| tree | 42bd007c928fb5a32c309985b17c03147390cf23 /neovim/lua/vimrc/terragrunt.lua | |
| parent | a39a1c7cb6a81764bb5c05155243c16c2ddfb7f6 (diff) | |
add neovim lua files
Diffstat (limited to 'neovim/lua/vimrc/terragrunt.lua')
| -rw-r--r-- | neovim/lua/vimrc/terragrunt.lua | 141 |
1 files changed, 141 insertions, 0 deletions
diff --git a/neovim/lua/vimrc/terragrunt.lua b/neovim/lua/vimrc/terragrunt.lua new file mode 100644 index 0000000..84ac867 --- /dev/null +++ b/neovim/lua/vimrc/terragrunt.lua @@ -0,0 +1,141 @@ +local vim = vim +local cmd = vim.cmd +local fn = vim.fn + +local M = {} +function M.setup(opts) + local env_file = opts.env_file or '' + local home = os.getenv('HOME') + local user = os.getenv('USER') + local cwd = opts.cwd or home + P(cwd) + + local functions = {} + + functions.clean = function() + require('firvish.job_control').start_job({ + cmd = { + "docker", + "run", + "--interactive", + "--rm", + "--env-file", + env_file, + "--volume", + cwd .. ":" .. cwd, + "--workdir", + cwd, + "alpine/terragrunt", + "/bin/sh", + "-c", + [[find ]] .. cwd .. [[ -type d -name .terragrunt-cache -prune -exec rm -rf {} \; &&]] + .. [[find ]] .. cwd .. [[ -type f -name .terraform.lock.hcl -prune -exec rm -rf {} \;]] + }, + filetype = "log", + title = "clean", + listed = true, + output_qf = false, + is_background_job = true + }) + end + + functions.plan = function(terragrunt_path, dirty) + if not dirty then + functions.clean() + end + P(terragrunt_path) + local cmd = { + "docker", + "run", + "--interactive", + "--rm", + "--env-file", + env_file, + "--volume", + cwd .. ":" .. cwd, + "--workdir", + cwd .. "/" .. terragrunt_path, + "alpine/terragrunt", + "terragrunt", + "plan" + } + require('firvish.job_control').start_job({ + cmd = cmd, + filetype = "log", + title = "plan", + listed = true, + output_qf = true, + is_background_job = false + }) + end + + functions.apply = function(terragrunt_path, dirty) + if not dirty then + functions.clean() + end + local cmd = { + "docker", + "run", + "--interactive", + "--rm", + "--env-file", + env_file, + "--volume", + cwd .. ":" .. cwd, + "--workdir", + cwd .. "/" .. terragrunt_path, + "alpine/terragrunt", + "terragrunt", + "apply", + "--terragrunt-non-interactive", + "--auto-approve" + } + require('firvish.job_control').start_job({ + cmd = cmd, + filetype = "log", + title = "plan", + listed = true, + output_qf = true, + is_background_job = false + }) + end + + functions.destroy = function(terragrunt_path, dirty) + if not dirty then + functions.clean() + end + local cmd = { + "docker", + "run", + "--interactive", + "--rm", + "--env-file", + env_file, + "--volume", + cwd .. ":" .. cwd, + "--workdir", + cwd .. "/" .. terragrunt_path, + "alpine/terragrunt", + "terragrunt", + "destroy", + "--terragrunt-non-interactive", + "--auto-approve" + } + require('firvish.job_control').start_job({ + cmd = cmd, + filetype = "log", + title = "plan", + listed = true, + output_qf = true, + is_background_job = false + }) + end + + _G.terragrunt_functions = functions + cmd [[command! -nargs=1 -complete=dir -bang TGplan :lua _G.terragrunt_functions.plan("<args>", "<bang>" ~= "!")]] + cmd [[command! -nargs=1 -complete=dir -bang TGapply :lua _G.terragrunt_functions.apply("<args>", "<bang>" ~= "!")]] + cmd [[command! -nargs=1 -complete=dir -bang TGdestroy :lua _G.terragrunt_functions.destroy("<args>", "<bang>" ~= "!")]] + cmd [[command! TGclean :lua _G.terragrunt_functions.clean()]] + +end +return M |
