From 19d63ad72c012ee3dfb9375724067b278593df8a Mon Sep 17 00:00:00 2001
From: Jack Humbert <jack.humb@gmail.com>
Date: Tue, 7 Feb 2017 01:35:10 -0500
Subject: [PATCH] try building only keyboards needed

---
 .travis.yml                  |  6 ++----
 util/travis_build.sh         | 18 ++++++++++++++++++
 util/travis_compiled_push.sh |  6 +++---
 3 files changed, 23 insertions(+), 7 deletions(-)
 create mode 100644 util/travis_build.sh

diff --git a/.travis.yml b/.travis.yml
index 792f2cd05d..093f13be6b 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -9,9 +9,6 @@ branches:
 env:
   global:
   - secure: vBTSL34BDPxDilKUuTXqU4CJ26Pv5hogD2nghatkxSQkI1/jbdnLj/DQdPUrMJFDIY6TK3AltsBx72MaMsLQ1JO/Ou24IeHINHXzUC1FlS9yQa48cpxnhX5kzXNyGs3oa0qaFbvnr7RgYRWtmD52n4bIZuSuW+xpBv05x2OCizdT2ZonH33nATaHGFasxROm4qYZ241VfzcUv766V6RVHgL4x9V08warugs+RENVkfzxxwhk3NmkrISabze0gSVJLHBPHxroZC6EUcf/ocobcuDrCwFqtEt90i7pNIAFUE7gZsN2uE75LmpzAWin21G7lLPcPL2k4FJVd8an1HiP2WmscJU6U89fOfMb2viObnKcCzebozBCmKGtHEuXZo9FcReOx49AnQSpmESJGs+q2dL/FApkTjQiyT4J6O5dJpoww0/r57Wx0cmmqjETKBb5rSgXM51Etk3wO09mvcPHsEwrT7qH8r9XWdyCDoEn7FCLX3/LYnf/D4SmZ633YPl5gv3v9XEwxR5+04akjgnvWDSNIaDbWBdxHNb7l4pMc+WR1bwCyMyA7KXj0RrftEGOrm9ZRLe6BkbT4cycA+j77nbPOMcyZChliV9pPQos+4TOJoTzcK2L8yWVoY409aDNVuAjdP6Yum0R2maBGl/etLmIMpJC35C5/lZ+dUNjJAM=
-  matrix:
-  - TARGET=all-keyboards AUTOGEN=true
-  - TARGET=test AUTOGEN=false
 before_install:
   - wget http://www.atmel.com/images/avr8-gnu-toolchain-3.5.4.1709-linux.any.x86_64.tar.gz
 install:
@@ -20,7 +17,8 @@ install:
 before_script:
   - avr-gcc --version
 script:
-- 'if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then make $TARGET AUTOGEN=$AUTOGEN; fi'
+- make test AUTOGET=false
+- bash util/travis_build.sh
 addons:
   apt:
     packages:
diff --git a/util/travis_build.sh b/util/travis_build.sh
new file mode 100644
index 0000000000..df2e06960b
--- /dev/null
+++ b/util/travis_build.sh
@@ -0,0 +1,18 @@
+#!/bin/bash
+
+TRAVIS_COMMIT_MESSAGE="${TRAVIS_COMMIT_MESSAGE:-none}"
+TRAVIS_COMMIT_RANGE="${TRAVIS_COMMIT_RANGE:-HEAD~1..HEAD}"
+
+if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then 
+	NEFM=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -Ev '^(keyboards/)' | wc -l)
+	if [[ $NEFM -gt 0 ]] ; then
+		echo "Making all keymaps for all keyboards"
+		make all-keyboards AUTOGEN=true
+	else
+		MKB=$(git diff --name-only -n 1 ${TRAVIS_COMMIT_RANGE} | grep -oP '(?<=keyboards\/)([a-zA-Z_]+)' | sort -u)
+		for KB in $MKB ; do
+			echo "Making all keymaps for $KB"
+			make "$KB" AUTOGEN=true
+		done
+	fi
+fi
diff --git a/util/travis_compiled_push.sh b/util/travis_compiled_push.sh
index 3751da1e53..6ec558cac6 100644
--- a/util/travis_compiled_push.sh
+++ b/util/travis_compiled_push.sh
@@ -38,9 +38,9 @@ if [[ "$TRAVIS_COMMIT_MESSAGE" != *"[skip build]"* ]] ; then
 	git clone https://$GH_TOKEN@github.com/jackhumbert/qmk.fm.git
 	cd qmk.fm
 	git submodule update --init --recursive
-	rm -rf keyboard
-	rm -rf keyboards
-	cp -r ../qmk_firmware/keyboards .
+	#rm -rf keyboard
+	#rm -rf keyboards
+	yes | cp -rf ../qmk_firmware/keyboards .
 	mkdir keyboards/ergodox_ez/
 	cp ../qmk_firmware/util/ergodox_ez.html keyboards/ergodox_ez/index.html
 	cp ../qmk_firmware/readme.md qmk_readme.md