#!/usr/bin/env bash DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )" LANGS_OUTPUT="./i18n" output_folder(){ if [ $1 -eq 0 ]; then echo "No arguments supplied. Default path for output will be used ./i18n" else LANGS_OUTPUT="$1" fi } show_help() { echo "Usage: extract-langs.sh Extract the i18n files from the repo and create a zip" echo "" echo "--output or -o to specify a folder otherwise it will be created in i18n" } while [[ $1 == -* ]]; do case "$1" in -h|--help|-\?) show_help; exit 0;; --output|-o) output_folder $2; shift;; esac done COMPONENTS_ROOT="$DIR/../lib" # Find all directories in $COMPONENTS_ROOT called i18n and add the demo-shell manually COMPONENTS=(`find $COMPONENTS_ROOT -type d -name i18n -not \( -name '*.*' -o -path '**/node_modules*' -o -path '**/bundles*' \)`) COMPONENTS+=("$DIR/../demo-shell/resources/i18n") # Loop the individual components for COMPONENT_DIR in "${COMPONENTS[@]}" do : echo "Processing $COMPONENT_DIR" # Grab *.json in the components i18n dir FILES=(`find $COMPONENT_DIR -type f -name "*.json"`) # Loop each i18n file for i in "${FILES[@]}" do : # Match the filename and extension into two groups so we can use the name as a folder for the output folder if [[ $i =~ /([a-zA-Z0-9_-]*)(\.json)$ ]] ; then TMP=${BASH_REMATCH[1]} # Will contain "en", "it", "ru" etc. without .json LANG=`echo "$TMP" | tr '[:lower:]' '[:upper:]'` # Conver to upper case # Build the output path, ensure it exists then copy the file DEST="$LANGS_OUTPUT/$LANG/${COMPONENT_DIR#${DIR}/../}" echo "Copying $i to $DEST" `mkdir -p $DEST` `cp $i $DEST` fi done done echo "====== Create a zip ======" zip -r ${LANGS_OUTPUT}/i18n.zip ./${LANGS_OUTPUT}/*