mirror of
https://github.com/tofuutils/pre-commit-opentofu.git
synced 2025-10-15 17:38:54 +02:00
feat: Add support for quoted values in infracost_breakdown --hook-config (#269)
This commit is contained in:
parent
15cac90874
commit
e2604eacfa
2 changed files with 27 additions and 7 deletions
12
README.md
12
README.md
|
|
@ -259,10 +259,10 @@ Unlike most other hooks, this hook triggers once if there are any changed files
|
||||||
- id: infracost_breakdown
|
- id: infracost_breakdown
|
||||||
args:
|
args:
|
||||||
- --args=--path=./env/dev
|
- --args=--path=./env/dev
|
||||||
- --hook-config=.totalHourlyCost|tonumber > 0.1
|
- --hook-config='.totalHourlyCost|tonumber > 0.1'
|
||||||
- --hook-config=.totalHourlyCost|tonumber > 1
|
- --hook-config='.totalHourlyCost|tonumber > 1'
|
||||||
- --hook-config=.projects[].diff.totalMonthlyCost|tonumber != 10000
|
- --hook-config='.projects[].diff.totalMonthlyCost|tonumber != 10000'
|
||||||
- --hook-config=.currency == "USD"
|
- --hook-config='.currency == "USD"'
|
||||||
```
|
```
|
||||||
<!-- markdownlint-disable-next-line no-inline-html -->
|
<!-- markdownlint-disable-next-line no-inline-html -->
|
||||||
<details><summary>Output</summary>
|
<details><summary>Output</summary>
|
||||||
|
|
@ -385,8 +385,8 @@ Example:
|
||||||
```yaml
|
```yaml
|
||||||
- id: terraform_providers_lock
|
- id: terraform_providers_lock
|
||||||
args:
|
args:
|
||||||
- '--args=-platform=windows_amd64'
|
- --args=-platform=windows_amd64
|
||||||
- '--args=-platform=darwin_amd64'
|
- --args=-platform=darwin_amd64
|
||||||
```
|
```
|
||||||
|
|
||||||
4. It may happen that Terraform working directory (`.terraform`) already exists but not in the best condition (eg, not initialized modules, wrong version of Terraform, etc.). To solve this problem, you can find and delete all `.terraform` directories in your repository:
|
4. It may happen that Terraform working directory (`.terraform`) already exists but not in the best condition (eg, not initialized modules, wrong version of Terraform, etc.). To solve this problem, you can find and delete all `.terraform` directories in your repository:
|
||||||
|
|
|
||||||
|
|
@ -105,7 +105,27 @@ function infracost_breakdown_ {
|
||||||
# Next line removes leading spaces, just for fancy output reason.
|
# Next line removes leading spaces, just for fancy output reason.
|
||||||
check=$(echo "$check" | sed 's/^[[:space:]]*//')
|
check=$(echo "$check" | sed 's/^[[:space:]]*//')
|
||||||
|
|
||||||
operation="$(echo "$check" | grep -oE '[!<>=]+')"
|
# Drop quotes in hook args section. From:
|
||||||
|
# -h ".totalHourlyCost > 0.1"
|
||||||
|
# --hook-config='.currency == "USD"'
|
||||||
|
# To:
|
||||||
|
# -h .totalHourlyCost > 0.1
|
||||||
|
# --hook-config=.currency == "USD"
|
||||||
|
first_char=${check:0:1}
|
||||||
|
last_char=${check: -1}
|
||||||
|
if [ "$first_char" == "$last_char" ] && {
|
||||||
|
[ "$first_char" == '"' ] || [ "$first_char" == "'" ]
|
||||||
|
}; then
|
||||||
|
check="${check:1:-1}"
|
||||||
|
fi
|
||||||
|
|
||||||
|
operations=($(echo "$check" | grep -oE '[!<>=]{1,2}'))
|
||||||
|
# Get the very last operator, that is used in comparison inside `jq` query.
|
||||||
|
# From the example below we need to pick the `>` which is in between `add` and `1000`,
|
||||||
|
# but not the `!=`, which goes earlier in the `jq` expression
|
||||||
|
# [.projects[].diff.totalMonthlyCost | select (.!=null) | tonumber] | add > 1000
|
||||||
|
operation=${operations[-1]}
|
||||||
|
|
||||||
IFS="$operation" read -r -a jq_check <<< "$check"
|
IFS="$operation" read -r -a jq_check <<< "$check"
|
||||||
real_value="$(jq "${jq_check[0]}" <<< "$RESULTS")"
|
real_value="$(jq "${jq_check[0]}" <<< "$RESULTS")"
|
||||||
compare_value="${jq_check[1]}${jq_check[2]}"
|
compare_value="${jq_check[1]}${jq_check[2]}"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue