114 lines
2.7 KiB
Bash
Executable File
114 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
function itemInModules() {
|
|
local e
|
|
for e in ${MODULES}; do
|
|
if [[ "$e" == "$ITEM" ]]; then
|
|
echo "1"
|
|
return 0
|
|
fi
|
|
done
|
|
echo "0"
|
|
}
|
|
function addItem() {
|
|
if [ "$MODULES" == "" ]; then
|
|
echo "$1"
|
|
else
|
|
echo "$MODULES $1"
|
|
fi
|
|
}
|
|
MODIFIED="$*"
|
|
FUNCTIONS=$(jq -c '.functions | .[]' matrix.json | sed 's/\"//g')
|
|
CONSUMERS=$(jq -c '.consumers | .[]' matrix.json | sed 's/\"//g')
|
|
SUPPLIERS=$(jq -c '.suppliers | .[]' matrix.json | sed 's/\"//g')
|
|
PROCESSORS=$(jq -c '.processors | .[]' matrix.json | sed 's/\"//g')
|
|
SINKS=$(jq -c '.sinks | .[]' matrix.json | sed 's/\"//g')
|
|
SOURCES=$(jq -c '.sources | .[]' matrix.json | sed 's/\"//g')
|
|
MODULES=
|
|
for file in $MODIFIED; do
|
|
FILE=$(realpath $file)
|
|
echo "$file was changed"
|
|
for app in $FUNCTIONS; do
|
|
ITEM="functions/function/$app"
|
|
echo "Checking:$ITEM"
|
|
if [[ "$file" == *"$ITEM"* ]]; then
|
|
echo "Matched $ITEM"
|
|
HAS_ITEM=$(itemInModules)
|
|
if ((HAS_ITEM == 0)); then
|
|
echo "Add:$ITEM"
|
|
MODULES=$(addItem "$ITEM")
|
|
fi
|
|
fi
|
|
done
|
|
for app in $CONSUMERS; do
|
|
ITEM="functions/consumer/$app"
|
|
echo "Checking:$ITEM"
|
|
if [[ "$file" == *"$ITEM"* ]]; then
|
|
echo "Matched $ITEM"
|
|
HAS_ITEM=$(itemInModules)
|
|
if ((HAS_ITEM == 0)); then
|
|
echo "Add:$ITEM"
|
|
MODULES=$(addItem "$ITEM")
|
|
fi
|
|
fi
|
|
done
|
|
for app in $SUPPLIERS; do
|
|
ITEM="functions/supplier/$app"
|
|
echo "Checking:$ITEM"
|
|
if [[ "$file" == *"$ITEM"* ]]; then
|
|
echo "Matched $ITEM"
|
|
HAS_ITEM=$(itemInModules)
|
|
if ((HAS_ITEM == 0)); then
|
|
echo "Add:$ITEM"
|
|
MODULES=$(addItem "$ITEM")
|
|
fi
|
|
fi
|
|
done
|
|
for app in $PROCESSORS; do
|
|
ITEM="application/processor/$app"
|
|
echo "Checking:$ITEM"
|
|
if [[ "$file" == *"$ITEM"* ]]; then
|
|
echo "Matched $ITEM"
|
|
HAS_ITEM=$(itemInModules)
|
|
if ((HAS_ITEM == 0)); then
|
|
echo "Add:$ITEM"
|
|
MODULES=$(addItem "$ITEM")
|
|
fi
|
|
fi
|
|
done
|
|
for app in $SINKS; do
|
|
ITEM="application/sink/$app"
|
|
echo "Checking:$ITEM"
|
|
if [[ "$file" == *"$ITEM"* ]]; then
|
|
echo "Matched $ITEM"
|
|
HAS_ITEM=$(itemInModules)
|
|
if ((HAS_ITEM == 0)); then
|
|
echo "Add:$ITEM"
|
|
MODULES=$(addItem "$ITEM")
|
|
fi
|
|
fi
|
|
done
|
|
for app in $SOURCES; do
|
|
ITEM="application/source/$app"
|
|
echo "Checking:$ITEM"
|
|
if [[ "$file" == *"$ITEM"* ]]; then
|
|
echo "Matched $ITEM"
|
|
HAS_ITEM=$(itemInModules)
|
|
if ((HAS_ITEM == 0)); then
|
|
echo "Add:$ITEM"
|
|
MODULES=$(addItem "$ITEM")
|
|
fi
|
|
fi
|
|
done
|
|
done
|
|
echo "[" >modules.json
|
|
COUNT=0
|
|
for module in $MODULES; do
|
|
if ((COUNT > 0)); then
|
|
echo "," >> modules.json
|
|
fi
|
|
COUNT=$((COUNT + 1))
|
|
echo "\"$module\"" >> modules.json
|
|
done
|
|
echo "]" >>modules.json
|
|
|