diff --git a/build.sh b/build.sh new file mode 100755 index 0000000..0363578 --- /dev/null +++ b/build.sh @@ -0,0 +1,99 @@ +#!/usr/bin/env bash + +ERR=0 + +echo "$(tput bold)$(tput setaf 2)==>$(tput sgr0) $(tput bold)PRE-RUN CHECKS$(tput sgr0)" + +for CMD in node npm nativefier; do + OUT=$(command -V ${CMD} 2> /dev/null) + [ -n $"${OUT}" ] && echo " -> $(tput bold)${OUT}$(tput sgr0)" || { echo "$(tput bold)$(tput setaf 5)${CMD} not found$(tput sgr0)"; ERR=1; } +done + +TRGT=(linux) + +if command -V wine &> /dev/null; then + echo " -> $(tput bold)$(command -V wine)$(tput sgr0)...adding 'windows' to targets" + TRGT+=(win32) +else + echo " -> $(tput bold)$(tput setaf 5)wine not found$(tput sgr0)...not adding 'windows' to targets" +fi + +TRGT+=(darwin mas) + + +[ ${ERR} -ne 0 ] && echo "$(tput bold)$(tput setaf 4)==>$(tput sgr0) $(tput bold)$(tput setaf 5)ABORTING$(tput sgr0)" && exit ${ERR} + +SRC="$(readlink -f "${BASH_SOURCE[0]//*\//}")" +FQP="${SRC%\/*}" + +APP="${1}" +EUF="${FQP}/urls/${APP}.url" + +[ -e "${EUF}" ] || { echo "${EUF} not found"; exit 2; } +[ -L "${EUF}" ] && EUF="$(readlink -f "${EUF}")" +[ -f "${EUF}" ] || { echo "${EUF} not a file"; exit 2; } + +for PLAT in "${TRGT[@]}"; do + for ARCH in ia32 x64 armv7l; do + [ "${PLAT}" = "win32" -a "${ARCH}" = "armv7l" ] && continue + [ "${PLAT}" = "darwin" -a "${ARCH}" != "x64" ] && continue + [ "${PLAT}" = "mas" -a "${ARCH}" != "x64" ] && continue + echo "$(tput bold)$(tput setaf 2)==>$(tput sgr0) $(tput bold)${APP}-${PLAT}-${ARCH}$(tput sgr0)" + + URL="$(< "${EUF}")" + + mkdir -pv "${FQP}/${APP}" + + EXE=(nativefier --platform "${PLAT}" --arch ${ARCH} --honest --disable-context-menu --disable-dev-tools --name "${APP}") + + case "${PLAT}" in + linux|win32) + EIF="${FQP}/icons/${APP}.png" + [ -L "${EIF}" ] && EIF="$(readlink -f "${EIF}")" + [ -f "${EIF}" ] && EXE+=(--icon "${EIF}") + ;; + darwin|mas) + EIF="${FQP}/icons/${APP}.icns" + [ -L "${EIF}" ] && EIF="$(readlink -f "${EIF}")" + [ -f "${EIF}" ] && EXE+=(--icon "${EIF}") + ;; + esac + + EIF="${FQP}/injects/${APP}.css" + [ -L "${EIF}" ] && EIF="$(readlink -f "${EIF}")" + [ -f "${EIF}" ] && EXE+=(--inject "${EIF}") + + EIF="${FQP}/injects/${APP}.js" + [ -L "${EIF}" ] && EIF="$(readlink -f "${EIF}")" + [ -f "${EIF}" ] && EXE+=(--inject "${EIF}") + + EXE+=("${URL}") + + cd "${FQP}/${APP}" + echo "${EXE[@]}" + ${EXE[@]} + + case "${PLAT}" in + linux) + CPF="${FQP}/desktops/${APP}.desktop" + [ -L "${CPF}" ] && CPF="$(readlink -f "${EIF}")" + [ -f "${CPF}" ] && cp -v "${CPF}" "${FQP}/${APP}/${APP}-${PLAT}-${ARCH}/" + CPF="${FQP}/injects/${APP}.png" + [ -L "${CPF}" ] && CPF="$(readlink -f "${EIF}")" + [ -f "${CPF}" ] && cp -v "${CPF}" "${FQP}/${APP}/${APP}-${PLAT}-${ARCH}/" + ;; + win32) + CPF="${FQP}/injects/${APP}.png" + [ -L "${CPF}" ] && CPF="$(readlink -f "${EIF}")" + [ -f "${CPF}" ] && cp -v "${CPF}" "${FQP}/${APP}/${APP}-${PLAT}-${ARCH}/" + ;; + darwin|mas) + CPF="${FQP}/injects/${APP}.icns" + [ -L "${CPF}" ] && CPF="$(readlink -f "${EIF}")" + [ -f "${CPF}" ] && cp -v "${CPF}" "${FQP}/${APP}/${APP}-${PLAT}-${ARCH}/" + ;; + esac + done +done + +echo "$(tput bold)$(tput setaf 2)==>$(tput sgr0) $(tput bold)FINISHED$(tput sgr0)"