|
5 | 5 |
|
6 | 6 | # 1. Parse CLI arguments |
7 | 7 | usage() { |
8 | | - echo "Usage: $0 [-v] [-i dir1,dir2,...] <target_directory>" |
| 8 | + echo "Usage: $0 [-v] [-m] [-i dir1,dir2,...] <target_directory>" |
9 | 9 | echo " -i Comma-separated directory basenames to ignore (recursion prunes them)" |
10 | | - echo " -v Recursively process directories containing *.schema.yaml files" |
| 10 | + echo " -m After successful run also run schemagen in internal/metadata" |
| 11 | + echo " -v Validation mode - process only directories containing *.schema.yaml files" |
11 | 12 | } |
12 | 13 |
|
13 | 14 | IGNORED_DIRS=() |
14 | 15 | RECURSIVE_MODE=false |
15 | | -while getopts ":i:hv" opt; do |
| 16 | +METADATA_MODE=false |
| 17 | +while getopts ":i:hmv" opt; do |
16 | 18 | case $opt in |
17 | 19 | i) |
18 | 20 | if [ -n "$OPTARG" ]; then |
19 | 21 | IFS=',' read -r -a tmp <<< "$OPTARG" |
20 | 22 | IGNORED_DIRS+=("${tmp[@]}") |
21 | 23 | fi |
22 | 24 | ;; |
| 25 | + m) |
| 26 | + METADATA_MODE=true |
| 27 | + ;; |
23 | 28 | h) |
24 | 29 | usage |
25 | 30 | exit 0 |
@@ -47,6 +52,11 @@ FAILED_DIRS=() # Array to keep track of failures |
47 | 52 | EXEC_DIR=$(pwd) |
48 | 53 | dirs_to_process=() |
49 | 54 |
|
| 55 | +run_schemagen_for_dir() { |
| 56 | + local dir_path=$1 |
| 57 | + (cd "$EXEC_DIR" && make schemagen SRC="$dir_path") |
| 58 | +} |
| 59 | + |
50 | 60 | dir_already_scheduled() { |
51 | 61 | local candidate=$1 |
52 | 62 | for existing_dir in "${dirs_to_process[@]}"; do |
@@ -132,35 +142,35 @@ for dir in "${dirs_to_process[@]}"; do |
132 | 142 |
|
133 | 143 | echo "Run on: $dir_display" |
134 | 144 |
|
135 | | - if ! (cd "$dir" && "$EXEC_DIR/.tools/schemagen"); then |
| 145 | + if ! run_schemagen_for_dir "$dir"; then |
136 | 146 | FAILED_DIRS+=("$dir_display") |
137 | 147 | echo "Done with $dir_display" |
138 | 148 | echo "------------------------------------------" |
139 | 149 | continue |
140 | 150 | fi |
141 | 151 |
|
142 | 152 | echo "Done with $dir_display" |
143 | | - |
144 | | - |
145 | | - metadata_dir="$dir/internal/metadata" |
146 | | - if [ -f "$metadata_dir/generated_config.go" ]; then |
147 | | - metadata_basename=$(basename "$metadata_dir") |
148 | | - skip_metadata=false |
149 | | - for ignored in "${IGNORED_DIRS[@]}"; do |
150 | | - if [[ "$metadata_basename" == "$ignored" ]]; then |
151 | | - skip_metadata=true |
152 | | - break |
153 | | - fi |
154 | | - done |
155 | | - metadata_display="$dir_display/internal/metadata" |
156 | | - if [ "$skip_metadata" = true ]; then |
157 | | - echo "Skipping $metadata_display (in ignore list)" |
158 | | - else |
159 | | - echo "Run on: $metadata_display" |
160 | | - if ! (cd "$metadata_dir" && "$EXEC_DIR/.tools/schemagen"); then |
161 | | - FAILED_DIRS+=("$metadata_display") |
| 153 | + if [ "$METADATA_MODE" = true ]; then |
| 154 | + metadata_dir="$dir/internal/metadata" |
| 155 | + if [ -f "$metadata_dir/generated_config.go" ]; then |
| 156 | + metadata_basename=$(basename "$metadata_dir") |
| 157 | + skip_metadata=false |
| 158 | + for ignored in "${IGNORED_DIRS[@]}"; do |
| 159 | + if [[ "$metadata_basename" == "$ignored" ]]; then |
| 160 | + skip_metadata=true |
| 161 | + break |
| 162 | + fi |
| 163 | + done |
| 164 | + metadata_display="$dir_display/internal/metadata" |
| 165 | + if [ "$skip_metadata" = true ]; then |
| 166 | + echo "Skipping $metadata_display (in ignore list)" |
| 167 | + else |
| 168 | + echo "Run on: $metadata_display" |
| 169 | + if ! run_schemagen_for_dir "$metadata_dir"; then |
| 170 | + FAILED_DIRS+=("$metadata_display") |
| 171 | + fi |
| 172 | + echo "Done with $metadata_display" |
162 | 173 | fi |
163 | | - echo "Done with $metadata_display" |
164 | 174 | fi |
165 | 175 | fi |
166 | 176 |
|
|
0 commit comments