From b0d9430931276cb4d672981b1e9ed1f3750a5fd2 Mon Sep 17 00:00:00 2001 From: unknown Date: Wed, 12 Nov 2025 08:21:21 -0800 Subject: [PATCH] ... --- ebook2audiobook.sh | 111 ++++++++++++++++++++------------------------- 1 file changed, 48 insertions(+), 63 deletions(-) diff --git a/ebook2audiobook.sh b/ebook2audiobook.sh index d1d2b0ae..d962b74e 100755 --- a/ebook2audiobook.sh +++ b/ebook2audiobook.sh @@ -12,7 +12,7 @@ PYTHON_VERSION=$(python3 -c 'import sys; print(f"{sys.version_info.major}.{sys.v MIN_PYTHON_VERSION="3.10" MAX_PYTHON_VERSION="3.13" -export APP_ROOT="$(cd "$(dirname "$(realpath "${BASH_SOURCE[0]:-$0}")")" && pwd)" +esport APP_ROOT="$(cd "$(dirname "$(realpath "${BASH_SOURCE[0]:-$0}")")" && pwd)" export PYTHONUTF8="1" export PYTHONIOENCODING="utf-8" @@ -411,81 +411,66 @@ else local RESOURCES="$CONTENTS/Resources" local ICON_PATH="$APP_ROOT/tools/icons/mac/appIcon.icns" - if [[ " ${ARGS[*]} " == *" --headless "* || -d "$APP_BUNDLE" ]]; then - return 0 - fi + [[ -d "$HOME/Applications" ]] || mkdir -p "$HOME/Applications" + mkdir -p "$MACOS" "$RESOURCES" - [[ -d "$HOME/Applications" ]] || mkdir "$HOME/Applications" - - if [[ ! -d "$MACOS" || ! -d "$RESOURCES" ]]; then - mkdir -p "$MACOS" "$RESOURCES" - fi + # Escape APP_ROOT safely for AppleScript + local ESCAPED_APP_ROOT + ESCAPED_APP_ROOT=$(printf '%q' "$APP_ROOT") cat > "$MACOS/$APP_NAME" << EOF -#!/bin/zsh + #!/bin/zsh -( - host=127.0.0.1 - port=7860 - url="http://\$host:\$port/" - timeout=30 - start_time=\$(date +%s) + ( + host=127.0.0.1 + port=7860 + url="http://\$host:\$port/" + timeout=30 + start_time=\$(date +%s) - while ! (echo >"/dev/tcp/\$host/\$port") >/dev/null 2>&1; do - sleep 1 - elapsed=\$(( \$(date +%s) - \$start_time )) - if [ "\$elapsed" -ge "\$timeout" ]; then - echo "Timeout after \${timeout}s: \${url} not responding" - exit 1 - fi - done + while ! (echo >"/dev/tcp/\$host/\$port") >/dev/null 2>&1; do + sleep 1 + elapsed=\$(( \$(date +%s) - \$start_time )) + if [ "\$elapsed" -ge "\$timeout" ]; then + echo "Timeout after \${timeout}s: \${url} not responding" + exit 1 + fi + done - open "\$url" -) & + open "\$url" + ) & -osascript -e ' -tell application "Terminal" - do script "cd \"$(dirname "$APP_ROOT")\" && ./ebook2audiobook.sh" - activate -end tell -' -EOF + osascript -e ' + tell application "Terminal" + do script "cd ${ESCAPED_APP_ROOT} && ./ebook2audiobook.sh" + activate + end tell + ' + EOF chmod +x "$MACOS/$APP_NAME" cp "$ICON_PATH" "$RESOURCES/AppIcon.icns" cat > "$CONTENTS/Info.plist" << 'PLIST' - - - - - CFBundleDevelopmentRegion - en - CFBundleExecutable - ebook2audiobook - CFBundleIdentifier - com.local.ebook2audiobook - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - ebook2audiobook - CFBundlePackageType - APPL - CFBundleShortVersionString - 1.0 - CFBundleVersion - 1 - LSMinimumSystemVersion - 10.9 - NSPrincipalClass - NSApplication - CFBundleIconFile - AppIcon - - -PLIST + + + + + CFBundleExecutable + ebook2audiobook + CFBundleIdentifier + com.local.ebook2audiobook + CFBundleName + ebook2audiobook + CFBundlePackageType + APPL + CFBundleIconFile + AppIcon + + + PLIST - echo -e "\nE2A Launcher created at: $APP_BUNDLE\nNext time you just need to click on the launcher\nto run Ebook2Audiobook and open the browser automatically.\n" + echo -e "\nE2A Launcher created at: $APP_BUNDLE\nDouble-click to run Ebook2Audiobook.\n" } function linux_app {