pre-commit
author eyeokg <k.galczynski@eyeo.com>
Tue, 01 Oct 2024 08:02:53 +0200
changeset 25704 4c03dcd1e5aa
child 25705 d7bf4e5f34aa
permissions -rwxr-xr-x
Initial commit for domains variables
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
25704
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
     1
#!/bin/sh
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
     2
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
     3
if ! [ -f "./exceptionrules/domains-variables.json" ]; then
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
     4
    echo "File does not exist"
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
     5
    exit 1
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
     6
fi
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
     7
staged_domains_variables=$(git show :./exceptionrules/domains-variables.json 2>/dev/null)
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
     8
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
     9
if ! [ -n "$staged_domains_variables" ]; then
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    10
    echo "No changes in domains variables"
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    11
    exit 0
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    12
fi
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    13
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    14
if ! jq -e . >/dev/null 2>&1 <<<"$staged_domains_variables"; then
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    15
    echo "Error: Invalid JSON content"
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    16
    exit 1
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    17
fi
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    18
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    19
object=$(jq '.' <<< "$staged_domains_variables")
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    20
keys=$(jq 'keys' <<< "$object")
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    21
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    22
for key in $(jq -r '.[]' <<< "$keys"); do
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    23
    if ! [[ "$key" =~ ^[[:alnum:]_]+$ ]]; then
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    24
        echo "invalid key: $key, only alphanumeric characters and underscores are allowed"
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    25
        invalid=true
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    26
    fi
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    27
    elements=$(jq -r ".[\"$key\"][]" <<< "$object")
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    28
    for element in $elements; do
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    29
        if ! [[ "$element" =~ ^[[:alnum:]*][[:alnum:]*.-]+$ ]]; then
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    30
            echo "invalid domain in $key: $element"
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    31
            invalid=true
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    32
        fi
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    33
    done
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    34
done
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    35
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    36
if [ "$invalid" = true ]; then
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    37
    exit 1
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    38
fi
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    39
4c03dcd1e5aa Initial commit for domains variables
eyeokg <k.galczynski@eyeo.com>
parents:
diff changeset
    40
exit 0