Skip to content
Snippets Groups Projects
Select Git revision
  • 26a0cbd1ccbcde080d63d9d0334438f6025b353d
  • experimental
  • master
  • v2021.1.2-ffs
  • v2021.1.1-ffs
  • nrb/gluon-master-cpe510
  • v2021.1-ffs
  • v2020.2.3-ffs
  • nrbffs/fastd-remove-delay
  • v2020.2.2-ffs
  • v2020.2.1-ffs
  • v2020.2-ffs
  • v2020.2.x
  • v2020.1.3-ffs
  • v2020.1.1-ffs
  • v2020.1-ffs
  • v2019.1.2-ffs
  • v2019.1.1-ffs
  • nrb/test-radv-filter
  • v2019.1-ffs
  • nrbffs/netgear-ex6120
  • v2021.1.2-ffs0.2
  • v2021.1.2-ffs0.1
  • v2021.1.1-ffs0.4
  • v2021.1.1-ffs0.3
  • v2021.1.1-ffs0.2
  • v2021.1.1-ffs0.1
  • v2021.1-ffs0.1
  • v2020.2.3-ffs0.3
  • v2020.2.3-ffs0.2
  • v2020.2.3-ffs0.1
  • v2020.2.2-ffs0.1
  • v2020.2.1-ffs0.1
  • v2020.2-ffs0.1
  • v2020.2
  • v2020.2.x-ffs0.1
  • v2020.1.3-ffs0.1
  • v2020.1.1-ffs0.1
  • v2020.1-ffs0.1
  • v2019.1.2-ffs0.1
  • v2019.1.1-ffs0.1
41 results

helper.js

Blame
  • Forked from firmware / FFS Gluon
    Source project has a limited visibility.
    update-modules.sh 1.95 KiB
    #!/usr/bin/env bash
    # shellcheck enable=check-unassigned-uppercase
    
    set -eo pipefail
    
    # move to basedir, in case the script is not executed via `make update-modules`
    cd "$(dirname "$0")/.." || exit 1
    
    # shellcheck source=./modules
    source ./modules
    
    git diff --quiet ./modules || {
    	1>&2 echo "Your modules file is dirty, aborting."
    	exit 1
    }
    
    LOCAL_BRANCH=$(git branch --show-current)
    [[ $LOCAL_BRANCH != *-updates ]] && LOCAL_BRANCH+=-updates
    
    for MODULE in "OPENWRT" ${GLUON_FEEDS}; do
    	if [[ $MODULE != "OPENWRT" ]]; then
    		MODULE=PACKAGES_${MODULE^^}
    	fi
    
    	_REMOTE_URL=${MODULE}_REPO
    	_REMOTE_BRANCH=${MODULE}_BRANCH
    	_LOCAL_HEAD=${MODULE}_COMMIT
    
    	REMOTE_URL="${!_REMOTE_URL}"
    	REMOTE_BRANCH="${!_REMOTE_BRANCH}"
    	LOCAL_HEAD="${!_LOCAL_HEAD}"
    
    	# get default branch name if none is set
    	[ -z "${REMOTE_BRANCH}" ] && {
    		REMOTE_BRANCH=$(git ls-remote --symref "${REMOTE_URL}" HEAD | awk '/^ref:/ { sub(/refs\/heads\//, "", $2); print $2 }')
    	}
    
    	# fetch the commit id for the HEAD of the module
    	REMOTE_HEAD=$(git ls-remote "${REMOTE_URL}" "${REMOTE_BRANCH}" | awk '{ print $1 }')
    
    	# skip ahead if the commit id did not change
    	[ "$LOCAL_HEAD" == "$REMOTE_HEAD" ] && continue 1
    
    	# switch to local working branch, if we found changes
    	[ "$(git branch --show-current)" != "${LOCAL_BRANCH}" ] && {
    		git switch -c "${LOCAL_BRANCH}" || git switch "${LOCAL_BRANCH}"
    	}
    
    	CHECKOUT=$(mktemp -d)
    
    	# clone the target branch
    	git clone --bare "${REMOTE_URL}" --branch="${REMOTE_BRANCH}" "${CHECKOUT}"
    
    	# prepare the commit message
    	# shellcheck disable=SC2001
    	MODULE=$(echo "${MODULE,,}" | sed 's/packages_//')
    	TITLE="modules: update ${MODULE}"
    	MESSAGE="$(mktemp)"
    	{
    		echo "${TITLE}"
    		printf '\n\n'
    		git -C "${CHECKOUT}" log --oneline --no-decorate --no-merges "${LOCAL_HEAD}..${REMOTE_HEAD}" | cat
    	} > "$MESSAGE"
    
    	# modify modules file
    	sed -i "s/${LOCAL_HEAD}/${REMOTE_HEAD}/" ./modules
    	git add ./modules
    
    	git commit -F "${MESSAGE}"
    
    	# remove the checkout
    	rm -fr "${CHECKOUT}"
    done