author | eyeokg <k.galczynski@eyeo.com> |
Tue, 01 Oct 2024 08:02:53 +0200 | |
changeset 25704 | 4c03dcd1e5aa |
child 25705 | d7bf4e5f34aa |
permissions | -rwxr-xr-x |
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 |