diff options
Diffstat (limited to 'shopenscad.sh')
-rwxr-xr-x | shopenscad.sh | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/shopenscad.sh b/shopenscad.sh index eba5e81..be1a9ec 100755 --- a/shopenscad.sh +++ b/shopenscad.sh | |||
@@ -158,6 +158,7 @@ main() | |||
158 | val_sep="-" | 158 | val_sep="-" |
159 | var_sep="," | 159 | var_sep="," |
160 | declare -A SCAD | 160 | declare -A SCAD |
161 | declare -a scad_var_order | ||
161 | 162 | ||
162 | while IFS= read -r line; do | 163 | while IFS= read -r line; do |
163 | [ "$line" ] || continue; | 164 | [ "$line" ] || continue; |
@@ -173,6 +174,7 @@ main() | |||
173 | fi | 174 | fi |
174 | 175 | ||
175 | if [ "$var" ] && [ "$val" ]; then | 176 | if [ "$var" ] && [ "$val" ]; then |
177 | scad_var_order+=($var); | ||
176 | SCAD[$var]="$val" | 178 | SCAD[$var]="$val" |
177 | output_params+="-D '$var=$val' " | 179 | output_params+="-D '$var=$val' " |
178 | VALUES+="$(val_to_filename "$val")${val_sep}" | 180 | VALUES+="$(val_to_filename "$val")${val_sep}" |
@@ -182,8 +184,17 @@ main() | |||
182 | strip_multiline_comments |strip_nonassignments |strip_trailing_semicolon) | 184 | strip_multiline_comments |strip_nonassignments |strip_trailing_semicolon) |
183 | 185 | ||
184 | if [ "$PRINT_VARS" ]; then | 186 | if [ "$PRINT_VARS" ]; then |
185 | for k in "${!SCAD[@]}"; do | 187 | for k in "${scad_var_order[@]}"; do |
186 | echo ${k}=${SCAD[$k]} | 188 | # if the value is an OpenSCAD string, it needs to be wrapped in |
189 | # quotes | ||
190 | if [ '"' == "${SCAD[$k]:0:1}" ]; then | ||
191 | line="${k}='${SCAD[$k]}'" | ||
192 | elif [ "'" == "${SCAD[$k]:0:1}" ]; then | ||
193 | line=${k}="\"${SCAD[$k]}\"" | ||
194 | else | ||
195 | line="${k}=${SCAD[$k]}" | ||
196 | fi | ||
197 | echo $line | ||
187 | done | 198 | done |
188 | exit | 199 | exit |
189 | fi | 200 | fi |
@@ -228,3 +239,4 @@ EOF | |||
228 | } | 239 | } |
229 | 240 | ||
230 | main "$@" | 241 | main "$@" |
242 | #parse_options "$@" | ||