Skip to content

Commit b8b5154

Browse files
committed
lib/validation.sh, Range Check, Licenses 2025-08-01
Signed-off-by: Julio Jimenez <julio@clickhouse.com>
1 parent b90cbb5 commit b8b5154

4 files changed

Lines changed: 74 additions & 67 deletions

File tree

entrypoint.sh

Lines changed: 1 addition & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -8,73 +8,7 @@ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
88
# Source all library files
99
source "$SCRIPT_DIR/lib/sanitize.sh"
1010
source "$SCRIPT_DIR/lib/common.sh"
11-
12-
# Validate required environment variables
13-
validate_env() {
14-
local required_vars=("AWS_ACCESS_KEY_ID" "AWS_SECRET_ACCESS_KEY" "S3_BUCKET")
15-
16-
# Add REPOSITORY requirement only if not in merge mode
17-
if [[ "${MERGE:-false}" != "true" && "${SBOM_SOURCE:-}" != "mend" && "${SBOM_SOURCE:-}" != "wiz" ]]; then
18-
required_vars+=("REPOSITORY")
19-
fi
20-
21-
for var in "${required_vars[@]}"; do
22-
if [[ -z "${!var:-}" ]]; then
23-
log_error "Required environment variable $var is not set"
24-
exit 1
25-
fi
26-
done
27-
28-
# Validate ClickHouse configuration if any ClickHouse parameter is provided
29-
if [[ -n "${CLICKHOUSE_URL:-}" ]]; then
30-
local clickhouse_vars=("CLICKHOUSE_URL" "CLICKHOUSE_DATABASE" "CLICKHOUSE_USERNAME")
31-
for var in "${clickhouse_vars[@]}"; do
32-
if [[ -z "${!var:-}" ]]; then
33-
log_error "If using ClickHouse, $var must be provided"
34-
exit 1
35-
fi
36-
done
37-
log_info "ClickHouse configuration validated"
38-
fi
39-
}
40-
41-
# Validate Mend environment variables
42-
validate_mend_env() {
43-
if [[ "${SBOM_SOURCE:-}" == "mend" ]]; then
44-
local required_mend_vars=("MEND_EMAIL" "MEND_ORG_UUID" "MEND_USER_KEY" "MEND_BASE_URL")
45-
46-
for var in "${required_mend_vars[@]}"; do
47-
if [[ -z "${!var:-}" ]]; then
48-
log_error "Required Mend environment variable $var is not set"
49-
exit 1
50-
fi
51-
done
52-
53-
# Validate at least one scope is provided
54-
if [[ -z "${MEND_PROJECT_UUID:-}" && -z "${MEND_PRODUCT_UUID:-}" && -z "${MEND_ORG_UUID:-}" ]]; then
55-
log_error "At least one Mend scope must be provided: MEND_PROJECT_UUID, MEND_PRODUCT_UUID, or MEND_ORG_UUID"
56-
exit 1
57-
fi
58-
59-
log_info "Mend environment validated"
60-
fi
61-
}
62-
63-
# Validate Wiz environment variables
64-
validate_wiz_env() {
65-
if [[ "${SBOM_SOURCE:-}" == "wiz" ]]; then
66-
local required_wiz_vars=("WIZ_API_ENDPOINT" "WIZ_CLIENT_ID" "WIZ_CLIENT_SECRET" "WIZ_REPORT_ID")
67-
68-
for var in "${required_wiz_vars[@]}"; do
69-
if [[ -z "${!var:-}" ]]; then
70-
log_error "Required Wiz environment variable $var is not set"
71-
exit 1
72-
fi
73-
done
74-
75-
log_info "Wiz environment validated"
76-
fi
77-
}
11+
source "$SCRIPT_DIR/lib/validation.sh"
7812

