AppFlowy/frontend/scripts/white_label/white_label.sh
Lucas a5eb2cdd9a
feat: improve white label scripts on Windows (#7755)
* feat: improve white label scripts on Windows

* feat: add font white label script

* chore: integrate font white label script
2025-04-16 10:15:40 +08:00

142 lines
4.2 KiB
Bash

#!/bin/bash
# Default values
APP_NAME="AppFlowy"
APP_IDENTIFIER="com.appflowy.appflowy"
COMPANY_NAME="AppFlowy Inc."
COPYRIGHT="Copyright © 2025 AppFlowy Inc."
ICON_PATH=""
WINDOWS_ICON_PATH=""
FONT_PATH=""
FONT_FAMILY=""
PLATFORMS=("windows" "linux" "macos" "ios" "android")
show_usage() {
echo "Usage: $0 [options]"
echo "Options:"
echo " --app-name Set the application name"
echo " --app-identifier Set the application identifier"
echo " --company-name Set the company name"
echo " --copyright Set the copyright information"
echo " --icon-path Set the path to the application icon (.svg)"
echo " --windows-icon-path Set the path to the windows application icon (.ico)"
echo " --font-path Set the path to the folder containing font files (.ttf or .otf files)"
echo " --font-family Set the name of the font family"
echo " --platforms Comma-separated list of platforms to white label (windows,linux,macos,ios,android)"
echo " --help Show this help message"
echo ""
echo "Example:"
echo " $0 --app-name \"MyCompany\" --app-identifier \"com.mycompany.mycompany\" \\"
echo " --company-name \"MyCompany Ltd.\" --copyright \"Copyright © 2025 MyCompany Ltd.\" \\"
echo " --platforms \"windows,linux,macos\" \\"
echo " --windows-icon-path \"./assets/icons/mycompany.ico\" \\"
echo " --icon-path \"./assets/icons/\" \\"
echo " --font-path \"./assets/fonts/\" --font-family \"CustomFont\""
}
while [[ $# -gt 0 ]]; do
case $1 in
--app-name)
APP_NAME="$2"
shift 2
;;
--app-identifier)
APP_IDENTIFIER="$2"
shift 2
;;
--company-name)
COMPANY_NAME="$2"
shift 2
;;
--copyright)
COPYRIGHT="$2"
shift 2
;;
--icon-path)
ICON_PATH="$2"
shift 2
;;
--windows-icon-path)
WINDOWS_ICON_PATH="$2"
shift 2
;;
--font-path)
FONT_PATH="$2"
shift 2
;;
--font-family)
FONT_FAMILY="$2"
shift 2
;;
--platforms)
IFS=',' read -ra PLATFORMS <<< "$2"
shift 2
;;
--help)
show_usage
exit 0
;;
*)
echo "Unknown option: $1"
show_usage
exit 1
;;
esac
done
if [ -z "$APP_NAME" ] || [ -z "$APP_IDENTIFIER" ] || [ -z "$COMPANY_NAME" ] || [ -z "$COPYRIGHT" ] || [ -z "$ICON_PATH" ]; then
echo "Error: All parameters are required"
show_usage
exit 1
fi
if [ ! -d "$ICON_PATH" ]; then
echo "Error: Icon directory not found at $ICON_PATH"
exit 1
fi
if [ ! -f "$WINDOWS_ICON_PATH" ]; then
echo "Error: Windows icon file not found at $WINDOWS_ICON_PATH"
exit 1
fi
run_platform_script() {
local platform=$1
local script_path="scripts/white_label/${platform}_white_label.sh"
if [ ! -f "$script_path" ]; then
echo -e "\033[31mWarning: White label script not found for platform: $platform\033[0m"
return
fi
echo -e "\033[32mRunning white label script for $platform...\033[0m"
bash "$script_path" \
--app-name "$APP_NAME" \
--app-identifier "$APP_IDENTIFIER" \
--company-name "$COMPANY_NAME" \
--copyright "$COPYRIGHT" \
--icon-path "$WINDOWS_ICON_PATH"
}
echo -e "\033[32mRunning i18n white label script...\033[0m"
bash "scripts/white_label/i18n_white_label.sh" --company-name "$COMPANY_NAME"
echo -e "\033[32mRunning icon white label script...\033[0m"
bash "scripts/white_label/icon_white_label.sh" --icon-path "$ICON_PATH"
echo -e "\033[32mRunning code white label script...\033[0m"
bash "scripts/white_label/code_white_label.sh" --company-name "$COMPANY_NAME"
# Run font white label script if font parameters are provided
if [ ! -z "$FONT_PATH" ] && [ ! -z "$FONT_FAMILY" ]; then
echo -e "\033[32mRunning font white label script...\033[0m"
bash "scripts/white_label/font_white_label.sh" \
--font-path "$FONT_PATH" \
--font-family "$FONT_FAMILY"
fi
for platform in "${PLATFORMS[@]}"; do
run_platform_script "$platform"
done
echo -e "\033[32mWhite labeling process completed successfully!\033[0m"