# Controls
.PHONY : commands clean files
+.NOTPARALLEL:
all : commands
## commands : show all commands.
@grep -h -E '^##' ${MAKEFILES} | sed -e 's/## //g'
## serve : run a local server.
-serve : lesson-rmd
+serve : lesson-md
${JEKYLL} serve
## site : build files but do not run a server.
-site : lesson-rmd
+site : lesson-md
${JEKYLL} build
# repo-check : check repository settings.
## ----------------------------------------
## Commands specific to lesson websites.
-.PHONY : lesson-check lesson-rmd lesson-files lesson-fixme
+.PHONY : lesson-check lesson-md lesson-files lesson-fixme
# RMarkdown files
RMD_SRC = $(wildcard _episodes_rmd/??-*.Rmd)
$(patsubst _extras/%.md,${DST}/%/index.html,$(wildcard _extras/*.md)) \
${DST}/license/index.html
-## lesson-rmd : convert Rmarkdown files to markdown
-lesson-rmd: $(RMD_SRC)
- @bin/knit_lessons.sh $(RMD_SRC)
+## lesson-md : convert Rmarkdown files to markdown
+lesson-md : ${RMD_DST}
+
+# Use of .NOTPARALLEL makes rule execute only once
+${RMD_DST} : ${RMD_SRC}
+ @bin/knit_lessons.sh ${RMD_SRC}
## lesson-check : validate lesson Markdown.
lesson-check :
+{% comment %}
+ General description of Software and Data Carpentry.
+{% endcomment %}
<div class="row">
<div class="col-md-2" align="center">
<a href="{{ site.swc_site }}"><img src="{{ page.root }}/assets/img/swc-icon-blue.svg" alt="Software Carpentry logo" /></a>
+{% comment %}
+ Display key points for an episode.
+{% endcomment %}
<blockquote class="keypoints">
<h2>Key Points</h2>
<ul>
{% comment %}
- Find previous and next episodes (if any).
-{% endcomment %}
-{% for episode in site.episodes %}
- {% if episode.url == page.url %}
- {% unless forloop.first %}
- {% assign prev_episode = prev %}
- {% endunless %}
- {% unless forloop.last %}
- {% assign next_episode = site.episodes[forloop.index] %}
- {% endunless %}
- {% endif %}
- {% assign prev = episode %}
-{% endfor %}
-
-{% comment %}
- Display title and prev/next links.
+ Navigation bar for an episode.
{% endcomment %}
<div class="row">
<div class="col-md-1">
<h3>
- {% if prev_episode %}
- <a href="{{ page.root }}{{ prev_episode.url }}"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span><span class="sr-only">previous episode</span></a>
+ {% if page.previous.url %}
+ <a href="{{ page.root }}{{ page.previous.url }}"><span class="glyphicon glyphicon-menu-left" aria-hidden="true"></span><span class="sr-only">previous episode</span></a>
{% else %}
<a href="{{ page.root }}/"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span><span class="sr-only">lesson home</span></a>
{% endif %}
</div>
<div class="col-md-1">
<h3>
- {% if next_episode %}
- <a href="{{ page.root }}{{ next_episode.url }}"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span><span class="sr-only">next episode</span></a>
+ {% if page.next.url %}
+ <a href="{{ page.root }}{{ page.next.url }}"><span class="glyphicon glyphicon-menu-right" aria-hidden="true"></span><span class="sr-only">next episode</span></a>
{% else %}
<a href="{{ page.root }}/"><span class="glyphicon glyphicon-menu-up" aria-hidden="true"></span><span class="sr-only">lesson home</span></a>
{% endif %}
+{% comment %}
+ Javascript used in lesson and workshop pages.
+{% endcomment %}
<script src="{{ page.root }}/assets/js/jquery.min.js"></script>
<script src="{{ page.root }}/assets/js/bootstrap.min.js"></script>
<script src="{{ page.root }}/assets/js/lesson.js"></script>
+{% comment %}
+ Footer for lesson pages.
+{% endcomment %}
<footer>
<div class="row">
<div class="col-md-6" align="left">
+{% comment %}
+ Main title for lesson pages.
+{% endcomment %}
<h1 class="maintitle"><a href="{{ page.root }}/">{{ site.title }}</a>{% if page.title %}: {{ page.title }}{% endif %}</h1>
+{% comment %}
+ Lesson navigation bar.
+{% endcomment %}
<nav class="navbar navbar-default">
<div class="container-fluid">
<div class="navbar-header">
+{% comment %}
+ Advertising box at the top of a workshop website home page.
+{% endcomment %}
<div class="jumbotron">
<div class="row">
<div class="col-md-10 col-md-offset-1">
+{% comment %}
+ Footer for a standard workshop.
+{% endcomment %}
<footer>
<div class="row">
<div class="col-md-4" align="left">