#!/usr/bin/env bash # vim:ts=4:sts=4:sw=4:et # # Author: Hari Sekhon # Date: 2019-10-10 16:01:58 +0100 (Thu, 10 Oct 2019) # # https://github.com/harisekhon/bash-tools # # License: see accompanying Hari Sekhon LICENSE file # # If you're using my code you're welcome to connect with me on LinkedIn and optionally send me feedback to help improve or steer this or other code I publish # # https://www.linkedin.com/in/harisekhon # # Creates PyInstaller self-contained bundles of all python files given as args or all python files in the current and first subdirectory (to avoid creating bundles of libraries) set -u [ -n "${DEBUG:-}" ] && set -x srcdir="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" # shellcheck source=lib/utils.sh . "$srcdir/lib/utils.sh" filelist="$(find "${1:-.}" -maxdepth 2 -type f -iname '*.py')" if [ -z "$filelist" ]; then echo "no Python" echo echo "usage: ${0##*/} " echo return 0 &>/dev/null || : exit 0 fi section "Compiling and bundling Python code using PyInstaller" start_time="$(start_timer)" opts="${PYINSTALLER_OPTS:-}" opts="$opts -y" if [ -d pylib ]; then opts="$opts --paths pylib" if [ -d pylib/resources ]; then for filename in pylib/resources/*; do opts="$opts --add-data $filename:resources" done fi fi for filename in $filelist; do type isExcluded &>/dev/null && isExcluded "$filename" && continue echo "compiling $filename => dist/$filename" # want opt expansion # shellcheck disable=SC2086 pyinstaller $opts "$filename" echo done time_taken "$start_time" section2 "Finished PyInstaller compilation" echo