From 76c7d2e5ae88268ebb205f149d4ea7c51b561a66 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sat, 23 Dec 2023 19:23:39 +0100 Subject: [PATCH 01/29] Small updates --- .github/workflows/build.yml | 4 +-- Makefile | 2 +- go.mod | 33 +++++++++++------------- go.sum | 51 +++++++++++++------------------------ 4 files changed, 36 insertions(+), 54 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b951c47..8dae721 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,13 +20,13 @@ jobs: - name: setup-go uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.21' cache: false - name: security uses: securego/gosec@master with: - args: -exclude=G204 ./... + args: -exclude=G104 -exclude=G204 ./... - name: lint uses: golangci/golangci-lint-action@v3 diff --git a/Makefile b/Makefile index c25b4fe..f6622d0 100644 --- a/Makefile +++ b/Makefile @@ -8,7 +8,7 @@ doctoc: ## Create table of contents with doctoc doctoc . goreleaser: ## Generate go binaries using goreleaser (brew install goreleaser) - goreleaser release --snapshot --clean + goreleaser release --snapshot --clean -p 2 golangci-lint: ## Lint Golang code (brew install golangci-lint) golangci-lint run --fix diff --git a/go.mod b/go.mod index 01daa63..70b371c 100644 --- a/go.mod +++ b/go.mod @@ -1,14 +1,12 @@ module github.com/containerscrew/tftools -go 1.21 - -toolchain go1.21.5 +go 1.21.5 require ( github.com/charmbracelet/glamour v0.6.0 github.com/dimiro1/banner v1.1.0 github.com/fatih/color v1.16.0 - github.com/hashicorp/terraform-json v0.18.0 + github.com/hashicorp/terraform-json v0.20.0 github.com/mattn/go-colorable v0.1.13 github.com/spf13/cobra v1.8.0 ) @@ -16,27 +14,26 @@ require ( require ( github.com/alecthomas/chroma v0.10.0 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect + github.com/aymanbagabas/go-osc52 v1.0.3 // indirect github.com/aymerick/douceur v0.2.0 // indirect - github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect - github.com/dlclark/regexp2 v1.10.0 // indirect - github.com/gorilla/css v1.0.1 // indirect + github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2 // indirect + github.com/dlclark/regexp2 v1.4.0 // indirect + github.com/gorilla/css v1.0.0 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.15 // indirect - github.com/microcosm-cc/bluemonday v1.0.26 // indirect + github.com/mattn/go-runewidth v0.0.14 // indirect + github.com/microcosm-cc/bluemonday v1.0.21 // indirect github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.15.2 // indirect + github.com/muesli/termenv v0.13.0 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/rivo/uniseg v0.4.4 // indirect + github.com/rivo/uniseg v0.2.0 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/stretchr/testify v1.8.0 // indirect - github.com/yuin/goldmark v1.6.0 // indirect - github.com/yuin/goldmark-emoji v1.0.2 // indirect + github.com/yuin/goldmark v1.5.2 // indirect + github.com/yuin/goldmark-emoji v1.0.1 // indirect github.com/zclconf/go-cty v1.14.1 // indirect - golang.org/x/net v0.19.0 // indirect - golang.org/x/sys v0.15.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/net v0.0.0-20221002022538-bcab6841153b // indirect + golang.org/x/sys v0.14.0 // indirect + golang.org/x/text v0.11.0 // indirect ) diff --git a/go.sum b/go.sum index e40a273..7d68b43 100644 --- a/go.sum +++ b/go.sum @@ -2,36 +2,32 @@ github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbf github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= +github.com/aymanbagabas/go-osc52 v1.0.3 h1:DTwqENW7X9arYimJrPeGZcV0ln14sGMt3pHZspWD+Mg= github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= -github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= -github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/charmbracelet/glamour v0.6.0 h1:wi8fse3Y7nfcabbbDuwolqTqMQPMnVPeZhDM273bISc= github.com/charmbracelet/glamour v0.6.0/go.mod h1:taqWV4swIMMbWALc0m7AfE9JkPSU8om2538k9ITBxOc= +github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2 h1:tjT4Jp4gxECvsJcYpAMtW2I3YqzBTPuB67OejxXs86s= github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= -github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= -github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dimiro1/banner v1.1.0 h1:TSfy+FsPIIGLzaMPOt52KrEed/omwFO1P15VA8PMUh0= github.com/dimiro1/banner v1.1.0/go.mod h1:tbL318TJiUaHxOUNN+jnlvFSgsh/RX7iJaQrGgOiTco= +github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= -github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0= -github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= -github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= -github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/terraform-json v0.18.0 h1:pCjgJEqqDESv4y0Tzdqfxr/edOIGkjs8keY42xfNBwU= -github.com/hashicorp/terraform-json v0.18.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= +github.com/hashicorp/terraform-json v0.20.0 h1:cJcvn4gIOTi0SD7pIy+xiofV1zFA3hza+6K+fo52IX8= +github.com/hashicorp/terraform-json v0.20.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= @@ -46,61 +42,50 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= +github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= -github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= +github.com/microcosm-cc/bluemonday v1.0.21 h1:dNH3e4PSyE4vNX+KlRGHT5KrSvjeUkoNPwEORjffHJg= github.com/microcosm-cc/bluemonday v1.0.21/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM= -github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58= -github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs= github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= +github.com/muesli/termenv v0.13.0 h1:wK20DRpJdDX8b7Ek2QfhvqhRQFZ237RGRO0RQ/Iqdy0= github.com/muesli/termenv v0.13.0/go.mod h1:sP1+uffeLaEYpyOTb8pLCUctGcGLnoFjSn4YJK5e2bc= -github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= -github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= -github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= +github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.3.7/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/yuin/goldmark v1.5.2 h1:ALmeCk/px5FSm1MAcFBAsVKZjDuMVj8Tm7FFIlMJnqU= github.com/yuin/goldmark v1.5.2/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68= -github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= +github.com/yuin/goldmark-emoji v1.0.1 h1:ctuWEyzGBwiucEqxzwe0SOYDXPAucOrE9NQC18Wa1os= github.com/yuin/goldmark-emoji v1.0.1/go.mod h1:2w1E6FEWLcDQkoTE+7HU6QF1F6SLlNGjRIBbIZQFqkQ= -github.com/yuin/goldmark-emoji v1.0.2 h1:c/RgTShNgHTtc6xdz2KKI74jJr6rWi7FPgnP9GAsO5s= -github.com/yuin/goldmark-emoji v1.0.2/go.mod h1:RhP/RWpexdp+KHs7ghKnifRoIs/Bq4nDS7tRbCkOwKY= github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= +golang.org/x/net v0.0.0-20221002022538-bcab6841153b h1:6e93nYa3hNqAvLr0pD4PN1fFS+gKzp2zAXqrnTCstqU= golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= -golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= -golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= -golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= +golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From 957d93ec75dd323fcecdcd04363a17ab83351997 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sat, 23 Dec 2023 19:26:11 +0100 Subject: [PATCH 02/29] Fix go versions --- .github/workflows/build.yml | 2 +- .go-version | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 8dae721..41ae72e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,7 +20,7 @@ jobs: - name: setup-go uses: actions/setup-go@v4 with: - go-version: '1.21' + go-version: '1.21.5' cache: false - name: security diff --git a/.go-version b/.go-version index f5b00dc..d6a49eb 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.20.3 +1.21.5 \ No newline at end of file From 4713c89f999df4fdd4a791295d629162e960469e Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sat, 23 Dec 2023 19:32:43 +0100 Subject: [PATCH 03/29] Fix go versions --- .github/workflows/build.yml | 2 +- .github/workflows/release.yml | 2 +- Makefile | 3 +++ 3 files changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 41ae72e..df1abb7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -26,7 +26,7 @@ jobs: - name: security uses: securego/gosec@master with: - args: -exclude=G104 -exclude=G204 ./... + args: -exclude=G104,G204 ./... - name: lint uses: golangci/golangci-lint-action@v3 diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 543842e..cb4b89d 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -23,7 +23,7 @@ jobs: - name: setup-go uses: actions/setup-go@v4 with: - go-version: '1.20' + go-version: '1.21.5' - name: Import GPG key id: import_gpg diff --git a/Makefile b/Makefile index f6622d0..d443c27 100644 --- a/Makefile +++ b/Makefile @@ -19,6 +19,9 @@ pre-commit: ## Run pre-commit go-generate: ## Run go generate go generate ./... +gosec: ## Run gosec + gosec -exclude=G104,G204 ./... + ##https://github.com/moovweb/gvm ##go get golang.org/x/tools/cmd/goimports ##go install golang.org/x/tools/cmd/goimports From e1aff85a1b9d68d10c80387b50e4cc0fa9cf77cb Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sat, 23 Dec 2023 19:38:48 +0100 Subject: [PATCH 04/29] Fixing build pipeline --- .github/workflows/build.yml | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index df1abb7..b483823 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,15 +13,17 @@ jobs: build: name: Go build 🚀 runs-on: ubuntu-latest + env: + GO111MODULE: on steps: - name: checkout uses: actions/checkout@v3 - - name: setup-go - uses: actions/setup-go@v4 - with: - go-version: '1.21.5' - cache: false + # - name: setup-go + # uses: actions/setup-go@v4 + # with: + # go-version: '1.21.5' + # cache: false - name: security uses: securego/gosec@master From eac9eada9b9a40a6b731bc5495ed9f8c537511cd Mon Sep 17 00:00:00 2001 From: goreleaserbot Date: Sat, 23 Dec 2023 19:40:57 +0100 Subject: [PATCH 05/29] Brew formula update for tftools version v0.6.0 --- Formula/tftools.rb | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/Formula/tftools.rb b/Formula/tftools.rb index a893c52..8bee7ca 100644 --- a/Formula/tftools.rb +++ b/Formula/tftools.rb @@ -5,21 +5,21 @@ class Tftools < Formula desc "Easy CLI with useful terraform/terragrunt tools" homepage "https://github.com/containerscrew/tftools" - version "0.5.0" + version "0.6.0" license "Apache 2.0 license" on_macos do if Hardware::CPU.arm? - url "https://github.com/containerscrew/tftools/releases/download/v0.5.0/tftools-darwin-arm64.tar.gz" - sha256 "3c97d56ee456ffa50976f1bf64c557a816e78a45805fdf538b06110cf188ef46" + url "https://github.com/containerscrew/tftools/releases/download/v0.6.0/tftools-darwin-arm64.tar.gz" + sha256 "50ba8ef610d03183432dbc7b6af3c12d08779db1ad13f21bb6b80f110ea1d5be" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v0.5.0/tftools-darwin-amd64.tar.gz" - sha256 "1cfd09da1248cc72d162269246fd3202c6078eae8831fdf4414489a033622a07" + url "https://github.com/containerscrew/tftools/releases/download/v0.6.0/tftools-darwin-amd64.tar.gz" + sha256 "156f47166c2f2d5ed4890f5b7951e26fbb2ce8ddad6c9e02de30f24c9da8c1c6" def install bin.install "tftools" @@ -28,17 +28,17 @@ def install end on_linux do - if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v0.5.0/tftools-linux-amd64.tar.gz" - sha256 "dbceb1ac7a8dd7a0c8198f64478f96c4eb179b43fc7c59999268d68fc676f3a3" + if Hardware::CPU.arm? && Hardware::CPU.is_64_bit? + url "https://github.com/containerscrew/tftools/releases/download/v0.6.0/tftools-linux-arm64.tar.gz" + sha256 "8f9e69c93db47191d07634a31c384ee55331f46d1c48056f231dafef22af4cf6" def install bin.install "tftools" end end - if Hardware::CPU.arm? && Hardware::CPU.is_64_bit? - url "https://github.com/containerscrew/tftools/releases/download/v0.5.0/tftools-linux-arm64.tar.gz" - sha256 "10b9348ae29063a6082225d94b765b177b18a5837869d905105abae13a3abe9e" + if Hardware::CPU.intel? + url "https://github.com/containerscrew/tftools/releases/download/v0.6.0/tftools-linux-amd64.tar.gz" + sha256 "ca1206562b71e8e3215a342ceecc5042c02d463924d5a61dd2c552d8403f673a" def install bin.install "tftools" From 77122edbed092363ed4293e417dc7c50983f716a Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sat, 23 Dec 2023 21:38:20 +0100 Subject: [PATCH 06/29] Fix golangci linters & update and organize documentation --- .github/workflows/build.yml | 12 ++-- .go-version | 2 +- README.md | 54 +++++----------- assets/example.png | Bin 156156 -> 97917 bytes cmd/commands.go | 6 +- cmd/root.go | 1 + docs/develop.md | 5 ++ docs/usage.md | 61 ++++++++++++++++-- internal/parser/parser.go | 6 +- .../utils/markdown_render/pretty_markdown.go | 10 ++- 10 files changed, 95 insertions(+), 62 deletions(-) create mode 100644 docs/develop.md diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b483823..df1abb7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -13,17 +13,15 @@ jobs: build: name: Go build 🚀 runs-on: ubuntu-latest - env: - GO111MODULE: on steps: - name: checkout uses: actions/checkout@v3 - # - name: setup-go - # uses: actions/setup-go@v4 - # with: - # go-version: '1.21.5' - # cache: false + - name: setup-go + uses: actions/setup-go@v4 + with: + go-version: '1.21.5' + cache: false - name: security uses: securego/gosec@master diff --git a/.go-version b/.go-version index d6a49eb..ce2dd53 100644 --- a/.go-version +++ b/.go-version @@ -1 +1 @@ -1.21.5 \ No newline at end of file +1.21.5 diff --git a/README.md b/README.md index 1362c17..11df8c9 100644 --- a/README.md +++ b/README.md @@ -16,14 +16,12 @@ **Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* - [Badges](#badges) -- [TF summarize](#tf-summarize) - - [Example](#example) - - [Steps](#steps) +- [Tftools summarize](#tftools-summarize) - [Installation](#installation) - [Quick installation (latest version)](#quick-installation-latest-version) - [Usage](#usage) - [Built-in subcommand](#built-in-subcommand) -- [Credits](#credits) +- [Example](#example) - [TO DO](#to-do) - [Contribution](#contribution) - [LICENSE](#license) @@ -39,34 +37,10 @@ [![Release](https://img.shields.io/github/release/containerscrew/tftools)](https://github.com/containerscrew/tftools/releases/latest) [![GitHub Releases Stats](https://img.shields.io/github/downloads/containerscrew/tftools/total.svg?logo=github)](https://somsubhra.github.io/github-release-stats/?username=containerscrew&repository=tftools) -# TF summarize +# Tftools summarize **The concern is:** I have a lot of changes in terraform and I need a clear way of the concepts that are going to be **deleted|changed|created** only with the resource address. It can be messy to have a super tf plan output when there are **many changes**. - -## Example - -Imagine you are going to: - -- Create a new s3 test bucket -- Change your ALB ingress controller policy and vpc-cni addon -- Delete grafana backup tool helm chart - -## Steps - -1. Makes the appropriate changes from code. - -2. Execute `tfsum terraform`, then you will see the original output of a plan/apply and a summary only printing the resource addr and the action. - -> tfsum is a custom function. See [usage](#usage) or [tfsum.sh](scripts/tfsum.sh) - -![tfsum](assets/example.png) - -*This summarized output can be useful, for example, for:* - -* You are migrating a terraform module and there are many changes that may be important in terms of destroying/creating resources (e.g., if you are migrating an EKS module from v17.X to v19.X). -* You use GitOps and deploy terraform from pipeline. The pipeline that makes the `terraform plan` can always show a summary of what is going to change (instead of having a super output of the original terraform plan). - # Installation ## Quick installation (latest version) @@ -75,7 +49,7 @@ Imagine you are going to: curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | bash ``` -Take a look inside docs [install](./docs/install.md) +Take a look inside [install](./docs/install.md) documentation for other installation methods. # Usage @@ -89,22 +63,24 @@ Take a look inside docs [usage](./docs/usage.md) tftools usage ``` -> Requires internet connectivity, as it fetches the [usage.md](https://raw.githubusercontent.com/containerscrew/tftools/main/docs/usage.md) file. +> Requires internet connectivity, as it fetches the [usage.md](docs/usage.md) file. + +# Example -# Credits -- [Cobra to build beautiful CLI](https://cobra.dev/) -- [Terraform json structs for data parsing](https://github.com/hashicorp/terraform-json) -- [Distroless for container build](https://github.com/GoogleContainerTools/distroless) -- [Glamour markdown render](https://github.com/charmbracelet/glamour) -- [Official issue to solve this concern](https://github.com/hashicorp/terraform/issues/10507) -- [Git leaks](https://github.com/gitleaks/gitleaks-action) -- [To my teacher of Golang @gilmiriam](https://github.com/gilmiriam) +![example](assets/example.png) + +*This summarized output can be useful, for example, for:* + +* You are migrating a terraform module and there are many changes that may be important in terms of destroying/creating resources (e.g., if you are migrating an EKS module from v17.X to v19.X). +* You use GitOps and deploy terraform from pipeline. The pipeline that makes the `terraform plan` can always show a summary of what is going to change (instead of having a super output of the original terraform plan). # TO DO * Improve error handling * Add tests, although I have no experience * Code refactor is certainly needed! +* Create new subcommand for an interative terraform state mv target migration (when you need to move a lot of resources) +* Other subcommand when you need to apply only certain targets (terraform apply -target=x -target=x ...) # Contribution diff --git a/assets/example.png b/assets/example.png index a5d5d97e780f8d0f4bad6ec91521a9457a5e1c92..1c8b7e69addf2a7654dbc712f180e541d1d0f549 100644 GIT binary patch literal 97917 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 I#PHYu0Xf7=xc~qF literal 156156 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

