#!/bin/bash # validate_site.sh checks if the site.conf is valid json GLUON_BRANCH='v2020.1.x' GLUON_PACKAGES_BRANCH='master' P=$(pwd)/templates/dus echo "####### validating $P/site.conf ..." GLUON_SITEDIR="templates/dus/" lua5.1 templates/dus/tests/tests/site_config.lua echo "####### validating $P/make-release.sh ..." bash -n $P/make-release.sh echo "####### validating $P/modules ..." source $P/modules testpath=/tmp/site-validate rm -Rf $testpath mkdir -p $testpath/packages cd $testpath/packages for feed in $GLUON_SITE_FEEDS; do echo "####### checking PACKAGES_${feed^^}_REPO ..." repo_var=$(echo PACKAGES_${feed^^}_REPO) commit_var=$(echo PACKAGES_${feed^^}_COMMIT) branch_var=$(echo PACKAGES_${feed^^}_BRANCH) repo=${!repo_var} commit=${!commit_var} branch=${!branch_var} if [ "$repo" == "" ]; then echo "repo $repo_var missing" exit 1 fi if [ "$commit" == "" ]; then echo "commit $commit_var missing" exit 1 fi if [ "$branch" == "" ]; then echo "branch $branch_var missing" exit 1 fi echo "'git clone -b $branch --single-branch $repo $feed'" git clone -b "$branch" --single-branch "$repo" $feed if [ "$?" != "0" ]; then exit 1; fi cd $feed echo "git checkout $commit" git checkout "$commit" if [ "$?" != "0" ]; then exit 1; fi cd - done echo "####### downloading github.com/freifunk-gluon/packages ..." git clone -b $GLUON_PACKAGES_BRANCH --single-branch https://github.com/freifunk-gluon/packages echo "####### downloading github.com/freifunk-gluon/gluon ..." cd $testpath git init gluon cd gluon git remote add origin https://github.com/freifunk-gluon/gluon git config core.sparsecheckout true echo "package/*" >> .git/info/sparse-checkout git pull --depth=1 origin $GLUON_BRANCH cp -a package/ $testpath/packages cd $testpath/packages/package echo "####### validating GLUON_SITE_PACKAGES from $P/site.mk ..." # ignore non-gluon packages and standard gluon features sed '/GLUON_RELEASE/,$d' $P/site.mk | egrep -v '(#|G|iwinfo|iptables|haveged|vim|socat|mesh-batman-adv-1[45]|web-advanced|web-wizard)'> $testpath/site.mk.sh sed -i 's/\s\\$//g;/^$/d' $testpath/site.mk.sh sed -i 's/gluon-mesh-batman-adv-1[45]/gluon-mesh-batman-adv/g' $testpath/site.mk.sh cat $testpath/site.mk.sh | while read packet; do if [ "$packet" != "" ]; then echo -n "# $packet" FOUND="$(find $testpath/packages/ -type d -name "$packet")" if [ "$FOUND" '!=' '' ]; then echo " found as feature in $(echo $FOUND|sed 's|'$testpath'/packages||g')" else # check again with prefix gluon- FOUND="$(find $testpath/packages/ -type d -name "gluon-$packet")" if [ "$FOUND" '!=' '' ]; then echo " found in $(echo $FOUND|sed 's|'$testpath'/packages||g')" else echo echo "ERROR: $packet missing" exit 1 fi fi fi done