From 5aa235066c9628540445b0772eb5332877fde594 Mon Sep 17 00:00:00 2001
From: Chmouel Boudjnah <chmouel@enovance.com>
Date: Fri, 3 Oct 2014 21:05:00 +0200
Subject: [PATCH] Rename validate-json target as pep8 and improve it

When discussing with the infra guys they have mentioned it would be
easier to call our linting job pep8, it's indeed badly named but that
target has been used all over openstack for linting projects. As a bonus
point it would make things easier to add the job to the gate. To make
that patch much more interesting than a three characters change I have
improved the validate-samples script to detect if jsonlint was present
and if not fallback to the standard python -mjson.tool which give you
less details but nonetheless works if jsonlint is present.

Change-Id: I8d71a229917004dfd7223a16e4f270101cf2f0a8
---
 tools/validate-json.sh | 25 ++++++++++++++++++++-----
 tox.ini                |  4 ++--
 2 files changed, 22 insertions(+), 7 deletions(-)

diff --git a/tools/validate-json.sh b/tools/validate-json.sh
index c4d1f39246..35338e8d95 100755
--- a/tools/validate-json.sh
+++ b/tools/validate-json.sh
@@ -1,17 +1,32 @@
 #!/bin/bash
 set -e
-
-TMPFILE=$(mktemp)
 ret=0
 
+# For MacOSX users the freebsd's mktemp by default behave diferently,
+# installing the coreutils from brew would give you this but that would be
+# renamed to gmktemp to don't conflict with the stand mktemp, so let just use
+# that if available.
+if type -p gmktemp &>/dev/null; then
+    TMPFILE=$(gmktemp)
+else
+    TMPFILE=$(mktemp)
+fi
+
 function clean {
     rm -f ${TMPFILE}
 }
 trap clean EXIT
 
-for f in $(find docker/ -type f -name '*.json');do
-    jsonlint -s ${f} >${TMPFILE}
-    egrep -q 'has errors$' ${TMPFILE} && { cat ${TMPFILE}; ret=1 ;}
+linter=jsonlint
+type -p jsonlint &>/dev/null || linter=python
+
+for f in $(find docker -type f -name '*.json');do
+    if [[ ${linter} == jsonlint ]];then
+        jsonlint -s ${f} >${TMPFILE}
+        egrep -q 'has errors$' ${TMPFILE} && { cat ${TMPFILE}; ret=1 ;}
+    else
+        python -m json.tool ${f} &>/dev/null || { echo "$f: has json errors"; ret=1; }
+    fi
 done
 
 cat ${TMPFILE}
diff --git a/tox.ini b/tox.ini
index 5a3f84656a..53c0c830e4 100644
--- a/tox.ini
+++ b/tox.ini
@@ -1,11 +1,11 @@
 [tox]
 skipsdist = True
-envlist = validate-json
+envlist = pep8
 minversion = 1.6
 
 [testenv]
 deps = -r{toxinidir}/test-requirements.txt
 
-[testenv:validate-json]
+[testenv:pep8]
 commands = 
     {toxinidir}/tools/validate-json.sh
-- 
GitLab