^^+2DEW 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 UU%Ga~r$XJ5Rl1Qc{ovXE0l-iC0RR91 diff --git a/cmd/commands.go b/cmd/commands.go index 4c1b8aa..99598ad 100644 --- a/cmd/commands.go +++ b/cmd/commands.go @@ -51,7 +51,11 @@ var usageCmd = &cobra.Command{ Short: "print usage", Long: "print usage in a pretty markdown render using terminal. This require internet connection since it fetch usage.md from github url", Run: func(cmd *cobra.Command, args []string) { - markdownrender.RenderUsage() + if len(version) == 0 { + version = "main" + } + + markdownrender.RenderUsage(version) }, } diff --git a/cmd/root.go b/cmd/root.go index bc89e70..c393f0a 100644 --- a/cmd/root.go +++ b/cmd/root.go @@ -17,6 +17,7 @@ import ( func printBanner() { templ := `{{ .AnsiColor.BrightMagenta }} {{ .Title "tftools" "" 2 }}{{ .AnsiColor.Default }} Author: github.com/containerscrew + License: Apache License 2.0 Now: {{ .Now "Monday, 2 Jan 2006" }}` banner.InitString(colorable.NewColorableStdout(), true, true, templ) fmt.Printf("\n\n") diff --git a/docs/develop.md b/docs/develop.md new file mode 100644 index 0000000..1cdc750 --- /dev/null +++ b/docs/develop.md @@ -0,0 +1,5 @@ +# Pre-commit install before git push + +```bash +pre-commit install +``` \ No newline at end of file diff --git a/docs/usage.md b/docs/usage.md index 301498b..3f33ecf 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -4,7 +4,9 @@ - [Usage](#usage) - [Summarize](#summarize) - - [Function for ~/.zshrc](#function-for-zshrc) + - [Function for zsh or bash shell](#function-for-zsh-or-bash-shell) +- [Function for fish shell](#function-for-fish-shell) +- [Example](#example) @@ -23,10 +25,10 @@ Or if you have the file in json: terraform plan -out plan.tfplan terraform show -json plan.tfplan > plan.json cat plan.json | tftools summarize +tftools summarize ; ``` -## Function for ~/.zshrc - +## Function for zsh or bash shell Copy [this function](../scripts/tfsum.sh) in your `~/.zshrc` or `~/.bashrc` file. ```bash @@ -47,7 +49,56 @@ function tfsum() { } ``` -```bash +# Function for fish shell + +```shell +function tfsum + if test -z $argv[1] + echo "You should type 'tfsum terraform|terragrunt'" + else + echo -e "Starting tf summary..." + # Don't print output of terraform plan + # If you don't want full plan output: $argv[1] plan -out plan.tfplan > /dev/null + $argv[1] plan -out plan.tfplan + echo -e "\n" + $argv[1] show -json plan.tfplan | tftools summarize + # Delete plan out file to avoid git tracking (although is included in .gitignore) + if test -f "plan.tfplan"; rm plan.tfplan; end + end +end +``` + +Load new functions: + +```shell source ~/.zshrc -tfsum terragrunt or tfsum terraform +source ~/.bashrc +source ~/.config/fish/config.fish +``` + +# Example + +```shell +cd my-terraform-project/ +tfsum terraform +``` + +Then, you will see full plan/apply of terraform and the summarized output with the corresponding targets. + +The example: + +![example](../assets/example.png) + +> Terragrunt is also allowed + +> [!NOTE] +> If using a pipeline, probably you will not want to see all the output. Update the [tfsum functiojn](//scripts/tfsum.sh) as you need. + +Take a look to the comment: + +```bash +.... +# If you don't want full plan output: $1 plan -out plan.tfplan 1> /dev/null +$1 plan -out plan.tfplan +.... ``` diff --git a/internal/parser/parser.go b/internal/parser/parser.go index 8b38aec..26fa261 100644 --- a/internal/parser/parser.go +++ b/internal/parser/parser.go @@ -202,9 +202,9 @@ func checkOnlyTagChanges(resourceChange *tfjson.ResourceChange) (bool, error) { } func equal(a, b interface{}) bool { - aJson, _ := json.Marshal(a) - bJson, _ := json.Marshal(b) - return string(aJson) == string(bJson) + aJSON, _ := json.Marshal(a) + bJSON, _ := json.Marshal(b) + return string(aJSON) == string(bJSON) } func contains(slice []tfjson.Action, val tfjson.Action) bool { diff --git a/internal/utils/markdown_render/pretty_markdown.go b/internal/utils/markdown_render/pretty_markdown.go index 2e3ca3f..6c41955 100644 --- a/internal/utils/markdown_render/pretty_markdown.go +++ b/internal/utils/markdown_render/pretty_markdown.go @@ -9,11 +9,9 @@ import ( "github.com/charmbracelet/glamour" ) -const ( - usageURL = "https://raw.githubusercontent.com/containerscrew/tftools/main/docs/usage.md" -) +func ReadUsageFile(version string) string { + usageURL := fmt.Sprintf("https://raw.githubusercontent.com/containerscrew/tftools/%s/docs/usage.md", version) -func ReadUsageFile() string { resp, err := http.Get(usageURL) if err != nil { @@ -34,8 +32,8 @@ func ReadUsageFile() string { return string(data) } -func RenderUsage() { - data := ReadUsageFile() +func RenderUsage(version string) { + data := ReadUsageFile(version) out, err := glamour.Render(data, "dark") if err != nil { From dfd69a96b6da82516b1688937cae0b1eb3d268f6 Mon Sep 17 00:00:00 2001 From: goreleaserbot Date: Sat, 23 Dec 2023 21:40:07 +0100 Subject: [PATCH 07/29] Brew formula update for tftools version v0.6.1 --- Formula/tftools.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Formula/tftools.rb b/Formula/tftools.rb index 8bee7ca..bc3c805 100644 --- a/Formula/tftools.rb +++ b/Formula/tftools.rb @@ -5,21 +5,21 @@ class Tftools < Formula desc "Easy CLI with useful terraform/terragrunt tools" homepage "https://github.com/containerscrew/tftools" - version "0.6.0" + version "0.6.1" license "Apache 2.0 license" on_macos do if Hardware::CPU.arm? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.0/tftools-darwin-arm64.tar.gz" - sha256 "50ba8ef610d03183432dbc7b6af3c12d08779db1ad13f21bb6b80f110ea1d5be" + url "https://github.com/containerscrew/tftools/releases/download/v0.6.1/tftools-darwin-arm64.tar.gz" + sha256 "c88acd1a54f824af3bd007231dfe0e30fe90e266b37df4258408692fc50bdcf2" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.0/tftools-darwin-amd64.tar.gz" - sha256 "156f47166c2f2d5ed4890f5b7951e26fbb2ce8ddad6c9e02de30f24c9da8c1c6" + url "https://github.com/containerscrew/tftools/releases/download/v0.6.1/tftools-darwin-amd64.tar.gz" + sha256 "f4885816bc9e91c6cefddcad21974c38ad0fc33b88309d87151df16d6df72f66" def install bin.install "tftools" @@ -29,16 +29,16 @@ def install on_linux do if Hardware::CPU.arm? && Hardware::CPU.is_64_bit? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.0/tftools-linux-arm64.tar.gz" - sha256 "8f9e69c93db47191d07634a31c384ee55331f46d1c48056f231dafef22af4cf6" + url "https://github.com/containerscrew/tftools/releases/download/v0.6.1/tftools-linux-arm64.tar.gz" + sha256 "cea5b2b7a064827c0923ed0244e8eb46d75366880bc566175cf71d0f31321800" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.0/tftools-linux-amd64.tar.gz" - sha256 "ca1206562b71e8e3215a342ceecc5042c02d463924d5a61dd2c552d8403f673a" + url "https://github.com/containerscrew/tftools/releases/download/v0.6.1/tftools-linux-amd64.tar.gz" + sha256 "374732def980d1614ba3daf6e76c1cf6a9065afe929eef75dabaa99a27acaacf" def install bin.install "tftools" From 1883062b09c3860d8286b32c2a8ec328e9388f65 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sat, 23 Dec 2023 22:01:35 +0100 Subject: [PATCH 08/29] Update doc --- README.md | 2 +- docs/develop.md | 10 +++++++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 11df8c9..93efbbd 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ Take a look inside docs [usage](./docs/usage.md) ## Built-in subcommand -`tfsum usage` is subcommand that prints the contents of [usage.md](docs/usage.md) in pretty terminal markdown render +`tftools usage` is subcommand that prints the contents of [usage.md](docs/usage.md) in pretty terminal markdown render ```bash tftools usage diff --git a/docs/develop.md b/docs/develop.md index 1cdc750..da04ab2 100644 --- a/docs/develop.md +++ b/docs/develop.md @@ -1,5 +1,13 @@ + + +**Table of Contents** *generated with [DocToc](https://github.com/thlorenz/doctoc)* + +- [Pre-commit install before git push](#pre-commit-install-before-git-push) + + + # Pre-commit install before git push ```bash pre-commit install -``` \ No newline at end of file +``` From 24d81dbd1cb0ca5d24896e66d0944961a37acc0f Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sat, 23 Dec 2023 22:23:31 +0100 Subject: [PATCH 09/29] Update usage doc --- docs/usage.md | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index 3f33ecf..c6c5563 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -87,9 +87,16 @@ Then, you will see full plan/apply of terraform and the summarized output with t The example: +> [!NOTE] +> The following example is using the full output command + +```shell +tftools summarize --show-tags --show-unchanged Terragrunt is also allowed +> Terragrunt is also supported > [!NOTE] > If using a pipeline, probably you will not want to see all the output. Update the [tfsum functiojn](//scripts/tfsum.sh) as you need. From 7cd2bddd5f6fa0d29731096d9bac6be7045540f7 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sat, 23 Dec 2023 22:24:19 +0100 Subject: [PATCH 10/29] Update usage doc --- docs/usage.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/usage.md b/docs/usage.md index c6c5563..db56eb0 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -99,7 +99,7 @@ tftools summarize --show-tags --show-unchanged Terragrunt is also supported > [!NOTE] -> If using a pipeline, probably you will not want to see all the output. Update the [tfsum functiojn](//scripts/tfsum.sh) as you need. +> If using a pipeline, probably you will not want to see all the output. Update the [tfsum function](//scripts/tfsum.sh) as you need. Take a look to the comment: From e76896c55c4bd9f6f888115817c1a05a755cb5d0 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Tue, 2 Jan 2024 17:43:07 +0100 Subject: [PATCH 11/29] Update usage doc --- docs/usage.md | 38 +++++++++++++------------------------- 1 file changed, 13 insertions(+), 25 deletions(-) diff --git a/docs/usage.md b/docs/usage.md index db56eb0..380672b 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -37,12 +37,10 @@ function tfsum() { then echo "You should type 'tfsum terraform|terragrunt'" else - echo -e "Starting tf summary..." - # Don't print output of terraform plan - # If you don't want full plan output: $1 plan -out plan.tfplan 1> /dev/null - $1 plan -out plan.tfplan - echo -e "\n" - $1 show -json plan.tfplan | tftools summarize + echo -en "Starting tf summary... Please wait" + # If you want to print full plan output: $1 plan -out plan.tfplan + $1 plan -out plan.tfplan 1> /dev/null + $1 show -json plan.tfplan | tftools summarize --show-tags # Delete plan out file to avoid git tracking (although is included in .gitignore) if [ -f "plan.tfplan" ]; then rm plan.tfplan; fi fi @@ -56,12 +54,10 @@ function tfsum if test -z $argv[1] echo "You should type 'tfsum terraform|terragrunt'" else - echo -e "Starting tf summary..." - # Don't print output of terraform plan - # If you don't want full plan output: $argv[1] plan -out plan.tfplan > /dev/null - $argv[1] plan -out plan.tfplan - echo -e "\n" - $argv[1] show -json plan.tfplan | tftools summarize + echo -en "Starting tf summary... Please wait" + # If you want to print full plan output: $argv[1] plan -out plan.tfplan + $argv[1] plan -out plan.tfplan 1> /dev/null + $argv[1] show -json plan.tfplan | tftools summarize --show-tags # Delete plan out file to avoid git tracking (although is included in .gitignore) if test -f "plan.tfplan"; rm plan.tfplan; end end @@ -83,12 +79,12 @@ cd my-terraform-project/ tfsum terraform ``` -Then, you will see full plan/apply of terraform and the summarized output with the corresponding targets. +Then, you will see the summarized output with the corresponding targets. The example: -> [!NOTE] -> The following example is using the full output command +> [!NOTE] +> The following example is using the full output command ```shell tftools summarize --show-tags --show-unchanged Terragrunt is also supported -> [!NOTE] -> If using a pipeline, probably you will not want to see all the output. Update the [tfsum function](//scripts/tfsum.sh) as you need. - -Take a look to the comment: - -```bash -.... -# If you don't want full plan output: $1 plan -out plan.tfplan 1> /dev/null -$1 plan -out plan.tfplan -.... +```shell +$ tfsum terragrunt ``` From 9bdd39764044f84c9e55521bcfdf34a2d491f7b3 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Fri, 19 Jan 2024 19:49:05 +0100 Subject: [PATCH 12/29] Fix high CVE on golang.org/x/net & upgrade dependencies --- Makefile | 3 +++ go.mod | 28 ++++++++++++++-------------- go.sum | 46 +++++++++++++++++++++++++++++----------------- 3 files changed, 46 insertions(+), 31 deletions(-) diff --git a/Makefile b/Makefile index d443c27..653e5fc 100644 --- a/Makefile +++ b/Makefile @@ -22,6 +22,9 @@ go-generate: ## Run go generate gosec: ## Run gosec gosec -exclude=G104,G204 ./... +update-dependencies: ## Update dependencies + go get -u ./... + ##https://github.com/moovweb/gvm ##go get golang.org/x/tools/cmd/goimports ##go install golang.org/x/tools/cmd/goimports diff --git a/go.mod b/go.mod index 70b371c..b56d585 100644 --- a/go.mod +++ b/go.mod @@ -6,7 +6,7 @@ require ( github.com/charmbracelet/glamour v0.6.0 github.com/dimiro1/banner v1.1.0 github.com/fatih/color v1.16.0 - github.com/hashicorp/terraform-json v0.20.0 + github.com/hashicorp/terraform-json v0.21.0 github.com/mattn/go-colorable v0.1.13 github.com/spf13/cobra v1.8.0 ) @@ -14,26 +14,26 @@ require ( require ( github.com/alecthomas/chroma v0.10.0 // indirect github.com/apparentlymart/go-textseg/v15 v15.0.0 // indirect - github.com/aymanbagabas/go-osc52 v1.0.3 // indirect + github.com/aymanbagabas/go-osc52/v2 v2.0.1 // indirect github.com/aymerick/douceur v0.2.0 // indirect - github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2 // indirect - github.com/dlclark/regexp2 v1.4.0 // indirect - github.com/gorilla/css v1.0.0 // indirect + github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be // indirect + github.com/dlclark/regexp2 v1.10.0 // indirect + github.com/gorilla/css v1.0.1 // indirect github.com/hashicorp/go-version v1.6.0 // indirect github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/lucasb-eyer/go-colorful v1.2.0 // indirect github.com/mattn/go-isatty v0.0.20 // indirect - github.com/mattn/go-runewidth v0.0.14 // indirect - github.com/microcosm-cc/bluemonday v1.0.21 // indirect + github.com/mattn/go-runewidth v0.0.15 // indirect + github.com/microcosm-cc/bluemonday v1.0.26 // indirect github.com/muesli/reflow v0.3.0 // indirect - github.com/muesli/termenv v0.13.0 // indirect + github.com/muesli/termenv v0.15.2 // indirect github.com/olekukonko/tablewriter v0.0.5 // indirect - github.com/rivo/uniseg v0.2.0 // indirect + github.com/rivo/uniseg v0.4.4 // indirect github.com/spf13/pflag v1.0.5 // indirect - github.com/yuin/goldmark v1.5.2 // indirect - github.com/yuin/goldmark-emoji v1.0.1 // indirect + github.com/yuin/goldmark v1.6.0 // indirect + github.com/yuin/goldmark-emoji v1.0.2 // indirect github.com/zclconf/go-cty v1.14.1 // indirect - golang.org/x/net v0.0.0-20221002022538-bcab6841153b // indirect - golang.org/x/sys v0.14.0 // indirect - golang.org/x/text v0.11.0 // indirect + golang.org/x/net v0.20.0 // indirect + golang.org/x/sys v0.16.0 // indirect + golang.org/x/text v0.14.0 // indirect ) diff --git a/go.sum b/go.sum index 7d68b43..7cff5ea 100644 --- a/go.sum +++ b/go.sum @@ -2,32 +2,36 @@ github.com/alecthomas/chroma v0.10.0 h1:7XDcGkCQopCNKjZHfYrNLraA+M7e0fMiJ/Mfikbf github.com/alecthomas/chroma v0.10.0/go.mod h1:jtJATyUxlIORhUOFNA9NZDWGAQ8wpxQQqNSB4rjA/1s= github.com/apparentlymart/go-textseg/v15 v15.0.0 h1:uYvfpb3DyLSCGWnctWKGj857c6ew1u1fNQOlOtuGxQY= github.com/apparentlymart/go-textseg/v15 v15.0.0/go.mod h1:K8XmNZdhEBkdlyDdvbmmsvpAG721bKi0joRfFdHIWJ4= -github.com/aymanbagabas/go-osc52 v1.0.3 h1:DTwqENW7X9arYimJrPeGZcV0ln14sGMt3pHZspWD+Mg= github.com/aymanbagabas/go-osc52 v1.0.3/go.mod h1:zT8H+Rk4VSabYN90pWyugflM3ZhpTZNC7cASDfUCdT4= +github.com/aymanbagabas/go-osc52/v2 v2.0.1 h1:HwpRHbFMcZLEVr42D4p7XBqjyuxQH5SMiErDT4WkJ2k= +github.com/aymanbagabas/go-osc52/v2 v2.0.1/go.mod h1:uYgXzlJ7ZpABp8OJ+exZzJJhRNQ2ASbcXHWsFqH8hp8= github.com/aymerick/douceur v0.2.0 h1:Mv+mAeH1Q+n9Fr+oyamOlAkUNPWPlA8PPGR0QAaYuPk= github.com/aymerick/douceur v0.2.0/go.mod h1:wlT5vV2O3h55X9m7iVYN0TBM0NH/MmbLnd30/FjWUq4= github.com/charmbracelet/glamour v0.6.0 h1:wi8fse3Y7nfcabbbDuwolqTqMQPMnVPeZhDM273bISc= github.com/charmbracelet/glamour v0.6.0/go.mod h1:taqWV4swIMMbWALc0m7AfE9JkPSU8om2538k9ITBxOc= -github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2 h1:tjT4Jp4gxECvsJcYpAMtW2I3YqzBTPuB67OejxXs86s= github.com/common-nighthawk/go-figure v0.0.0-20200609044655-c4b36f998cf2/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= +github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be h1:J5BL2kskAlV9ckgEsNQXscjIaLiOYiZ75d4e94E6dcQ= +github.com/common-nighthawk/go-figure v0.0.0-20210622060536-734e95fb86be/go.mod h1:mk5IQ+Y0ZeO87b858TlA645sVcEcbiX6YqP98kt+7+w= github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/dimiro1/banner v1.1.0 h1:TSfy+FsPIIGLzaMPOt52KrEed/omwFO1P15VA8PMUh0= github.com/dimiro1/banner v1.1.0/go.mod h1:tbL318TJiUaHxOUNN+jnlvFSgsh/RX7iJaQrGgOiTco= -github.com/dlclark/regexp2 v1.4.0 h1:F1rxgk7p4uKjwIQxBs9oAXe5CqrXlCduYEJvrF4u93E= github.com/dlclark/regexp2 v1.4.0/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= +github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0= +github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/google/go-cmp v0.6.0 h1:ofyhxvXcZhMsU5ulbFiLKl/XBFqE1GSq7atu8tAmTRI= github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= -github.com/gorilla/css v1.0.0 h1:BQqNyPTi50JCFMTw/b67hByjMVXZRwGha6wxVGkeihY= github.com/gorilla/css v1.0.0/go.mod h1:Dn721qIggHpt4+EFCcTLTU/vk5ySda2ReITrtgBl60c= +github.com/gorilla/css v1.0.1 h1:ntNaBIghp6JmvWnxbZKANoLyuXTPZ4cAMlo6RyhlbO8= +github.com/gorilla/css v1.0.1/go.mod h1:BvnYkspnSzMmwRK+b8/xgNPLiIuNZr6vbZBTPQ2A3b0= github.com/hashicorp/go-version v1.6.0 h1:feTTfFNnjP967rlCxM/I9g701jU+RN74YKx2mOkIeek= github.com/hashicorp/go-version v1.6.0/go.mod h1:fltr4n8CU8Ke44wwGCBoEymUuxUHl09ZGVZPK5anwXA= -github.com/hashicorp/terraform-json v0.20.0 h1:cJcvn4gIOTi0SD7pIy+xiofV1zFA3hza+6K+fo52IX8= -github.com/hashicorp/terraform-json v0.20.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= +github.com/hashicorp/terraform-json v0.21.0 h1:9NQxbLNqPbEMze+S6+YluEdXgJmhQykRyRNd+zTI05U= +github.com/hashicorp/terraform-json v0.21.0/go.mod h1:qdeBs11ovMzo5puhrRibdD6d2Dq6TyE/28JiU4tIQxk= github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/lucasb-eyer/go-colorful v1.2.0 h1:1nnpGOrhyZZuNyfu1QjKiUICQ74+3FNCN69Aj6K7nkY= @@ -42,21 +46,25 @@ github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWE github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI= github.com/mattn/go-runewidth v0.0.12/go.mod h1:RAqKPSqVFrSLVXbA8x7dzmKdmGzieGRCM46jaSJTDAk= -github.com/mattn/go-runewidth v0.0.14 h1:+xnbZSEeDbOIg5/mE6JF0w6n9duR1l3/WmbinWVwUuU= github.com/mattn/go-runewidth v0.0.14/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= -github.com/microcosm-cc/bluemonday v1.0.21 h1:dNH3e4PSyE4vNX+KlRGHT5KrSvjeUkoNPwEORjffHJg= +github.com/mattn/go-runewidth v0.0.15 h1:UNAjwbU9l54TA3KzvqLGxwWjHmMgBUVhBiTjelZgg3U= +github.com/mattn/go-runewidth v0.0.15/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w= github.com/microcosm-cc/bluemonday v1.0.21/go.mod h1:ytNkv4RrDrLJ2pqlsSI46O6IVXmZOBBD4SaJyDwwTkM= +github.com/microcosm-cc/bluemonday v1.0.26 h1:xbqSvqzQMeEHCqMi64VAs4d8uy6Mequs3rQ0k/Khz58= +github.com/microcosm-cc/bluemonday v1.0.26/go.mod h1:JyzOCs9gkyQyjs+6h10UEVSe02CGwkhd72Xdqh78TWs= github.com/muesli/reflow v0.3.0 h1:IFsN6K9NfGtjeggFP+68I4chLZV2yIKsXJFNZ+eWh6s= github.com/muesli/reflow v0.3.0/go.mod h1:pbwTDkVPibjO2kyvBQRBxTWEEGDGq0FlB1BIKtnHY/8= -github.com/muesli/termenv v0.13.0 h1:wK20DRpJdDX8b7Ek2QfhvqhRQFZ237RGRO0RQ/Iqdy0= github.com/muesli/termenv v0.13.0/go.mod h1:sP1+uffeLaEYpyOTb8pLCUctGcGLnoFjSn4YJK5e2bc= +github.com/muesli/termenv v0.15.2 h1:GohcuySI0QmI3wN8Ok9PtKGkgkFIk7y6Vpb5PvrY+Wo= +github.com/muesli/termenv v0.15.2/go.mod h1:Epx+iuz8sNs7mNKhxzH4fWXGNpZwUaJKRS1noLXviQ8= github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec= github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= github.com/rivo/uniseg v0.1.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= -github.com/rivo/uniseg v0.2.0 h1:S1pD9weZBuJdFmowNwbpi7BJ8TNftyUImj/0WQi72jY= github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc= +github.com/rivo/uniseg v0.4.4 h1:8TfxU8dW6PdqD27gjM8MVNuicgxIjxpm4K7x4jp8sis= +github.com/rivo/uniseg v0.4.4/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88= github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM= github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= @@ -66,26 +74,30 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.7.0 h1:nwc3DEeHmmLAfoZucVR881uASk0Mfjw8xYJ99tb5CcY= github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74= -github.com/yuin/goldmark v1.5.2 h1:ALmeCk/px5FSm1MAcFBAsVKZjDuMVj8Tm7FFIlMJnqU= +github.com/yuin/goldmark v1.3.7/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= github.com/yuin/goldmark v1.5.2/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= -github.com/yuin/goldmark-emoji v1.0.1 h1:ctuWEyzGBwiucEqxzwe0SOYDXPAucOrE9NQC18Wa1os= +github.com/yuin/goldmark v1.6.0 h1:boZcn2GTjpsynOsC0iJHnBWa4Bi0qzfJjthwauItG68= +github.com/yuin/goldmark v1.6.0/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5taEt/CY= github.com/yuin/goldmark-emoji v1.0.1/go.mod h1:2w1E6FEWLcDQkoTE+7HU6QF1F6SLlNGjRIBbIZQFqkQ= +github.com/yuin/goldmark-emoji v1.0.2 h1:c/RgTShNgHTtc6xdz2KKI74jJr6rWi7FPgnP9GAsO5s= +github.com/yuin/goldmark-emoji v1.0.2/go.mod h1:RhP/RWpexdp+KHs7ghKnifRoIs/Bq4nDS7tRbCkOwKY= github.com/zclconf/go-cty v1.14.1 h1:t9fyA35fwjjUMcmL5hLER+e/rEPqrbCK1/OSE4SI9KA= github.com/zclconf/go-cty v1.14.1/go.mod h1:VvMs5i0vgZdhYawQNq5kePSpLAoz8u1xvZgrPIxfnZE= -golang.org/x/net v0.0.0-20221002022538-bcab6841153b h1:6e93nYa3hNqAvLr0pD4PN1fFS+gKzp2zAXqrnTCstqU= golang.org/x/net v0.0.0-20221002022538-bcab6841153b/go.mod h1:YDH+HFinaLZZlnHAfSS6ZXJJ9M9t4Dl22yv3iI2vPwk= +golang.org/x/net v0.20.0 h1:aCL9BSgETF1k+blQaYUBx9hJ9LOGP3gAVemcZlf1Kpo= +golang.org/x/net v0.20.0/go.mod h1:z8BVo6PvndSri0LbOE3hAn0apkU+1YvI6E70E9jsnvY= golang.org/x/sys v0.0.0-20190222072716-a9d3bda3a223/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20191008105621-543471e840be/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220811171246-fbc7d0a398ab/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.14.0 h1:Vz7Qs629MkJkGyHxUlRHizWJRG2j8fbQKjELVSNhy7Q= -golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/sys v0.16.0 h1:xWw16ngr6ZMtmxDyKyIgsE93KNKz5HKmMa3b8ALHidU= +golang.org/x/sys v0.16.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= -golang.org/x/text v0.11.0 h1:LAntKIrcmeSKERyiOh0XMV39LXS8IE9UL2yP7+f5ij4= -golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= From ea521a9173dd1645eae69e7256e56d175ef85e8b Mon Sep 17 00:00:00 2001 From: goreleaserbot Date: Fri, 19 Jan 2024 19:51:29 +0100 Subject: [PATCH 13/29] Brew formula update for tftools version v0.6.2 --- Formula/tftools.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Formula/tftools.rb b/Formula/tftools.rb index bc3c805..e740d62 100644 --- a/Formula/tftools.rb +++ b/Formula/tftools.rb @@ -5,21 +5,21 @@ class Tftools < Formula desc "Easy CLI with useful terraform/terragrunt tools" homepage "https://github.com/containerscrew/tftools" - version "0.6.1" + version "0.6.2" license "Apache 2.0 license" on_macos do if Hardware::CPU.arm? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.1/tftools-darwin-arm64.tar.gz" - sha256 "c88acd1a54f824af3bd007231dfe0e30fe90e266b37df4258408692fc50bdcf2" + url "https://github.com/containerscrew/tftools/releases/download/v0.6.2/tftools-darwin-arm64.tar.gz" + sha256 "4f8a9df8f232cb740a6edf1dda2b33fd13182229e6319719ad17a4aacb08b0fb" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.1/tftools-darwin-amd64.tar.gz" - sha256 "f4885816bc9e91c6cefddcad21974c38ad0fc33b88309d87151df16d6df72f66" + url "https://github.com/containerscrew/tftools/releases/download/v0.6.2/tftools-darwin-amd64.tar.gz" + sha256 "f5a44e7c16dffe418adf00a5e05ec9074c8bcabe132385a25fa7df4c2e9ed407" def install bin.install "tftools" @@ -29,16 +29,16 @@ def install on_linux do if Hardware::CPU.arm? && Hardware::CPU.is_64_bit? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.1/tftools-linux-arm64.tar.gz" - sha256 "cea5b2b7a064827c0923ed0244e8eb46d75366880bc566175cf71d0f31321800" + url "https://github.com/containerscrew/tftools/releases/download/v0.6.2/tftools-linux-arm64.tar.gz" + sha256 "212dd50be854ac0217b7a4c02faba0890d6524b7fdee06d46ea27f4c384be70c" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.1/tftools-linux-amd64.tar.gz" - sha256 "374732def980d1614ba3daf6e76c1cf6a9065afe929eef75dabaa99a27acaacf" + url "https://github.com/containerscrew/tftools/releases/download/v0.6.2/tftools-linux-amd64.tar.gz" + sha256 "a91bdec2f9eb8624ee3af70e025a518b5927f390a7ed3be9c72ec7411699776c" def install bin.install "tftools" From 66808fd1d184c7cd0287ef8d20be26b0098c16c1 Mon Sep 17 00:00:00 2001 From: FireDrunk Date: Tue, 19 Mar 2024 13:39:37 +0100 Subject: [PATCH 14/29] Added JSON support --- cmd/commands.go | 18 ++++++++-- internal/parser/parser.go | 74 +++++++++++++++++++++++++++++++++------ 2 files changed, 80 insertions(+), 12 deletions(-) diff --git a/cmd/commands.go b/cmd/commands.go index 99598ad..12f2923 100644 --- a/cmd/commands.go +++ b/cmd/commands.go @@ -21,6 +21,8 @@ var ( showUnchanged bool compact bool useMarkdown bool + useJson bool + metrics bool ) func init() { @@ -28,20 +30,32 @@ func init() { summarizeCmd.Flags().BoolVarP(&showUnchanged, "show-unchanged", "u", false, "Show resources with no changes") summarizeCmd.Flags().BoolVarP(&compact, "compact", "c", false, "Use compact formatting") summarizeCmd.Flags().BoolVarP(&useMarkdown, "markdown", "m", false, "Use markdown formatting") + summarizeCmd.Flags().BoolVarP(&useJson, "json", "j", false, "Use JSON output") + summarizeCmd.Flags().BoolVarP(&metrics, "metrics", "s", false, "Output metrics") } -// summarizeCmd will parse the tf plan output json to scrape created|updated|deleted resources in a clear outout +// summarizeCmd will parse the tf plan output useJson to scrape created|updated|deleted resources in a clear outout var summarizeCmd = &cobra.Command{ Use: "summarize", Short: "Get a summary of terraform/terragrunt output", Long: "Get a summary of terraform/terragrunt output plan (created|updated|destroyed...)", Run: func(cmd *cobra.Command, args []string) { + if useMarkdown && useJson { + fmt.Println("-m (Markdown output) and -j (JSON output) are mutually exclusive") + os.Exit(1) + } + + if metrics && !useJson { + fmt.Println("Metric output can only be used with JSON output") + os.Exit(1) + } + output, err := reader.Reader(os.Stdin) if err != nil { panic(err) } - parser.Parser(output, showTags, showUnchanged, compact, useMarkdown) + parser.Parser(output, showTags, showUnchanged, compact, useMarkdown, useJson, metrics) }, } diff --git a/internal/parser/parser.go b/internal/parser/parser.go index 26fa261..6f6960e 100644 --- a/internal/parser/parser.go +++ b/internal/parser/parser.go @@ -20,7 +20,7 @@ var ( resourcesList = make(map[string][]string) ) -func Parser(output []byte, showTags, showUnchanged, compact, useMarkdown bool) { +func Parser(output []byte, showTags, showUnchanged, compact, useMarkdown bool, useJson bool, metrics bool) { var data tfjson.Plan if err := json.Unmarshal(output, &data); err != nil { fmt.Printf("Error unmarshalling plan: %v\n", err) @@ -31,7 +31,7 @@ func Parser(output []byte, showTags, showUnchanged, compact, useMarkdown bool) { processResourceChange(resourceChange, showTags) } - PrintPlanSummary(showTags, showUnchanged, compact, useMarkdown) + PrintPlanSummary(showTags, showUnchanged, compact, useMarkdown, useJson, metrics) } func processResourceChange(resourceChange *tfjson.ResourceChange, showTags bool) { @@ -140,16 +140,70 @@ func PrintResources(message string, resources []string, bulletSymbol string, col } } -func PrintPlanSummary(showTags, showUnchanged, compact, useMarkdown bool) { - if showUnchanged { - PrintResources("🔵 Unchanged:", resourcesList[NOOP], "•", color.New(color.FgBlue), compact, useMarkdown) +func PrintPlanSummary(showTags, showUnchanged, compact, useMarkdown bool, useJson bool, metrics bool) { + if !useJson { + if showUnchanged { + PrintResources("🔵 Unchanged:", resourcesList[NOOP], "•", color.New(color.FgBlue), compact, useMarkdown) + fmt.Println(",") + } + if showTags { + PrintResources("🟣 Tag/Untag:", resourcesList[TAG], "#", color.New(color.FgMagenta), compact, useMarkdown) + fmt.Println(",") + } + PrintResources("🟢 Create:", resourcesList[CREATE], "+", color.New(color.FgGreen), compact, useMarkdown) + fmt.Println(",") + PrintResources("🟡 Update:", resourcesList[UPDATE], "~", color.New(color.FgYellow), compact, useMarkdown) + fmt.Println(",") + PrintResources("🔴 Destroy:", resourcesList[DELETE], "-", color.New(color.FgRed), compact, useMarkdown) + } else { + PrintResourcesJson(showTags, showUnchanged, metrics) } - if showTags { - PrintResources("🟣 Tag/Untag:", resourcesList[TAG], "#", color.New(color.FgMagenta), compact, useMarkdown) +} + +func PrintResourcesJson(showTags bool, showUnchanged bool, metrics bool) { + if metrics { + var metricsData = make(map[string]int) + + if showUnchanged { + metricsData["unchanged"] = len(resourcesList[NOOP]) + } + + if showTags { + metricsData["tag"] = len(resourcesList[TAG]) + } + + metricsData["create"] = len(resourcesList[CREATE]) + metricsData["update"] = len(resourcesList[UPDATE]) + metricsData["delete"] = len(resourcesList[DELETE]) + + result, _ := json.Marshal(metricsData) + fmt.Println(string(result)) + } else { + var data = make(map[string][]string) + + if showUnchanged && len(resourcesList[NOOP]) > 0 { + data["unchanged"] = resourcesList[NOOP] + } + + if showTags && len(resourcesList[TAG]) > 0 { + data["tag"] = resourcesList[TAG] + } + + if len(resourcesList[CREATE]) > 0 { + data["create"] = resourcesList[CREATE] + } + + if len(resourcesList[UPDATE]) > 0 { + data["update"] = resourcesList[UPDATE] + } + + if len(resourcesList[DELETE]) > 0 { + data["delete"] = resourcesList[DELETE] + } + + result, _ := json.Marshal(data) + fmt.Println(string(result)) } - PrintResources("🟢 Create:", resourcesList[CREATE], "+", color.New(color.FgGreen), compact, useMarkdown) - PrintResources("🟡 Update:", resourcesList[UPDATE], "~", color.New(color.FgYellow), compact, useMarkdown) - PrintResources("🔴 Destroy:", resourcesList[DELETE], "-", color.New(color.FgRed), compact, useMarkdown) } func checkOnlyTagChanges(resourceChange *tfjson.ResourceChange) (bool, error) { From dbc1f7a03fb6dd8b7007c41bf7364904b965886d Mon Sep 17 00:00:00 2001 From: FireDrunk Date: Tue, 19 Mar 2024 13:42:06 +0100 Subject: [PATCH 15/29] Fix some minor issues --- cmd/commands.go | 2 +- internal/parser/parser.go | 4 ---- 2 files changed, 1 insertion(+), 5 deletions(-) diff --git a/cmd/commands.go b/cmd/commands.go index 12f2923..809db07 100644 --- a/cmd/commands.go +++ b/cmd/commands.go @@ -34,7 +34,7 @@ func init() { summarizeCmd.Flags().BoolVarP(&metrics, "metrics", "s", false, "Output metrics") } -// summarizeCmd will parse the tf plan output useJson to scrape created|updated|deleted resources in a clear outout +// summarizeCmd will parse the tf plan output json to scrape created|updated|deleted resources in a clear outout var summarizeCmd = &cobra.Command{ Use: "summarize", Short: "Get a summary of terraform/terragrunt output", diff --git a/internal/parser/parser.go b/internal/parser/parser.go index 6f6960e..9b57154 100644 --- a/internal/parser/parser.go +++ b/internal/parser/parser.go @@ -144,16 +144,12 @@ func PrintPlanSummary(showTags, showUnchanged, compact, useMarkdown bool, useJso if !useJson { if showUnchanged { PrintResources("🔵 Unchanged:", resourcesList[NOOP], "•", color.New(color.FgBlue), compact, useMarkdown) - fmt.Println(",") } if showTags { PrintResources("🟣 Tag/Untag:", resourcesList[TAG], "#", color.New(color.FgMagenta), compact, useMarkdown) - fmt.Println(",") } PrintResources("🟢 Create:", resourcesList[CREATE], "+", color.New(color.FgGreen), compact, useMarkdown) - fmt.Println(",") PrintResources("🟡 Update:", resourcesList[UPDATE], "~", color.New(color.FgYellow), compact, useMarkdown) - fmt.Println(",") PrintResources("🔴 Destroy:", resourcesList[DELETE], "-", color.New(color.FgRed), compact, useMarkdown) } else { PrintResourcesJson(showTags, showUnchanged, metrics) From f87bf929f857b2d8654e8a7089b2c96b536eaa7d Mon Sep 17 00:00:00 2001 From: FireDrunk Date: Fri, 22 Mar 2024 13:48:18 +0100 Subject: [PATCH 16/29] Pin version --- go.mod | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/go.mod b/go.mod index b56d585..88d8ef6 100644 --- a/go.mod +++ b/go.mod @@ -1,6 +1,6 @@ module github.com/containerscrew/tftools -go 1.21.5 +go 1.21 require ( github.com/charmbracelet/glamour v0.6.0 From 6e45a4093be35917340f79f160c191927a63c8ac Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Tue, 26 Mar 2024 10:12:44 +0100 Subject: [PATCH 17/29] Add demo.json tfplan file for testing --- demo.json | 1146 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1146 insertions(+) create mode 100644 demo.json diff --git a/demo.json b/demo.json new file mode 100644 index 0000000..17c6cd6 --- /dev/null +++ b/demo.json @@ -0,0 +1,1146 @@ +{ + "format_version": "1.1", + "terraform_version": "1.2.9", + "planned_values": { + "root_module": { + "resources": [ + { + "address": "aws_iam_policy.changed", + "mode": "managed", + "type": "aws_iam_policy", + "name": "changed", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-change", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-change", + "name": "test-policy-change", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2DEMO", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "sensitive_values": { + "tags": {}, + "tags_all": {} + } + }, + { + "address": "aws_iam_policy.created", + "mode": "managed", + "type": "aws_iam_policy", + "name": "created", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "description": null, + "name": "test-policy-created", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "tags": null, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "sensitive_values": { + "tags_all": {} + } + }, + { + "address": "aws_iam_policy.tag_and_change", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tag_and_change", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-tag-and-change", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-tag-and-change", + "name": "test-policy-tag-and-change", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSU5XSSXLPG", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "sensitive_values": { + "tags": {}, + "tags_all": {} + } + }, + { + "address": "aws_iam_policy.tag_only", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tag_only", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-tag-only", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-tag-only", + "name": "test-policy-tag-only", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSYF3ZBGWIM", + "tags": { + "SourceVersion": "27NwiYBI6" + }, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI6" + } + }, + "sensitive_values": { + "tags": {}, + "tags_all": {} + } + }, + { + "address": "aws_iam_policy.tainted", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tainted", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "description": null, + "name": "test-policy-tainted", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "tags": null, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "sensitive_values": { + "tags_all": {} + } + }, + { + "address": "aws_iam_policy.unchanged", + "mode": "managed", + "type": "aws_iam_policy", + "name": "unchanged", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-unchanged", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-unchanged", + "name": "test-policy-unchanged", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSU2IBZAFHO", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "sensitive_values": { + "tags": {}, + "tags_all": {} + } + }, + { + "address": "random_string.version", + "mode": "managed", + "type": "random_string", + "name": "version", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 2, + "values": { + "id": "27NwiYBI", + "keepers": null, + "length": 8, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "numeric": true, + "override_special": null, + "result": "27NwiYBI", + "special": false, + "upper": true + }, + "sensitive_values": {} + } + ] + } + }, + "resource_changes": [ + { + "address": "aws_iam_policy.changed", + "mode": "managed", + "type": "aws_iam_policy", + "name": "changed", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "update" + ], + "before": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-change", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-change", + "name": "test-policy-change", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2DEMO", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "after": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-change", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-change", + "name": "test-policy-change", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2DEMO", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "after_unknown": {}, + "before_sensitive": { + "tags": {}, + "tags_all": {} + }, + "after_sensitive": { + "tags": {}, + "tags_all": {} + } + } + }, + { + "address": "aws_iam_policy.created", + "mode": "managed", + "type": "aws_iam_policy", + "name": "created", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "create" + ], + "before": null, + "after": { + "description": null, + "name": "test-policy-created", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "tags": null, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "after_unknown": { + "arn": true, + "id": true, + "name_prefix": true, + "policy_id": true, + "tags_all": {} + }, + "before_sensitive": false, + "after_sensitive": { + "tags_all": {} + } + } + }, + { + "address": "aws_iam_policy.destroyed", + "mode": "managed", + "type": "aws_iam_policy", + "name": "destroyed", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "delete" + ], + "before": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-destroyed", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-destroyed", + "name": "test-policy-destroyed", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "DEMOLIIFZ3", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "after": null, + "after_unknown": {}, + "before_sensitive": { + "tags": {}, + "tags_all": {} + }, + "after_sensitive": false + }, + "action_reason": "delete_because_no_resource_config" + }, + { + "address": "aws_iam_policy.tag_and_change", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tag_and_change", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "update" + ], + "before": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-tag-and-change", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-tag-and-change", + "name": "test-policy-tag-and-change", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSU5XSSXLPG", + "tags": { + "SourceVersion": "27NwiYBI6" + }, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI6" + } + }, + "after": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-tag-and-change", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-tag-and-change", + "name": "test-policy-tag-and-change", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSU5XSSXLPG", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "after_unknown": {}, + "before_sensitive": { + "tags": {}, + "tags_all": {} + }, + "after_sensitive": { + "tags": {}, + "tags_all": {} + } + } + }, + { + "address": "aws_iam_policy.tag_only", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tag_only", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "update" + ], + "before": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-tag-only", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-tag-only", + "name": "test-policy-tag-only", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSYF3ZBGWIM", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "after": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-tag-only", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-tag-only", + "name": "test-policy-tag-only", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSYF3ZBGWIM", + "tags": { + "SourceVersion": "27NwiYBI6" + }, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI6" + } + }, + "after_unknown": {}, + "before_sensitive": { + "tags": {}, + "tags_all": {} + }, + "after_sensitive": { + "tags": {}, + "tags_all": {} + } + } + }, + { + "address": "aws_iam_policy.tainted", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tainted", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "delete", + "create" + ], + "before": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-tainted", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-tainted", + "name": "test-policy-tainted", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSV46NWXCIW", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "after": { + "description": null, + "name": "test-policy-tainted", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "tags": null, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "after_unknown": { + "arn": true, + "id": true, + "name_prefix": true, + "policy_id": true, + "tags_all": {} + }, + "before_sensitive": { + "tags": {}, + "tags_all": {} + }, + "after_sensitive": { + "tags_all": {} + } + }, + "action_reason": "replace_because_tainted" + }, + { + "address": "aws_iam_policy.unchanged", + "mode": "managed", + "type": "aws_iam_policy", + "name": "unchanged", + "provider_name": "registry.terraform.io/hashicorp/aws", + "change": { + "actions": [ + "no-op" + ], + "before": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-unchanged", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-unchanged", + "name": "test-policy-unchanged", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSU2IBZAFHO", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "after": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-unchanged", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-unchanged", + "name": "test-policy-unchanged", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSU2IBZAFHO", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "after_unknown": {}, + "before_sensitive": { + "tags": {}, + "tags_all": {} + }, + "after_sensitive": { + "tags": {}, + "tags_all": {} + } + } + }, + { + "address": "random_string.version", + "mode": "managed", + "type": "random_string", + "name": "version", + "provider_name": "registry.terraform.io/hashicorp/random", + "change": { + "actions": [ + "no-op" + ], + "before": { + "id": "27NwiYBI", + "keepers": null, + "length": 8, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "numeric": true, + "override_special": null, + "result": "27NwiYBI", + "special": false, + "upper": true + }, + "after": { + "id": "27NwiYBI", + "keepers": null, + "length": 8, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "numeric": true, + "override_special": null, + "result": "27NwiYBI", + "special": false, + "upper": true + }, + "after_unknown": {}, + "before_sensitive": {}, + "after_sensitive": {} + } + } + ], + "prior_state": { + "format_version": "1.0", + "terraform_version": "1.2.9", + "values": { + "root_module": { + "resources": [ + { + "address": "aws_iam_policy.changed", + "mode": "managed", + "type": "aws_iam_policy", + "name": "changed", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-change", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-change", + "name": "test-policy-change", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2DEMO", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "sensitive_values": { + "tags": {}, + "tags_all": {} + }, + "depends_on": [ + "data.aws_iam_policy_document.change", + "random_string.version" + ] + }, + { + "address": "aws_iam_policy.destroyed", + "mode": "managed", + "type": "aws_iam_policy", + "name": "destroyed", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-destroyed", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-destroyed", + "name": "test-policy-destroyed", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "DEMOLIIFZ3", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "sensitive_values": { + "tags": {}, + "tags_all": {} + }, + "depends_on": [ + "data.aws_iam_policy_document.unchanged", + "random_string.version" + ] + }, + { + "address": "aws_iam_policy.tag_and_change", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tag_and_change", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-tag-and-change", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-tag-and-change", + "name": "test-policy-tag-and-change", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSU5XSSXLPG", + "tags": { + "SourceVersion": "27NwiYBI6" + }, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI6" + } + }, + "sensitive_values": { + "tags": {}, + "tags_all": {} + }, + "depends_on": [ + "data.aws_iam_policy_document.change", + "random_string.version" + ] + }, + { + "address": "aws_iam_policy.tag_only", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tag_only", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-tag-only", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-tag-only", + "name": "test-policy-tag-only", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSYF3ZBGWIM", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "sensitive_values": { + "tags": {}, + "tags_all": {} + }, + "depends_on": [ + "data.aws_iam_policy_document.unchanged", + "random_string.version" + ] + }, + { + "address": "aws_iam_policy.tainted", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tainted", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-tainted", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-tainted", + "name": "test-policy-tainted", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSV46NWXCIW", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "sensitive_values": { + "tags": {}, + "tags_all": {} + }, + "depends_on": [ + "data.aws_iam_policy_document.unchanged", + "random_string.version" + ], + "tainted": true + }, + { + "address": "aws_iam_policy.unchanged", + "mode": "managed", + "type": "aws_iam_policy", + "name": "unchanged", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "arn": "arn:aws:iam::123456789012:policy/test-policy-unchanged", + "description": "", + "id": "arn:aws:iam::123456789012:policy/test-policy-unchanged", + "name": "test-policy-unchanged", + "name_prefix": "", + "path": "/", + "policy": "{\"Statement\":[{\"Action\":\"s3:Get*\",\"Effect\":\"Allow\",\"Resource\":\"*\",\"Sid\":\"testdoc\"}],\"Version\":\"2012-10-17\"}", + "policy_id": "ANPAR2NUVQKSU2IBZAFHO", + "tags": {}, + "tags_all": { + "Source": "demo-aws-test", + "SourceVersion": "27NwiYBI3" + } + }, + "sensitive_values": { + "tags": {}, + "tags_all": {} + }, + "depends_on": [ + "data.aws_iam_policy_document.unchanged", + "random_string.version" + ] + }, + { + "address": "data.aws_iam_policy_document.change", + "mode": "data", + "type": "aws_iam_policy_document", + "name": "change", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "id": "1388270941", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"testdoc\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:*\",\n \"Resource\": \"*\"\n }\n ]\n}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [], + "resources": [ + "*" + ], + "sid": "testdoc" + } + ], + "version": "2012-10-17" + }, + "sensitive_values": { + "statement": [ + { + "actions": [ + false + ], + "condition": [], + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [], + "resources": [ + false + ] + } + ] + } + }, + { + "address": "data.aws_iam_policy_document.unchanged", + "mode": "data", + "type": "aws_iam_policy_document", + "name": "unchanged", + "provider_name": "registry.terraform.io/hashicorp/aws", + "schema_version": 0, + "values": { + "id": "1270208521", + "json": "{\n \"Version\": \"2012-10-17\",\n \"Statement\": [\n {\n \"Sid\": \"testdoc\",\n \"Effect\": \"Allow\",\n \"Action\": \"s3:Get*\",\n \"Resource\": \"*\"\n }\n ]\n}", + "override_json": null, + "override_policy_documents": null, + "policy_id": null, + "source_json": null, + "source_policy_documents": null, + "statement": [ + { + "actions": [ + "s3:Get*" + ], + "condition": [], + "effect": "Allow", + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [], + "resources": [ + "*" + ], + "sid": "testdoc" + } + ], + "version": "2012-10-17" + }, + "sensitive_values": { + "statement": [ + { + "actions": [ + false + ], + "condition": [], + "not_actions": [], + "not_principals": [], + "not_resources": [], + "principals": [], + "resources": [ + false + ] + } + ] + } + }, + { + "address": "random_string.version", + "mode": "managed", + "type": "random_string", + "name": "version", + "provider_name": "registry.terraform.io/hashicorp/random", + "schema_version": 2, + "values": { + "id": "27NwiYBI", + "keepers": null, + "length": 8, + "lower": true, + "min_lower": 0, + "min_numeric": 0, + "min_special": 0, + "min_upper": 0, + "number": true, + "numeric": true, + "override_special": null, + "result": "27NwiYBI", + "special": false, + "upper": true + }, + "sensitive_values": {} + } + ] + } + } + }, + "configuration": { + "provider_config": { + "aws": { + "name": "aws", + "full_name": "registry.terraform.io/hashicorp/aws", + "version_constraint": "~\u003e 4.0", + "expressions": { + "default_tags": [ + { + "tags": { + "references": [ + "random_string.version.result", + "random_string.version" + ] + } + } + ], + "region": { + "constant_value": "us-west-2" + } + } + }, + "random": { + "name": "random", + "full_name": "registry.terraform.io/hashicorp/random" + } + }, + "root_module": { + "resources": [ + { + "address": "aws_iam_policy.changed", + "mode": "managed", + "type": "aws_iam_policy", + "name": "changed", + "provider_config_key": "aws", + "expressions": { + "name": { + "constant_value": "test-policy-change" + }, + "policy": { + "references": [ + "data.aws_iam_policy_document.change.json", + "data.aws_iam_policy_document.change" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_iam_policy.created", + "mode": "managed", + "type": "aws_iam_policy", + "name": "created", + "provider_config_key": "aws", + "expressions": { + "name": { + "constant_value": "test-policy-created" + }, + "policy": { + "references": [ + "data.aws_iam_policy_document.unchanged.json", + "data.aws_iam_policy_document.unchanged" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_iam_policy.tag_and_change", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tag_and_change", + "provider_config_key": "aws", + "expressions": { + "name": { + "constant_value": "test-policy-tag-and-change" + }, + "policy": { + "references": [ + "data.aws_iam_policy_document.change.json", + "data.aws_iam_policy_document.change" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_iam_policy.tag_only", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tag_only", + "provider_config_key": "aws", + "expressions": { + "name": { + "constant_value": "test-policy-tag-only" + }, + "policy": { + "references": [ + "data.aws_iam_policy_document.unchanged.json", + "data.aws_iam_policy_document.unchanged" + ] + }, + "tags": { + "references": [ + "random_string.version.result", + "random_string.version" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_iam_policy.tainted", + "mode": "managed", + "type": "aws_iam_policy", + "name": "tainted", + "provider_config_key": "aws", + "expressions": { + "name": { + "constant_value": "test-policy-tainted" + }, + "policy": { + "references": [ + "data.aws_iam_policy_document.unchanged.json", + "data.aws_iam_policy_document.unchanged" + ] + } + }, + "schema_version": 0 + }, + { + "address": "aws_iam_policy.unchanged", + "mode": "managed", + "type": "aws_iam_policy", + "name": "unchanged", + "provider_config_key": "aws", + "expressions": { + "name": { + "constant_value": "test-policy-unchanged" + }, + "policy": { + "references": [ + "data.aws_iam_policy_document.unchanged.json", + "data.aws_iam_policy_document.unchanged" + ] + } + }, + "schema_version": 0 + }, + { + "address": "random_string.version", + "mode": "managed", + "type": "random_string", + "name": "version", + "provider_config_key": "random", + "expressions": { + "length": { + "constant_value": 8 + }, + "special": { + "constant_value": false + } + }, + "schema_version": 2 + }, + { + "address": "data.aws_iam_policy_document.change", + "mode": "data", + "type": "aws_iam_policy_document", + "name": "change", + "provider_config_key": "aws", + "expressions": { + "statement": [ + { + "actions": { + "constant_value": [ + "s3:*" + ] + }, + "effect": { + "constant_value": "Allow" + }, + "resources": { + "constant_value": [ + "*" + ] + }, + "sid": { + "constant_value": "testdoc" + } + } + ] + }, + "schema_version": 0 + }, + { + "address": "data.aws_iam_policy_document.unchanged", + "mode": "data", + "type": "aws_iam_policy_document", + "name": "unchanged", + "provider_config_key": "aws", + "expressions": { + "statement": [ + { + "actions": { + "constant_value": [ + "s3:Get*" + ] + }, + "effect": { + "constant_value": "Allow" + }, + "resources": { + "constant_value": [ + "*" + ] + }, + "sid": { + "constant_value": "testdoc" + } + } + ] + }, + "schema_version": 0 + } + ] + } + }, + "relevant_attributes": [ + { + "resource": "data.aws_iam_policy_document.change", + "attribute": [ + "json" + ] + }, + { + "resource": "data.aws_iam_policy_document.unchanged", + "attribute": [ + "json" + ] + }, + { + "resource": "random_string.version", + "attribute": [ + "result" + ] + } + ] +} \ No newline at end of file From 3a2e68bf434edff6679c71814845742bb5f60c0e Mon Sep 17 00:00:00 2001 From: goreleaserbot Date: Thu, 28 Mar 2024 15:41:57 +0100 Subject: [PATCH 18/29] Brew formula update for tftools version v0.7.0 --- Formula/tftools.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Formula/tftools.rb b/Formula/tftools.rb index e740d62..97b7d12 100644 --- a/Formula/tftools.rb +++ b/Formula/tftools.rb @@ -5,21 +5,21 @@ class Tftools < Formula desc "Easy CLI with useful terraform/terragrunt tools" homepage "https://github.com/containerscrew/tftools" - version "0.6.2" + version "0.7.0" license "Apache 2.0 license" on_macos do if Hardware::CPU.arm? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.2/tftools-darwin-arm64.tar.gz" - sha256 "4f8a9df8f232cb740a6edf1dda2b33fd13182229e6319719ad17a4aacb08b0fb" + url "https://github.com/containerscrew/tftools/releases/download/v0.7.0/tftools-darwin-arm64.tar.gz" + sha256 "04e4c1d321c5f3894c7e0aca77d7092be735268d699fe9ba159e7d651d7240a3" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.2/tftools-darwin-amd64.tar.gz" - sha256 "f5a44e7c16dffe418adf00a5e05ec9074c8bcabe132385a25fa7df4c2e9ed407" + url "https://github.com/containerscrew/tftools/releases/download/v0.7.0/tftools-darwin-amd64.tar.gz" + sha256 "ffd5291beb06dd8a396ee88bea38b95a8e165f3c3a0b8102325643ac78c89f8a" def install bin.install "tftools" @@ -29,16 +29,16 @@ def install on_linux do if Hardware::CPU.arm? && Hardware::CPU.is_64_bit? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.2/tftools-linux-arm64.tar.gz" - sha256 "212dd50be854ac0217b7a4c02faba0890d6524b7fdee06d46ea27f4c384be70c" + url "https://github.com/containerscrew/tftools/releases/download/v0.7.0/tftools-linux-arm64.tar.gz" + sha256 "9f90cda1b929265d5663e147f4fc634957d11f17b96312774460882cd89f39af" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v0.6.2/tftools-linux-amd64.tar.gz" - sha256 "a91bdec2f9eb8624ee3af70e025a518b5927f390a7ed3be9c72ec7411699776c" + url "https://github.com/containerscrew/tftools/releases/download/v0.7.0/tftools-linux-amd64.tar.gz" + sha256 "ab2dbf8d5f05dbf602c2aeb90483bbdaf2fdd968d850ea57a9b669635187d810" def install bin.install "tftools" From 51cf038374af7df48ee11aadb08c04d9d3741eea Mon Sep 17 00:00:00 2001 From: goreleaserbot Date: Sun, 31 Mar 2024 13:36:04 +0200 Subject: [PATCH 19/29] Brew formula update for tftools version v1.1.0 --- Formula/tftools.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Formula/tftools.rb b/Formula/tftools.rb index 97b7d12..c3d4a5a 100644 --- a/Formula/tftools.rb +++ b/Formula/tftools.rb @@ -5,21 +5,21 @@ class Tftools < Formula desc "Easy CLI with useful terraform/terragrunt tools" homepage "https://github.com/containerscrew/tftools" - version "0.7.0" + version "1.1.0" license "Apache 2.0 license" on_macos do if Hardware::CPU.arm? - url "https://github.com/containerscrew/tftools/releases/download/v0.7.0/tftools-darwin-arm64.tar.gz" - sha256 "04e4c1d321c5f3894c7e0aca77d7092be735268d699fe9ba159e7d651d7240a3" + url "https://github.com/containerscrew/tftools/releases/download/v1.1.0/tftools-darwin-arm64.tar.gz" + sha256 "b67cf93843e364db63f75cfa3ca0b91e070a7d93cdde54582e7fb21090642abb" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v0.7.0/tftools-darwin-amd64.tar.gz" - sha256 "ffd5291beb06dd8a396ee88bea38b95a8e165f3c3a0b8102325643ac78c89f8a" + url "https://github.com/containerscrew/tftools/releases/download/v1.1.0/tftools-darwin-amd64.tar.gz" + sha256 "751210238a5e1d212576d37175293b268a4adf676ec8bb3aac3d806000131ea4" def install bin.install "tftools" @@ -29,16 +29,16 @@ def install on_linux do if Hardware::CPU.arm? && Hardware::CPU.is_64_bit? - url "https://github.com/containerscrew/tftools/releases/download/v0.7.0/tftools-linux-arm64.tar.gz" - sha256 "9f90cda1b929265d5663e147f4fc634957d11f17b96312774460882cd89f39af" + url "https://github.com/containerscrew/tftools/releases/download/v1.1.0/tftools-linux-arm64.tar.gz" + sha256 "dec0e40934ae0c78920924d3054a7aa00c174da9129171fd673145689b3ca1f0" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v0.7.0/tftools-linux-amd64.tar.gz" - sha256 "ab2dbf8d5f05dbf602c2aeb90483bbdaf2fdd968d850ea57a9b669635187d810" + url "https://github.com/containerscrew/tftools/releases/download/v1.1.0/tftools-linux-amd64.tar.gz" + sha256 "cfc15dade830052954f6f028244bcd2360063aa731d2d0814009755e05b6f759" def install bin.install "tftools" From 6d7943e4e0d66fc8afab0be457016c6af8afd645 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sun, 31 Mar 2024 13:50:26 +0200 Subject: [PATCH 20/29] Add pretty JSON output --- cmd/commands.go | 4 +++- internal/parser/parser.go | 29 ++++++++++++++++++++--------- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/cmd/commands.go b/cmd/commands.go index 809db07..c7b459b 100644 --- a/cmd/commands.go +++ b/cmd/commands.go @@ -23,6 +23,7 @@ var ( useMarkdown bool useJson bool metrics bool + prettyJSON bool ) func init() { @@ -32,6 +33,7 @@ func init() { summarizeCmd.Flags().BoolVarP(&useMarkdown, "markdown", "m", false, "Use markdown formatting") summarizeCmd.Flags().BoolVarP(&useJson, "json", "j", false, "Use JSON output") summarizeCmd.Flags().BoolVarP(&metrics, "metrics", "s", false, "Output metrics") + summarizeCmd.Flags().BoolVarP(&prettyJSON, "pretty-json", "p", false, "Pretty JSON output") } // summarizeCmd will parse the tf plan output json to scrape created|updated|deleted resources in a clear outout @@ -55,7 +57,7 @@ var summarizeCmd = &cobra.Command{ panic(err) } - parser.Parser(output, showTags, showUnchanged, compact, useMarkdown, useJson, metrics) + parser.Parser(output, showTags, showUnchanged, compact, useMarkdown, useJson, metrics, prettyJSON) }, } diff --git a/internal/parser/parser.go b/internal/parser/parser.go index 9b57154..f518e80 100644 --- a/internal/parser/parser.go +++ b/internal/parser/parser.go @@ -20,7 +20,7 @@ var ( resourcesList = make(map[string][]string) ) -func Parser(output []byte, showTags, showUnchanged, compact, useMarkdown bool, useJson bool, metrics bool) { +func Parser(output []byte, showTags, showUnchanged, compact, useMarkdown bool, useJson bool, metrics bool, prettyJSON bool) { var data tfjson.Plan if err := json.Unmarshal(output, &data); err != nil { fmt.Printf("Error unmarshalling plan: %v\n", err) @@ -31,7 +31,7 @@ func Parser(output []byte, showTags, showUnchanged, compact, useMarkdown bool, u processResourceChange(resourceChange, showTags) } - PrintPlanSummary(showTags, showUnchanged, compact, useMarkdown, useJson, metrics) + PrintPlanSummary(showTags, showUnchanged, compact, useMarkdown, useJson, metrics, prettyJSON) } func processResourceChange(resourceChange *tfjson.ResourceChange, showTags bool) { @@ -140,7 +140,7 @@ func PrintResources(message string, resources []string, bulletSymbol string, col } } -func PrintPlanSummary(showTags, showUnchanged, compact, useMarkdown bool, useJson bool, metrics bool) { +func PrintPlanSummary(showTags, showUnchanged, compact, useMarkdown bool, useJson bool, metrics bool, prettyJSON bool) { if !useJson { if showUnchanged { PrintResources("🔵 Unchanged:", resourcesList[NOOP], "•", color.New(color.FgBlue), compact, useMarkdown) @@ -152,11 +152,11 @@ func PrintPlanSummary(showTags, showUnchanged, compact, useMarkdown bool, useJso PrintResources("🟡 Update:", resourcesList[UPDATE], "~", color.New(color.FgYellow), compact, useMarkdown) PrintResources("🔴 Destroy:", resourcesList[DELETE], "-", color.New(color.FgRed), compact, useMarkdown) } else { - PrintResourcesJson(showTags, showUnchanged, metrics) + PrintResourcesJson(showTags, showUnchanged, metrics, prettyJSON) } } -func PrintResourcesJson(showTags bool, showUnchanged bool, metrics bool) { +func PrintResourcesJson(showTags bool, showUnchanged bool, metrics bool, prettyJSON bool) { if metrics { var metricsData = make(map[string]int) @@ -172,8 +172,14 @@ func PrintResourcesJson(showTags bool, showUnchanged bool, metrics bool) { metricsData["update"] = len(resourcesList[UPDATE]) metricsData["delete"] = len(resourcesList[DELETE]) - result, _ := json.Marshal(metricsData) - fmt.Println(string(result)) + if prettyJSON { + result, _ := json.MarshalIndent(metricsData, "", " ") + fmt.Println(string(result)) + } else { + result, _ := json.Marshal(metricsData) + fmt.Println(string(result)) + } + } else { var data = make(map[string][]string) @@ -197,8 +203,13 @@ func PrintResourcesJson(showTags bool, showUnchanged bool, metrics bool) { data["delete"] = resourcesList[DELETE] } - result, _ := json.Marshal(data) - fmt.Println(string(result)) + if prettyJSON { + result, _ := json.MarshalIndent(data, "", " ") //json.Marshal(data) + fmt.Println(string(result)) + } else { + result, _ := json.Marshal(data) + fmt.Println(string(result)) + } } } From 0c7ae03f3520df9418353fc1288a51842c5afa65 Mon Sep 17 00:00:00 2001 From: goreleaserbot Date: Sun, 31 Mar 2024 13:51:59 +0200 Subject: [PATCH 21/29] Brew formula update for tftools version v0.8.0 --- Formula/tftools.rb | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Formula/tftools.rb b/Formula/tftools.rb index c3d4a5a..57eb4d5 100644 --- a/Formula/tftools.rb +++ b/Formula/tftools.rb @@ -5,21 +5,21 @@ class Tftools < Formula desc "Easy CLI with useful terraform/terragrunt tools" homepage "https://github.com/containerscrew/tftools" - version "1.1.0" + version "0.8.0" license "Apache 2.0 license" on_macos do if Hardware::CPU.arm? - url "https://github.com/containerscrew/tftools/releases/download/v1.1.0/tftools-darwin-arm64.tar.gz" - sha256 "b67cf93843e364db63f75cfa3ca0b91e070a7d93cdde54582e7fb21090642abb" + url "https://github.com/containerscrew/tftools/releases/download/v0.8.0/tftools-darwin-arm64.tar.gz" + sha256 "edc37b6a619b8f5960d2facb8f8fdae7112a26cbae17f7b3bb3c132e729fdfea" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v1.1.0/tftools-darwin-amd64.tar.gz" - sha256 "751210238a5e1d212576d37175293b268a4adf676ec8bb3aac3d806000131ea4" + url "https://github.com/containerscrew/tftools/releases/download/v0.8.0/tftools-darwin-amd64.tar.gz" + sha256 "359ec4aa4cdc5776a86349f6d176e2a8c43aea4e72ac9be8446c6efa80f0826e" def install bin.install "tftools" @@ -29,16 +29,16 @@ def install on_linux do if Hardware::CPU.arm? && Hardware::CPU.is_64_bit? - url "https://github.com/containerscrew/tftools/releases/download/v1.1.0/tftools-linux-arm64.tar.gz" - sha256 "dec0e40934ae0c78920924d3054a7aa00c174da9129171fd673145689b3ca1f0" + url "https://github.com/containerscrew/tftools/releases/download/v0.8.0/tftools-linux-arm64.tar.gz" + sha256 "4ce46c6fb0a7282442614e04b47764c9303d59915b3709a5f9513dcd7409da3d" def install bin.install "tftools" end end if Hardware::CPU.intel? - url "https://github.com/containerscrew/tftools/releases/download/v1.1.0/tftools-linux-amd64.tar.gz" - sha256 "cfc15dade830052954f6f028244bcd2360063aa731d2d0814009755e05b6f759" + url "https://github.com/containerscrew/tftools/releases/download/v0.8.0/tftools-linux-amd64.tar.gz" + sha256 "0d16aa79717509baec168f3e2e40a47554573212a28f15eed66986b6ea7906be" def install bin.install "tftools" From be9cceabfb1a00f4fe4e0009b1048b8bfae5fd7e Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sun, 31 Mar 2024 19:45:42 +0200 Subject: [PATCH 22/29] Version selector in scripts/install.sh && update doc --- README.md | 18 +++-- assets/example-json-output.png | Bin 0 -> 64578 bytes demo.json | 2 +- docs/install.md | 31 +++++++-- docs/usage.md | 25 +++++++ scripts/install.sh | 116 ++++++++++++++++----------------- 6 files changed, 120 insertions(+), 72 deletions(-) create mode 100644 assets/example-json-output.png diff --git a/README.md b/README.md index 93efbbd..2685b6e 100644 --- a/README.md +++ b/README.md @@ -18,7 +18,8 @@ - [Badges](#badges) - [Tftools summarize](#tftools-summarize) - [Installation](#installation) - - [Quick installation (latest version)](#quick-installation-latest-version) + - [Install latest version](#install-latest-version) + - [Install specific release](#install-specific-release) - [Usage](#usage) - [Built-in subcommand](#built-in-subcommand) - [Example](#example) @@ -43,12 +44,21 @@ # Installation -## Quick installation (latest version) +## Install latest version -```bash -curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | bash +```shell +curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | sh ``` +## Install specific release + +```shell +curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | sh -v "v0.8.0" +``` + +> [!NOTE] +> If you don't specify `-v` flag, by default will install always latest version. `-v` flag is not mandatory, just to avoid breaking changes in this installation script. + Take a look inside [install](./docs/install.md) documentation for other installation methods. # Usage diff --git a/assets/example-json-output.png b/assets/example-json-output.png new file mode 100644 index 0000000000000000000000000000000000000000..fe9abb85313d5d50084ee14777d3e6a464983af3 GIT binary patch literal 64578 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

    DCG~QV6wmNL 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�J)JJX$#g5VchH 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 literal 0 HcmV?d00001 diff --git a/demo.json b/demo.json index 17c6cd6..a1f85b5 100644 --- a/demo.json +++ b/demo.json @@ -1143,4 +1143,4 @@ ] } ] -} \ No newline at end of file +} diff --git a/docs/install.md b/docs/install.md index c01c339..1ea29fc 100644 --- a/docs/install.md +++ b/docs/install.md @@ -5,10 +5,13 @@ - [Installation](#installation) - [Using go](#using-go) - [Using brew](#using-brew) - - [Quick installation (latest version)](#quick-installation-latest-version) + - [Install latest version](#install-latest-version) + - [Install specific release](#install-specific-release) - [Supported OS](#supported-os) - [Check version](#check-version) -- [Updating](#updating) +- [Updating latest version](#updating-latest-version) + - [With brew](#with-brew) + - [Using curl](#using-curl) @@ -27,10 +30,16 @@ brew tap containerscrew/tftools https://github.com/containerscrew/tftools brew install tftools ``` -## Quick installation (latest version) +## Install latest version -```bash -curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | bash +```shell +curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | sh +``` + +## Install specific release + +```shell +curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | sh -v "v0.8.0" ``` You will find apk, rpm and deb packages in [releases](https://github.com/containerscrew/tftools/releases) @@ -59,9 +68,17 @@ rm dpkg -i tftools-linux-${TFTOOLS_CLI_ARCH}.deb tftools version ``` -# Updating +# Updating latest version -```bash +## With brew + +```shell brew update brew upgrade containerscrew/tftools/tftools ``` + +## Using curl + +```shell +curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | sh +``` diff --git a/docs/usage.md b/docs/usage.md index 380672b..7f6abf2 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -7,6 +7,10 @@ - [Function for zsh or bash shell](#function-for-zsh-or-bash-shell) - [Function for fish shell](#function-for-fish-shell) - [Example](#example) +- [JSON output support](#json-output-support) + - [JSON output with arns](#json-output-with-arns) + - [JSON output only metrics](#json-output-only-metrics) + - [JSON output pretty](#json-output-pretty) @@ -97,3 +101,24 @@ tftools summarize --show-tags --show-unchanged /dev/null - then - echo "ERROR: $command could not be found. Install it!" - exit 1 - fi - done -} - -clean(){ - echo -e "Cleaning $tmpdir" - rm -r "$tmpdir" -} - -# Pre flight checks -command_exists +# Global vars +INSTALLATION_PATH="/usr/local/bin/" happyexit(){ echo "" - echo "${PROJECT} successfully installed! 🎉" - echo "" - echo "Now run:" + echo "tftools successfully installed! 🎉" echo "" - echo " ${PROJECT} usage" + echo "Now run: $ tftools usage" echo "" exit 0 } -validate_checksum(){ - echo "Not implemented yet" -} - # Check OS OS=$(uname -s) arch=$(uname -m) @@ -61,7 +28,7 @@ case $OS in cli_arch=$arch ;; *) - echo "There is no ${PROJECT} $OS support for $arch" + echo "There is no tftools $OS support for $arch" exit 1 ;; esac @@ -81,39 +48,68 @@ case $OS in cli_arch=$arch ;; *) - echo "There is no ${PROJECT} $OS support for $arch" + echo "There is no tftools $OS support for $arch" exit 1 ;; esac ;; *) - echo "There is no ${PROJECT} $OS support for $arch" + echo "There is no tftools $OS support for $arch" exit 1 ;; esac OS=$(echo "$OS" | tr '[:upper:]' '[:lower:]') download_release() { - TFTOOLS_LATEST_VERSION=$(curl -s https://api.github.com/repos/containerscrew/$PROJECT/releases/latest | jq -r ".name") - INSTALLATION_PATH="/usr/local/bin/" - tmpdir=$(mktemp -d) + LATEST_VERSION=$(curl -s https://api.github.com/repos/containerscrew/tftools/releases/latest | jq -r ".name") + if [ -z "$1" ]; then VERSION=$LATEST_VERSION; else VERSION=$1; fi - cd $tmpdir - echo -e "Downloading... ${TFTOOLS_LATEST_VERSION}/${PROJECT}-${OS}-${cli_arch}.tar.gz \n" - curl -L --fail --remote-name-all https://github.com/containerscrew/${PROJECT}/releases/download/"${TFTOOLS_LATEST_VERSION}"/${PROJECT}-"${OS}"-"${cli_arch}".tar.gz - tar -xzf ${PROJECT}-"${OS}"-"${cli_arch}".tar.gz ${PROJECT} + printf "\033[0;32m[info] - Downloading version: ${VERSION}/tftools-${OS}-${cli_arch}.tar.gz \033[0m\n" + curl -L --fail --remote-name-all https://github.com/containerscrew/tftools/releases/download/"${VERSION}"/tftools-"${OS}"-"${cli_arch}".tar.gz -o /tmp/tftools.tar.gz + tar -xzf /tmp/tftools.tar.gz -C /tmp/ } -# Start install -download_release - -if [ "$EUID" -ne 0 ] - then command_exists sudo - sudo mv ${PROJECT} $INSTALLATION_PATH +install_binary(){ + if [ "$(id -u)" = 0 ]; then + cp /tmp/tftools $INSTALLATION_PATH else - mv ${PROJECT} $INSTALLATION_PATH - chmod +x $INSTALLATION_PATH/${PROJECT} -fi + sudo cp /tmp/tftools $INSTALLATION_PATH + fi + sudo chmod +x $INSTALLATION_PATH/tftools + rm -rf /tmp/tftools* + happyexit +} -clean -happyexit +# Function to display help text +usage() { + echo "Usage: $0 [-v] [-h]" + echo "Options:" + echo " -v Select which version do you want to install." + echo " -h Display the help message" +} + +# Parse options using getopts +while getopts "v:h" option; do + case "${option}" in + v) # Install specific version + version=${OPTARG} + download_release "$version" + install_binary + ;; + h) # Help option + usage + exit 0 + ;; + \?) # Invalid option + echo "Invalid option: -${OPTARG}" + usage + exit 1 + ;; + esac +done + +# If no flags, by default install latest version +if [ $# -eq 0 ]; then + download_release + install_binary +fi From a65680f63ee55ae48273f4bdbfda3126c95df033 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sun, 31 Mar 2024 19:48:35 +0200 Subject: [PATCH 23/29] Fix sudo for root user installation in scripts/install.sh --- scripts/install.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/install.sh b/scripts/install.sh index 61786f6..746b132 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -72,10 +72,11 @@ download_release() { install_binary(){ if [ "$(id -u)" = 0 ]; then cp /tmp/tftools $INSTALLATION_PATH + chmod +x $INSTALLATION_PATH/tftools else sudo cp /tmp/tftools $INSTALLATION_PATH + sudo chmod +x $INSTALLATION_PATH/tftools fi - sudo chmod +x $INSTALLATION_PATH/tftools rm -rf /tmp/tftools* happyexit } From b300eb45e2c4812ae1b40b25dbef92e6c448c9f3 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sun, 31 Mar 2024 19:50:28 +0200 Subject: [PATCH 24/29] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 2685b6e..0a26417 100644 --- a/README.md +++ b/README.md @@ -57,7 +57,7 @@ curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containe ``` > [!NOTE] -> If you don't specify `-v` flag, by default will install always latest version. `-v` flag is not mandatory, just to avoid breaking changes in this installation script. +> If you don't specify `-v` flag, by default will install always latest version. Take a look inside [install](./docs/install.md) documentation for other installation methods. From 417bf54c1c685e9da807db61a84c1c06b8780f2b Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sun, 31 Mar 2024 20:03:13 +0200 Subject: [PATCH 25/29] Update doc --- docs/install.md | 2 +- scripts/install.sh | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/docs/install.md b/docs/install.md index 1ea29fc..9855447 100644 --- a/docs/install.md +++ b/docs/install.md @@ -39,7 +39,7 @@ curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containe ## Install specific release ```shell -curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | sh -v "v0.8.0" +curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containerscrew/tftools/main/scripts/install.sh | sh -s -- -v "v0.8.0" ``` You will find apk, rpm and deb packages in [releases](https://github.com/containerscrew/tftools/releases) diff --git a/scripts/install.sh b/scripts/install.sh index 746b132..07e892f 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -77,7 +77,7 @@ install_binary(){ sudo cp /tmp/tftools $INSTALLATION_PATH sudo chmod +x $INSTALLATION_PATH/tftools fi - rm -rf /tmp/tftools* + rm -rf /tmp/tftools* README.md happyexit } From 8aea3676ae33aaa53f7e9c31a6962286d50cfd9d Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sun, 31 Mar 2024 20:03:19 +0200 Subject: [PATCH 26/29] Update doc --- scripts/install.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/install.sh b/scripts/install.sh index 07e892f..746b132 100644 --- a/scripts/install.sh +++ b/scripts/install.sh @@ -77,7 +77,7 @@ install_binary(){ sudo cp /tmp/tftools $INSTALLATION_PATH sudo chmod +x $INSTALLATION_PATH/tftools fi - rm -rf /tmp/tftools* README.md + rm -rf /tmp/tftools* happyexit } From 4ff46cf1ded82e5df225406139f2e0c537ac72a6 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sun, 31 Mar 2024 20:06:36 +0200 Subject: [PATCH 27/29] Update doc --- README.md | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0a26417..c7e4cad 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,13 @@ curl --proto '=https' --tlsv1.2 -sSfL https://raw.githubusercontent.com/containe > [!NOTE] > If you don't specify `-v` flag, by default will install always latest version. -Take a look inside [install](./docs/install.md) documentation for other installation methods. +## Container image + +[In this other repo](https://github.com/containerscrew/infratools) I have a container image where you can find this tool `tftools` installed. + +https://hub.docker.com/r/containerscrew/infratools/ + +> Take a look inside [install](./docs/install.md) documentation for other installation methods. # Usage From 5d2d931c3f78158d3bf09920a1b10beb1f5bcf59 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Sun, 31 Mar 2024 22:53:06 +0200 Subject: [PATCH 28/29] Update usage doc --- README.md | 1 + docs/usage.md | 58 ++++++++++++++++++++++++++++++++++++++++++--------- 2 files changed, 49 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index c7e4cad..6732bbf 100644 --- a/README.md +++ b/README.md @@ -20,6 +20,7 @@ - [Installation](#installation) - [Install latest version](#install-latest-version) - [Install specific release](#install-specific-release) + - [Container image](#container-image) - [Usage](#usage) - [Built-in subcommand](#built-in-subcommand) - [Example](#example) diff --git a/docs/usage.md b/docs/usage.md index 7f6abf2..7207d60 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -4,8 +4,10 @@ - [Usage](#usage) - [Summarize](#summarize) - - [Function for zsh or bash shell](#function-for-zsh-or-bash-shell) -- [Function for fish shell](#function-for-fish-shell) + - [Function for zsh](#function-for-zsh) + - [Function for fish](#function-for-fish) + - [Function for bash](#function-for-bash) + - [Load new functions](#load-new-functions) - [Example](#example) - [JSON output support](#json-output-support) - [JSON output with arns](#json-output-with-arns) @@ -18,22 +20,22 @@ ## Summarize -```bash +```shell terraform plan -out plan.tfplan -terraform show -json plan.tfplan | tftools summarize +terraform show -json plan.tfplan | tftools summarize --show-tags ``` Or if you have the file in json: -```bash +```shell terraform plan -out plan.tfplan terraform show -json plan.tfplan > plan.json cat plan.json | tftools summarize -tftools summarize ; ``` -## Function for zsh or bash shell -Copy [this function](../scripts/tfsum.sh) in your `~/.zshrc` or `~/.bashrc` file. +## Function for zsh + +Edit your `~/.zshrc` ```bash function tfsum() { @@ -51,7 +53,9 @@ function tfsum() { } ``` -# Function for fish shell +## Function for fish + +Edit your `~/.config/fish/config.fish` or create a new file inside `~/.config/fish/functions/tfsum.fish` ```shell function tfsum @@ -68,7 +72,41 @@ function tfsum end ``` -Load new functions: +## Function for bash + +Edit your `~/.bashrc` + +```shell +tfsum() { + if [ -z "$1" ]; then + echo "You should type 'tfsum terraform|terragrunt'" + exit 1 + fi + + echo -en "Starting tf summary... Please wait\n" + + if [ -n "$2" ] && [ "$2" == "-v" ]; then + "$1" plan -out plan.tfplan + else + "$1" plan -out plan.tfplan 1> /dev/null + fi + + "$1" show -json plan.tfplan | tftools summarize --show-tags + if [ -f "plan.tfplan" ]; then rm plan.tfplan; fi +} +``` + +> [!NOTE] +> Note that the bash function has the possibility of activating the output or not using the `-v` flag + +```shell +tfsum terraform -v # show full output +``` + +> [!WARNING] +> Adapt the rest of zsh or fish functions according to your needs. + +## Load new functions ```shell source ~/.zshrc From 994d64f19587726d6c5a005aa050b915059b9364 Mon Sep 17 00:00:00 2001 From: containerscrew <131241415+containerscrew@users.noreply.github.com> Date: Tue, 2 Apr 2024 17:22:07 +0200 Subject: [PATCH 29/29] Update doc and script/tfsum.sh --- README.md | 1 + docs/usage.md | 13 +++++++++++++ internal/tui/.keep | 0 scripts/tfsum.sh | 32 +++++++++++++++++--------------- 4 files changed, 31 insertions(+), 15 deletions(-) delete mode 100644 internal/tui/.keep mode change 100644 => 100755 scripts/tfsum.sh diff --git a/README.md b/README.md index 6732bbf..9ebb0f0 100644 --- a/README.md +++ b/README.md @@ -93,6 +93,7 @@ tftools usage # TO DO +* When there are updates add flag --show-updates-output * Improve error handling * Add tests, although I have no experience * Code refactor is certainly needed! diff --git a/docs/usage.md b/docs/usage.md index 7207d60..42c5565 100644 --- a/docs/usage.md +++ b/docs/usage.md @@ -8,6 +8,7 @@ - [Function for fish](#function-for-fish) - [Function for bash](#function-for-bash) - [Load new functions](#load-new-functions) + - [Using tfsum as a custom binary](#using-tfsum-as-a-custom-binary) - [Example](#example) - [JSON output support](#json-output-support) - [JSON output with arns](#json-output-with-arns) @@ -114,6 +115,18 @@ source ~/.bashrc source ~/.config/fish/config.fish ``` +## Using tfsum as a custom binary + +Copy [tfsum](../scripts/tfsum.sh) to `/usr/local/bin/tfsum` + +```shell +sudo cp scripts/tfsum.sh /usr/local/bin/tfsum +``` + +> `/usr/local/bin` or other directory included in your path + +Inside the container image of [infratools](https://github.com/containerscrew/infratools), this custom binary is already contemplated. + # Example ```shell diff --git a/internal/tui/.keep b/internal/tui/.keep deleted file mode 100644 index e69de29..0000000 diff --git a/scripts/tfsum.sh b/scripts/tfsum.sh old mode 100644 new mode 100755 index 881f9da..e977fde --- a/scripts/tfsum.sh +++ b/scripts/tfsum.sh @@ -1,15 +1,17 @@ -function tfsum() { - if [ -z "$1" ]; - then - echo "You should type 'tfsum terraform|terragrunt'" - else - echo -e "Starting tf summary..." - # Don't print output of terraform plan - # If you don't want full plan output: $1 plan -out plan.tfplan 1> /dev/null - $1 plan -out plan.tfplan - echo -e "\n" - $1 show -json plan.tfplan | tftools summarize - # Delete plan out file to avoid git tracking (although is included in .gitignore) - if [ -f "plan.tfplan" ]; then rm plan.tfplan; fi - fi -} +#!/bin/bash + +if [ -z "$1" ]; then + echo "You should type 'tfsum terraform|terragrunt'" + exit 1 +fi + +echo -en "Starting tf summary... Please wait" + +if [ -n "$2" ] && [ "$2" == "-v" ]; then + "$1" plan -out plan.tfplan +else + "$1" plan -out plan.tfplan 1> /dev/null +fi + +"$1" show -json plan.tfplan | tftools summarize --show-tags +if [ -f "plan.tfplan" ]; then rm plan.tfplan; fi \ No newline at end of file