#!/bin/bash app_name="netpd" app_version="2.2" app_bundle_name="${app_name}-${app_version}.app" package_version=$(date +%Y-%m-%d) # Pd pd_archive_file=~/Downloads/pd-0.51-0.unsigned.mac.tar.gz # Libraries ext_urls=() ext_urls+=("http://puredata.info/Members/rdz/software/binfile-v0.1~git20151118-(Darwin-i386-32)(Darwin-x86_64-32)-externals.tar.gz") ext_urls+=("https://www.netpd.org/~roman/tmp/else%5bv1.0beta28%5d(Darwin-amd64-32).dek") ext_urls+=("http://puredata.info/Members/musil/software/iemlib/1.22/iemlib%5Bv1.22%5D(Darwin-amd64-32)(Darwin-i386-32)(Linux-amd64-32)(Windows-amd64-32)(Windows-i386-32)(Sources).dek") ext_urls+=("http://puredata.info/Members/zmoelnigbot/software/iemnet/0.2.3/iemnet%5Bv0.2.3%5D(Darwin-amd64-32).dek") ext_urls+=("http://puredata.info/Members/zmoelnig/software/iem/20150529.2247/osc-v0.2-20150529iem-(Darwin-i386-32)(Darwin-x86_64-32)-externals.tar.gz") ext_urls+=("http://puredata.info/Members/rdz/software/slip/0.1~git20151118/slip-v0.1~git20151118-(Darwin-i386-32)(Darwin-x86_64-32)-externals.tar.gz") ext_urls+=("http://puredata.info/Members/zmoelnigbot/software/zexy/2.3.1/zexy%5Bv2.3.1%5D(Darwin-amd64-32)(Linux-amd64-32)(Linux-arm64-32)(Linux-armv7-32)(Linux-i386-32)(Windows-amd64-32)(Windows-i386-32).dek") # netpd bundle netpd_bundle_url="https://www.netpd.org/~roman/netpd-plus-instruments.zip" # workdir work_dir=workdir info_plist_replacements=" s/{DISPLAY_NAME}/${app_name}/ s/{EXECUTBALE}/Pd/ s/{ICON_FILES}/netpd.icns/ s/{BUNDLE_NAME}/${app_name}/ s/{BUNDLE_SHORT_VERSION}/${app_version}_${package_version}/ s/{SPOKEN_NAME}/${app_name}/ s/{BUNDLE_VERSION}/${netpd_version}/ " function fail { echo "abort due some error" exit 1 } # do stuff ( cd "$(dirname "$0")" ( mkdir -p "${work_dir}" cd "${work_dir}" # install pd tar xf "${pd_archive_file}" || fail mv Pd-*.app "${app_bundle_name}" || fail # install externals ( cd ${app_bundle_name}/Contents/Resources/extra for url in ${ext_urls[@]} do curl -s --fail -o file "${url}" || fail if file file | grep ' Zip archive data' > /dev/null then unzip -q file || fail fi if file file | grep 'gzip compressed data' > /dev/null then tar xf file || fail fi rm file || fail done ) || fail # install netpd ( cd ${app_bundle_name}/Contents/Resources curl --fail -s -o file "${netpd_bundle_url}" || fail unzip -q file && rm file || fail ) || fail ) || fail # apply patch to load netpd at start patch -s ${work_dir}/${app_bundle_name}/Contents/Resources/tcl/pd-gui.tcl < files/pd-gui.tcl.patch || fail # copy icons file cp files/netpd.icns ${work_dir}/${app_bundle_name}/Contents/Resources/ || fail # construct a Info.plist sed -f <(echo "${info_plist_replacements}") files/Info.plist > ${work_dir}/${app_bundle_name}/Contents/Info.plist || fail # copy README cp files/README.txt "${work_dir}" || fail # create disk image genisoimage -quiet -V "${app_name}-${app_version}" -D -R -apple -no-pad -o "${app_name}-${app_version}_macos_${package_version}.dmg" "${work_dir}" || fail # put file online scp -q "${app_name}-${app_version}_macos_${package_version}.dmg" "all@netpd.org:public_html/software/" || fail # clean up rm -r "${work_dir}" "${app_name}-${app_version}_macos_${package_version}.dmg" || fail # create short cut ssh all@netpd.org ln -f -s "${app_name}-${app_version}_macos_${package_version}.dmg" "public_html/software/${app_name}-${app_version}_macos.dmg" || fail )