Makefile: Windows does not like single quotes
[rnaseq-cwl-training.git] / Makefile
index 8fc7d806394c430b8bd74af8e0df99449801cecf..a4268d71cfe75fcde726b8a5418f58d0d4ba73d9 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -7,7 +7,22 @@ JEKYLL=jekyll
 JEKYLL_VERSION=3.8.5
 PARSER=bin/markdown_ast.rb
 DST=_site
-PYTHON=python3
+
+# Check Python 3 is installed and determine if it's called via python3 or python
+# (https://stackoverflow.com/a/4933395)
+ifneq (, $(shell which python3))
+  PYTHON := python3
+else ifneq (, $(shell which python))
+  PYTHON_VERSION_FULL := $(wordlist 2,4,$(subst ., ,$(shell python --version 2>&1)))
+  PYTHON_VERSION_MAJOR := $(word 1,${PYTHON_VERSION_FULL})
+  ifneq (3, ${PYTHON_VERSION_MAJOR})
+    $(error "Your system does not appear to have Python 3 installed.")
+  endif
+  PYTHON := python
+else
+    $(error "Your system does not appear to have any Python installed.")
+endif
+
 
 # Controls
 .PHONY : commands clean files
@@ -16,7 +31,7 @@ all : commands
 
 ## commands         : show all commands.
 commands :
-       @grep -h -E '^##' ${MAKEFILES} | sed -e 's/## //g'
+       @grep -h -E '^##' ${MAKEFILES} | sed -e "s/## //g"
 
 ## docker-serve     : use docker to build the site
 docker-serve :
@@ -55,7 +70,7 @@ clean-rmd :
 
 ## workshop-check   : check workshop homepage.
 workshop-check :
-       ${PYTHON} bin/workshop_check.py .
+       @${PYTHON} bin/workshop_check.py .
 
 ## ----------------------------------------
 ## Commands specific to lesson websites.
@@ -94,15 +109,15 @@ _episodes/%.md: _episodes_rmd/%.Rmd
 
 ## lesson-check     : validate lesson Markdown.
 lesson-check : lesson-fixme
-       ${PYTHON} bin/lesson_check.py -s . -p ${PARSER} -r _includes/links.md
+       @${PYTHON} bin/lesson_check.py -s . -p ${PARSER} -r _includes/links.md
 
 ## lesson-check-all : validate lesson Markdown, checking line lengths and trailing whitespace.
 lesson-check-all :
-       ${PYTHON} bin/lesson_check.py -s . -p ${PARSER} -r _includes/links.md -l -w --permissive
+       @${PYTHON} bin/lesson_check.py -s . -p ${PARSER} -r _includes/links.md -l -w --permissive
 
 ## unittest         : run unit tests on checking tools.
 unittest :
-       ${PYTHON} bin/test_lesson_check.py
+       @${PYTHON} bin/test_lesson_check.py
 
 ## lesson-files     : show expected names of generated files for debugging.
 lesson-files :