From 9629db34d7515529e39767d76d856dee94df19e6 Mon Sep 17 00:00:00 2001 From: Paul Zietsman Date: Fri, 8 May 2020 23:32:25 +0200 Subject: [PATCH] all the new features - pipe input being passed through - simple match replaced with glob - sick outputs - clean ansi colors from pipe --- .gitignore | 6 ++-- README.md | 24 ++++++++----- docs/banner.png | Bin 0 -> 35387 bytes main.go | 88 +++++++++++++++++++++++++++++++++++++----------- 4 files changed, 87 insertions(+), 31 deletions(-) create mode 100644 docs/banner.png diff --git a/.gitignore b/.gitignore index 474b0ad..66b3d4c 100644 --- a/.gitignore +++ b/.gitignore @@ -1,6 +1,6 @@ - tft_darwin_amd64 - tft_linux_amd64 - tft_windows_amd64.exe + +plan.out +.DS_Store diff --git a/README.md b/README.md index 38dc17d..15a23ae 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,9 @@ # tft -terraform targeted applies made easy, aka making easy to do bad things. +[![Build Status](https://travis-ci.org/phzietsman/tft.svg?branch=master)](https://travis-ci.org/phzietsman/tft) + +terraform targeted applies made easy, aka making it easy to do dumb stuff. + +![banner](docs/banner.png) using globs in `-target` is an open issue on [terraform](https://github.com/hashicorp/terraform/issues/2182) and it is not getting a ton of love (probably because it promotes bad behaviour), but sometimes i need to be bad. @@ -32,15 +36,21 @@ terraform will manage the dependencies and figure out what needs to be applied w **ALWAYS INSPECT YOUR PLAN BEFORE APPLYING** +to match resources you can use **globs**. + ```sh -# I always write out the plan to file, but you could pipe directly into tft -$ terraform plan > plan.out # This will include all aws_s3_bucket_policy resources -$ cat plan | tft -pattern=aws_s3_bucket_policy -mode=include +$ terraform plan | tft -pattern="*aws_s3_bucket_policy*" -mode=include + +# This will include all aws_s3_bucket_policy resources in module something +$ terraform plan | tft -pattern="module.something.aws_s3_bucket_policy*" -mode=include + +# This will include all aws_s3_bucket_policy resources in all modules +$ terraform plan | tft -pattern="module.*.aws_s3_bucket_policy*" -mode=include # This will exclude all aws_s3_bucket_policy resources -$ cat plan | tft -pattern=aws_s3_bucket_policy -mode=exclude +$ terraform plan | tft -pattern="*aws_s3_bucket_policy*" -mode=exclude ``` @@ -48,12 +58,10 @@ $ cat plan | tft -pattern=aws_s3_bucket_policy -mode=exclude since i have little to no go knowledge and its only me using this and it is serving its purpose well, i'm not in a hurry to change things, but i'd still like to keep it alive. This is what i'm planning: -- when you pipe `terraform plan` through `tft` you only get feedback at the end when everything is done. i need to print the terraform output to terminal. - i want to use some cool cli framework. cause. this looks like a good one: https://github.com/urfave/cli -- get a handle on the terraform commands and args. then i could run the targeted plan for you and create a better output. +- ~~get a handle on the terraform commands and args. then i could run the targeted plan for you and create a better output.~~ this is impossible. - fix the typos in this doc and use caps. - add some tests and error handling. this seems to be the responsible thing to do. -- maybe change the `-pattern` to accept a globs. this might be handy and it'll make we feel more like a developer. - package this for brew diff --git a/docs/banner.png b/docs/banner.png new file mode 100644 index 0000000000000000000000000000000000000000..856f4638d42065d2350ee253f2aa99f122584c99 GIT binary patch literal 35387 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