#!/bin/sh # Description: # Creates archive with source code of multiple repositories. # # Parameters: # $1 - github repository name without suffix (project name). # $2, $3, ..., $n - repository suffixes (platforms). # # Optional environment variables: # GIT_BRANCH - branch to use. Default - master. # # Example of usage: # export_src.sh TestProject ios android backend # GIT_BRANCH="develop" ./export_src.sh TestProject ios web # if [ -z "${GIT_BRANCH}" ]; then GIT_BRANCH="master" fi LAST_COMMIT_DATE="" PROJECT_NAME=$1 SRC_FOLDER_NAME="${PROJECT_NAME}-src" SRC_DIR="./${SRC_FOLDER_NAME}" COMMAND_LINE_ARGUMENTS=$@ clone_platform() { PROJECT_NAME=$1 PLATFORM=$2 if git clone --recurse-submodules -j8 "git@gitlab.ti:touchinstinct/${PROJECT_NAME}-${PLATFORM}.git" --branch "${GIT_BRANCH}"; then cd ${PROJECT_NAME}-${PLATFORM} COMMIT_DATE=`git log -1 --pretty='format:%cd' --date=format:'%Y-%m-%d'` if [[ $LAST_COMMIT_DATE < $COMMIT_DATE ]]; then LAST_COMMIT_DATE="${COMMIT_DATE}" fi cd .. else exit 1 fi } mkdir -p "${SRC_DIR}" cd "${SRC_DIR}" for argument in ${COMMAND_LINE_ARGUMENTS} do if [ $argument != $PROJECT_NAME ]; then platform=${argument} # all arguments after project name treated as platforms clone_platform ${PROJECT_NAME} ${platform} fi done ERR_PATHS=$(find . -name "*[<>:\\|?*]*" | xargs -I %s echo "- %s") if [ "$ERR_PATHS" ]; then echo "Export aborted! Invalid characters found in file or directories name(s):\n$ERR_PATHS" exit 1 fi if [ -z "${EXPORT_DATE}" ]; then EXPORT_DATE="${LAST_COMMIT_DATE}" fi find . -name ".git*" -print0 | xargs -0 rm -rf zip -r -q "${SRC_FOLDER_NAME}-${EXPORT_DATE}".zip . open .