summaryrefslogtreecommitdiff
path: root/neovim/lua/vimrc/terragrunt.lua
diff options
context:
space:
mode:
authorMike Vink <mike1994vink@gmail.com>2022-10-29 16:26:38 +0200
committerMike Vink <mike1994vink@gmail.com>2022-10-29 16:26:38 +0200
commit18a37da86840c9e111172f5f24ceebe227ca56ed (patch)
tree42bd007c928fb5a32c309985b17c03147390cf23 /neovim/lua/vimrc/terragrunt.lua
parenta39a1c7cb6a81764bb5c05155243c16c2ddfb7f6 (diff)
add neovim lua files
Diffstat (limited to 'neovim/lua/vimrc/terragrunt.lua')
-rw-r--r--neovim/lua/vimrc/terragrunt.lua141
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