7913
# Download SBOM from GitHub repository
8014
download_sbom() {

lib/validation.sh

Lines changed: 71 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,71 @@
1+
#!/bin/bash
2+
# Environment validation functions
3+
4+
source "$(dirname "${BASH_SOURCE[0]}")/common.sh"
5+
6+
# Validate required environment variables
7+
validate_env() {
8+
local required_vars=("AWS_ACCESS_KEY_ID" "AWS_SECRET_ACCESS_KEY" "S3_BUCKET")
9+
10+
# Add REPOSITORY requirement only if not in merge mode
11+
if [[ "${MERGE:-false}" != "true" && "${SBOM_SOURCE:-}" != "mend" && "${SBOM_SOURCE:-}" != "wiz" ]]; then
12+
required_vars+=("REPOSITORY")
13+
fi
14+
15+
for var in "${required_vars[@]}"; do
16+
if [[ -z "${!var:-}" ]]; then
17+
log_error "Required environment variable $var is not set"
18+
exit 1
19+
fi
20+
done
21+
22+
# Validate ClickHouse configuration if any ClickHouse parameter is provided
23+
if [[ -n "${CLICKHOUSE_URL:-}" ]]; then
24+
local clickhouse_vars=("CLICKHOUSE_URL" "CLICKHOUSE_DATABASE" "CLICKHOUSE_USERNAME")
25+
for var in "${clickhouse_vars[@]}"; do
26+
if [[ -z "${!var:-}" ]]; then
27+
log_error "If using ClickHouse, $var must be provided"
28+
exit 1
29+
fi
30+
done
31+
log_info "ClickHouse configuration validated"
32+
fi
33+
}
34+
35+
# Validate Mend environment variables
36+
validate_mend_env() {
37+
if [[ "${SBOM_SOURCE:-}" == "mend" ]]; then
38+
local required_mend_vars=("MEND_EMAIL" "MEND_ORG_UUID" "MEND_USER_KEY" "MEND_BASE_URL")
39+
40+
for var in "${required_mend_vars[@]}"; do
41+
if [[ -z "${!var:-}" ]]; then
42+
log_error "Required Mend environment variable $var is not set"
43+
exit 1
44+
fi
45+
done
46+
47+
# Validate at least one scope is provided
48+
if [[ -z "${MEND_PROJECT_UUID:-}" && -z "${MEND_PRODUCT_UUID:-}" && -z "${MEND_ORG_UUID:-}" ]]; then
49+
log_error "At least one Mend scope must be provided: MEND_PROJECT_UUID, MEND_PRODUCT_UUID, or MEND_ORG_UUID"
50+
exit 1
51+
fi
52+
53+
log_info "Mend environment validated"
54+
fi
55+
}
56+
57+
# Validate Wiz environment variables
58+
validate_wiz_env() {
59+
if [[ "${SBOM_SOURCE:-}" == "wiz" ]]; then
60+
local required_wiz_vars=("WIZ_API_ENDPOINT" "WIZ_CLIENT_ID" "WIZ_CLIENT_SECRET" "WIZ_REPORT_ID")
61+
62+
for var in "${required_wiz_vars[@]}"; do
63+
if [[ -z "${!var:-}" ]]; then
64+
log_error "Required Wiz environment variable $var is not set"
65+
exit 1
66+
fi
67+
done
68+
69+
log_info "Wiz environment validated"
70+
fi
71+
}

test/advanced.bats

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ setup() {
1818
# Replace the source line in the extracted script
1919
sed -i "s|source \"\$SCRIPT_DIR/lib/sanitize.sh\"|source \"$PROJECT_ROOT/lib/sanitize.sh\"|" "$TEST_SCRIPT"
2020
sed -i "s|source \"\$SCRIPT_DIR/lib/common.sh\"|source \"$PROJECT_ROOT/lib/common.sh\"|" "$TEST_SCRIPT"
21+
sed -i "s|source \"\$SCRIPT_DIR/lib/validation.sh\"|source \"$PROJECT_ROOT/lib/validation.sh\"|" "$TEST_SCRIPT"
2122

2223
# Source the functions
2324
source "$TEST_SCRIPT"

test/simple.bats

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ setup() {
1919
# Replace the source line in the extracted script
2020
sed -i "s|source \"\$SCRIPT_DIR/lib/sanitize.sh\"|source \"$PROJECT_ROOT/lib/sanitize.sh\"|" "$TEST_SCRIPT"
2121
sed -i "s|source \"\$SCRIPT_DIR/lib/common.sh\"|source \"$PROJECT_ROOT/lib/common.sh\"|" "$TEST_SCRIPT"
22+
sed -i "s|source \"\$SCRIPT_DIR/lib/validation.sh\"|source \"$PROJECT_ROOT/lib/validation.sh\"|" "$TEST_SCRIPT"
2223

2324
# Source the functions
2425
source "$TEST_SCRIPT"

0 commit comments

Comments
 (0)