mirror of
https://github.com/AppFlowy-IO/AppFlowy.git
synced 2025-04-24 14:47:13 -04:00
103 lines
3.3 KiB
Bash
103 lines
3.3 KiB
Bash
#!/bin/bash
|
|
|
|
show_usage() {
|
|
echo "Usage: $0 [options]"
|
|
echo "Options:"
|
|
echo " --company-name Set the custom company name"
|
|
echo " --help Show this help message"
|
|
echo ""
|
|
echo "Example:"
|
|
echo " $0 --company-name \"MyCompany Ltd.\""
|
|
}
|
|
|
|
CUSTOM_COMPANY_NAME=""
|
|
I18N_DIR="resources/translations"
|
|
|
|
while [[ $# -gt 0 ]]; do
|
|
case $1 in
|
|
--company-name)
|
|
CUSTOM_COMPANY_NAME="$2"
|
|
shift 2
|
|
;;
|
|
--help)
|
|
show_usage
|
|
exit 0
|
|
;;
|
|
*)
|
|
echo "Unknown option: $1"
|
|
show_usage
|
|
exit 1
|
|
;;
|
|
esac
|
|
done
|
|
|
|
if [ -z "$CUSTOM_COMPANY_NAME" ]; then
|
|
echo "Error: Company name is required"
|
|
show_usage
|
|
exit 1
|
|
fi
|
|
|
|
if [ ! -d "$I18N_DIR" ]; then
|
|
echo "Error: Translation directory not found at $I18N_DIR"
|
|
exit 1
|
|
fi
|
|
|
|
echo "Replacing 'AppFlowy' with '$CUSTOM_COMPANY_NAME' in translation files..."
|
|
|
|
if sed --version >/dev/null 2>&1; then
|
|
SED_INPLACE="-i"
|
|
else
|
|
SED_INPLACE="-i ''"
|
|
fi
|
|
|
|
echo "Processing translation files..."
|
|
if [[ "$OSTYPE" == "msys" || "$OSTYPE" == "cygwin" ]]; then
|
|
# Check if directory exists and has JSON files
|
|
if [ ! -d "$I18N_DIR" ] || [ -z "$(ls -A "$I18N_DIR"/*.json 2>/dev/null)" ]; then
|
|
echo "Error: No JSON files found in $I18N_DIR directory"
|
|
exit 1
|
|
fi
|
|
|
|
# Process each JSON file in the directory
|
|
for file in "$I18N_DIR"/*.json; do
|
|
echo "Updating $(basename "$file")"
|
|
# Use jq to replace AppFlowy with custom company name in values only
|
|
if command -v jq >/dev/null 2>&1; then
|
|
# Create a temporary file for the transformation
|
|
jq --arg company "$CUSTOM_COMPANY_NAME" 'walk(if type == "string" then gsub("AppFlowy"; $company) else . end)' "$file" > "${file}.tmp"
|
|
# Check if transformation was successful
|
|
if [ $? -eq 0 ]; then
|
|
mv "${file}.tmp" "$file"
|
|
else
|
|
echo "Error: Failed to process $file with jq"
|
|
rm -f "${file}.tmp"
|
|
exit 1
|
|
fi
|
|
else
|
|
# Fallback to sed if jq is not available
|
|
# First, escape any special characters in the company name
|
|
ESCAPED_COMPANY_NAME=$(echo "$CUSTOM_COMPANY_NAME" | sed 's/[\/&]/\\&/g')
|
|
# Replace AppFlowy with the custom company name in JSON values
|
|
sed $SED_INPLACE 's/\(".*"\): *"\(.*\)AppFlowy\(.*\)"/\1: "\2'"$ESCAPED_COMPANY_NAME"'\3"/g' "$file"
|
|
if [ $? -ne 0 ]; then
|
|
echo "Error: Failed to process $file with sed"
|
|
exit 1
|
|
fi
|
|
fi
|
|
done
|
|
else
|
|
for file in $(find "$I18N_DIR" -name "*.json" -type f); do
|
|
echo "Updating $(basename "$file")"
|
|
# Use jq to only replace values, not keys
|
|
if command -v jq >/dev/null 2>&1; then
|
|
jq 'walk(if type == "string" then gsub("AppFlowy"; "'"$CUSTOM_COMPANY_NAME"'") else . end)' "$file" > "$file.tmp" && mv "$file.tmp" "$file"
|
|
else
|
|
# Fallback to sed with a more specific pattern that targets values but not keys
|
|
sed $SED_INPLACE 's/: *"[^"]*AppFlowy[^"]*"/: "&"/g; s/: *"&"/: "'"$CUSTOM_COMPANY_NAME"'"/g' "$file"
|
|
# Fix any double colons that might have been introduced
|
|
sed $SED_INPLACE 's/: *: */: /g' "$file"
|
|
fi
|
|
done
|
|
fi
|
|
|
|
echo "Replacement complete!"
|