Skip to content

Commit

Permalink
Add Build Script for mac os systems (#76)
Browse files Browse the repository at this point in the history
* chore: add TagStudio.spec to gitignore

Prevent TagStudio.spec to be added to repo in the future

* chore: add Build Script for macos

Create script using pyinstaller to generate a macos app for tagstudio

* chore: revert duplicated files

* chore: rename build file naming
  • Loading branch information
williamtcastro committed May 9, 2024
1 parent f9ea20e commit 8321f43
Show file tree
Hide file tree
Showing 2 changed files with 69 additions and 4 deletions.
4 changes: 0 additions & 4 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -250,8 +250,4 @@ compile_commands.json
# TagStudio
.TagStudio
TagStudio.ini




# End of https://www.toptal.com/developers/gitignore/api/visualstudiocode,python,qt
69 changes: 69 additions & 0 deletions Build_MacOS_app.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,69 @@
#! /usr/bin/env bash
# GETTING BASE DIR
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )

# SETTING UP CONSTANTS
TAGSTUDIO_NAME="TagStudio"
TAGSTUDIO_DIR="$SCRIPT_DIR/tagstudio"
TAGSTUDIO_DIR_RESOURCES="$TAGSTUDIO_DIR/resources"
TAGSTUDIO_ICON="$TAGSTUDIO_DIR/resources/icon.ico"
TAGSTUDIO_SRC="$TAGSTUDIO_DIR/src"
TAGSTUDIO_MAIN="$TAGSTUDIO_DIR/tag_studio.py"
DIST_PATH="$SCRIPT_DIR/dist"
BUILD_PATH="$SCRIPT_DIR/build"
LOGS_PATH="$BUILD_PATH/logs"

printf -- "🏁 Starting Script \n"

# CREATE VENV AND INSTALL REQUIREMENTS
printf -- "🐍 Creating Python virtual env\n"
python3 -m venv .venv
source .venv/bin/activate

if [ ! -d $LOGS_PATH ]; then
printf -- "πŸ“ Creating Logs folder\n"
mkdir -p $LOGS_PATH;
fi

printf -- "πŸ’» Installing Requirements \n"
pip install -r requirements.txt > "$LOGS_PATH/pip.log" 2>&1
pip install PyInstaller > "$LOGS_PATH/pip.log" 2>&1


if [[ "$OSTYPE" == "darwin"* ]]; then
printf -- "🍏 MacOS Detected \n"
SYS_CMD="--windowed"
OS=0
fi

SECONDS=0

# CREATE COMMAND
printf -- "⏳ Building App \n"

COMMAND=$( python -m PyInstaller \
--name "$TAGSTUDIO_NAME" \
--icon "$TAGSTUDIO_ICON" \
--add-data "$TAGSTUDIO_DIR_RESOURCES:./resources" \
--add-data "$TAGSTUDIO_SRC:./src" \
--distpath "$DIST_PATH" \
-p "$TAGSTUDIO_DIR" \
--noconsole \
--workpath "$BUILD_PATH" \
-y "$SYS_CMD" "$TAGSTUDIO_MAIN" \
> "$LOGS_PATH/pyinstaller.log" 2>&1 )

duration=$SECONDS

if $COMMAND; then
printf -- "βœ… Build Successfull \n"
printf -- "βŒ› $((duration)) seconds of build\n"
if [[ "$OS" == 0 ]]; then
printf -- "πŸ“ Opening App folder \n"
open $DIST_PATH
fi
else
printf -- "❌ Error Building the app\nPlease read the logs\navailable at build/logs\n"
fi

printf -- "🏁 END OF TRANSMISSION"

0 comments on commit 8321f43

Please sign in to comment.