Optimize app bundle creation and icon generation
This commit is contained in:
parent
d8bc103351
commit
db9a19e74d
|
@ -1,10 +1,13 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
|
|
||||||
|
# Define bundle ID
|
||||||
|
BUNDLE_ID="com.github.qarmin.czkawka"
|
||||||
|
|
||||||
# Get the directory of the current script (works even if the script is called from another location)
|
# Get the directory of the current script (works even if the script is called from another location)
|
||||||
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
DIR="$(dirname "$0")"
|
||||||
PARENT_DIR="$(dirname "$DIR")"
|
PARENT_DIR="$(dirname "$DIR")"
|
||||||
BUNDLE_NAME="Czkawka.app"
|
BUNDLE_NAME="Czkawka.app"
|
||||||
# Simplify the bundle path using cd and pwd
|
BUNDLE_PATH="$PARENT_DIR/target/release/$BUNDLE_NAME"
|
||||||
BUNDLE_PATH=$(cd "$DIR/../target/release" && pwd)/$BUNDLE_NAME
|
|
||||||
|
|
||||||
BINARY_NAME="czkawka_gui"
|
BINARY_NAME="czkawka_gui"
|
||||||
# Extract version from Cargo.toml
|
# Extract version from Cargo.toml
|
||||||
|
@ -20,12 +23,30 @@ mkdir -p "$BUNDLE_PATH/Contents/Resources"
|
||||||
# Step 3: Copy the binary
|
# Step 3: Copy the binary
|
||||||
cp "$PARENT_DIR/target/release/$BINARY_NAME" "$BUNDLE_PATH/Contents/MacOS/"
|
cp "$PARENT_DIR/target/release/$BINARY_NAME" "$BUNDLE_PATH/Contents/MacOS/"
|
||||||
|
|
||||||
# Step 4: Create and copy the icon and rename as .icns (macOS icon format)
|
# Step 4: Generate the icon from SVG and copy it to the bundle
|
||||||
# Assuming the icon file is named correctly and located in the correct directory
|
SVG_PATH="$PARENT_DIR/data/icons/${BUNDLE_ID}.svg"
|
||||||
|
ICONSET_DIR="${PARENT_DIR}/data/icons/${BUNDLE_ID}.iconset"
|
||||||
|
|
||||||
|
# Create iconset directory
|
||||||
|
mkdir -p "$ICONSET_DIR"
|
||||||
|
|
||||||
ICON_NAME="com.github.qarmin.czkawka.icns"
|
# Generate icon sizes and populate the iconset
|
||||||
cp "$PARENT_DIR/data/icons/$ICON_NAME" "$BUNDLE_PATH/Contents/Resources/"
|
ICON_SIZES="16 32 64 128 256 512"
|
||||||
|
SRC_ICON="$SVG_PATH"
|
||||||
|
|
||||||
|
for SIZE in $ICON_SIZES; do
|
||||||
|
rsvg-convert -w $SIZE -h $SIZE $SRC_ICON -o "${ICONSET_DIR}/icon_${SIZE}x${SIZE}.png"
|
||||||
|
if [ $SIZE -ne 512 ]; then
|
||||||
|
SIZE_2X=$((SIZE*2))
|
||||||
|
rsvg-convert -w $SIZE_2X -h $SIZE_2X $SRC_ICON -o "${ICONSET_DIR}/icon_${SIZE}x${SIZE}@2x.png"
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
|
||||||
|
# Convert the iconset to an icns file
|
||||||
|
iconutil -c icns "$ICONSET_DIR" -o "$BUNDLE_PATH/Contents/Resources/${BUNDLE_ID}.icns"
|
||||||
|
|
||||||
|
# Clean up the iconset directory
|
||||||
|
rm -rf "$ICONSET_DIR"
|
||||||
|
|
||||||
# Step 5: Create the Info.plist file
|
# Step 5: Create the Info.plist file
|
||||||
cat <<EOF >"$BUNDLE_PATH/Contents/Info.plist"
|
cat <<EOF >"$BUNDLE_PATH/Contents/Info.plist"
|
||||||
|
@ -36,9 +57,9 @@ cat <<EOF >"$BUNDLE_PATH/Contents/Info.plist"
|
||||||
<key>CFBundleExecutable</key>
|
<key>CFBundleExecutable</key>
|
||||||
<string>$BINARY_NAME</string>
|
<string>$BINARY_NAME</string>
|
||||||
<key>CFBundleIconFile</key>
|
<key>CFBundleIconFile</key>
|
||||||
<string>com.github.qarmin.czkawka</string>
|
<string>${BUNDLE_ID}</string>
|
||||||
<key>CFBundleIdentifier</key>
|
<key>CFBundleIdentifier</key>
|
||||||
<string>com.github.qarmin.czkawka</string>
|
<string>${BUNDLE_ID}</string>
|
||||||
<key>CFBundleName</key>
|
<key>CFBundleName</key>
|
||||||
<string>Czkawka</string>
|
<string>Czkawka</string>
|
||||||
<key>CFBundleVersion</key>
|
<key>CFBundleVersion</key>
|
||||||
|
|
Loading…
Reference in a new issue