summaryrefslogtreecommitdiff
path: root/shopenscad.sh
diff options
context:
space:
mode:
Diffstat (limited to 'shopenscad.sh')
-rwxr-xr-xshopenscad.sh16
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
230main "$@" 241main "$@"
242#parse_options "$@"