13c4749c4a
- Move .markdownlint.yaml to correct location (.github/) - Update ensure-deps.sh for pezframe rebrand (frame -> pezframe) - Remove duplicate dependencies in vendor crates: - pezkuwi-subxt-core: remove hex from dev-dependencies - zombienet-orchestrator: remove async-trait from dev-dependencies
79 lines
1.6 KiB
Bash
Executable File
79 lines
1.6 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# The script is meant to check if the rules regarding packages
|
|
# dependencies are satisfied.
|
|
# The general format is:
|
|
# [top-lvl-dir] MESSAGE/[other-top-dir]
|
|
|
|
# For instance no crate within `./client` directory
|
|
# is allowed to import any crate with a directory path containing `frame`.
|
|
# Such rule is just: `client crates must not depend on anything in /frame`.
|
|
|
|
# The script should be run from the main repo directory!
|
|
|
|
set -u
|
|
|
|
# HARD FAILING
|
|
MUST_NOT=(
|
|
"client crates must not depend on anything in /pezframe"
|
|
"pezframe crates must not depend on anything in /client"
|
|
"primitives crates must not depend on anything in /pezframe"
|
|
)
|
|
|
|
# ONLY DISPLAYED, script still succeeds
|
|
PLEASE_DONT=(
|
|
"primitives crates should not depend on anything in /client"
|
|
)
|
|
|
|
VIOLATIONS=()
|
|
PACKAGES=()
|
|
|
|
function check_rule() {
|
|
rule=$1
|
|
from=$(echo $rule | cut -f1 -d\ )
|
|
to=$(echo $rule | cut -f2 -d\/)
|
|
|
|
cd $from
|
|
echo "Checking rule '$rule'"
|
|
packages=$(find -name Cargo.toml | xargs grep -wn "path.*\.\.\/$to")
|
|
has_references=$(echo -n $packages | wc -c)
|
|
if [ "$has_references" != "0" ]; then
|
|
VIOLATIONS+=("$rule")
|
|
# Find packages that violate:
|
|
PACKAGES+=("$packages")
|
|
fi
|
|
cd - > /dev/null
|
|
}
|
|
|
|
for rule in "${MUST_NOT[@]}"
|
|
do
|
|
check_rule "$rule";
|
|
done
|
|
|
|
# Only the MUST NOT will be counted towards failure
|
|
HARD_VIOLATIONS=${#VIOLATIONS[@]}
|
|
|
|
|
|
for rule in "${PLEASE_DONT[@]}"
|
|
do
|
|
check_rule "$rule";
|
|
done
|
|
|
|
# Display violations and fail
|
|
I=0
|
|
for v in "${VIOLATIONS[@]}"
|
|
do
|
|
cat << EOF
|
|
|
|
===========================================
|
|
======= Violation of rule: $v
|
|
===========================================
|
|
${PACKAGES[$I]}
|
|
|
|
|
|
EOF
|
|
I=$I+1
|
|
done
|
|
|
|
exit $HARD_VIOLATIONS
|