diff --git a/.bashrc.d/cn-progload.bash b/.bashrc.d/cn-progload.bash index 53d9899..3c78b30 100644 --- a/.bashrc.d/cn-progload.bash +++ b/.bashrc.d/cn-progload.bash @@ -1,7 +1,11 @@ cn-progload() { local addr="$1" - local project="$2" - local ext="${project##*.}" + local project="$2" # /foo/bar/baz.bunk + local ext="${project##*.}" # bunk + local projfname="${project%.*}" # /foo/bar/baz + local projfnamebase="${projfname##*/}" # baz + local zigstash + zigstash="$(mktemp /tmp/$projfnamebase.XXXX.zig)" # Add a zero in front of the 3rd arg local slot="0${3}" # expand only to the last 2 digits of $slot @@ -11,11 +15,11 @@ cn-progload() { case $ext in vtz) - if [[ ! -z $slot ]]; then + if [[ -n $slot ]]; then echo "==NOTICE== Ignoring slot number for touchpanel project..." fi - printf 'put %q' "$project" | cnsftp $addr:display - cnssh $addr projectload + printf 'put %q' "$project" | cnsftp "$addr:display" + cnssh "$addr" projectload ;; lpz) @@ -23,8 +27,16 @@ cn-progload() { echo "==NOTICE== No target program slot defined. Assuming Slot 01..." slot=01 fi - printf 'put %q' "$project" | cnsftp $addr:Program$slot - cnssh $addr progload -p:$slot + # Stop and delete current program in $slot + cnssh "$addr" killprog -P$slot + # Upload + printf 'put %q' "$project" | cnsftp "$addr:Program$slot" + # Load the program + cnssh "$addr" progload -p:$slot + # Zip up the sig file in a temporary location + zip -j - "$projfname.sig" > "$zigstash" + # Upload the zig + printf 'put %q %q' "$zigstash" "$projfnamebase.zig" | cnsftp "$addr:Program$slot" ;; *)