#!/usr/bin/env bash eval BRANCH_NAME="" eval HEAD_SHA_BRANCH="" eval DIRECTORY="tmp" eval GNU=false show_help() { echo "Usage: affected-libs.sh" echo "" echo "-b branch name" echo "-gnu for gnu" } gnu_mode() { GNU=true } branch_name(){ BRANCH_NAME=$1 } while [[ $1 == -* ]]; do case "$1" in -b) branch_name $2; shift 2;; -gnu) gnu_mode; shift;; -*) echo "invalid option: $1" 1>&2; show_help; exit 0;; esac done if $GNU; then sedi='-i' else sedi=('-i' '') fi if [[ "$BRANCH_NAME" == "" ]] then echo "The branch name is mandatory" exit 0 fi # tmp folder doesn't exist. if [ ! -d "$DIRECTORY" ]; then #find affected libs echo "Directory tmp created"; mkdir $DIRECTORY; fi HEAD_SHA_BRANCH="$(git merge-base origin/$BRANCH_NAME HEAD)" if [ ! -f $DIRECTORY/deps.txt ]; then npm run affected:libs -- $HEAD_SHA_BRANCH "HEAD" > $DIRECTORY/deps.txt fi #cat $DIRECTORY/deps.txt #echo "extensions" > deps.txt #clean file sed "${sedi[@]}" '/^$/d' ./$DIRECTORY/deps.txt sed "${sedi[@]}" '/alfresco-components/d' ./$DIRECTORY/deps.txt sed "${sedi[@]}" '/nx affected:libs/d' ./$DIRECTORY/deps.txt sed "${sedi[@]}" '/^$/d' ./$DIRECTORY/deps.txt #read result from file while IFS= read -r var do fileLine=$var done < "./$DIRECTORY/deps.txt" #transform string to array libs=(`echo $fileLine | sed 's/^$/\n/g'`) #extensions for i in "${libs[@]}" do if [ "$i" == "extensions" ] ; then AFFECTED_LIBS=$AFFECTED_LIBS" extensions$" fi done #core for i in "${libs[@]}" do if [ "$i" == "core" ] ; then AFFECTED_LIBS="core$ content-services$ process-services$ process-services-cloud$ insights$ extensions$ testing$" echo "${AFFECTED_LIBS}" exit 0 fi done #process-services for i in "${libs[@]}" do if [ "$i" == "process-services" ] ; then AFFECTED_LIBS=$AFFECTED_LIBS" process-services$" fi done #content-services for i in "${libs[@]}" do if [ "$i" == "content-services" ] ; then AFFECTED_LIBS=$AFFECTED_LIBS" content-services$" fi done #insights for i in "${libs[@]}" do if [ "$i" == "insights" ] ; then AFFECTED_LIBS=$AFFECTED_LIBS" insights$" fi done #testing for i in "${libs[@]}" do if [ "$i" == "testing" ] ; then AFFECTED_LIBS=$AFFECTED_LIBS" testing$" fi done #process-services-cloud for i in "${libs[@]}" do if [ "$i" == "process-services-cloud" ] ; then AFFECTED_LIBS=$AFFECTED_LIBS" process-services-cloud$" fi done echo "${AFFECTED_LIBS}"