Fix root YAML variable in bin/lesson_initialize.py
[rnaseq-cwl-training.git] / bin / lesson_initialize.py
index 853285e9dba4224f43a44b9c0e520578a877bc87..3ee1ace61cec7a8482dd439a59572bf579c48472 100755 (executable)
@@ -3,10 +3,10 @@
 """Initialize a newly-created repository."""
 
 
+from __future__ import print_function
 import sys
 import os
 
-
 ROOT_AUTHORS = '''\
 FIXME: list authors' names and email addresses.
 '''
@@ -45,7 +45,7 @@ This is a good way to introduce yourself
 and to meet some of our community members.
 
 1.  If you do not have a [GitHub][github] account,
-    you can [send us comments by email][contact].
+    you can [send us comments by email][email].
     However,
     we will be able to respond more quickly if you use one of the other methods described below.
 
@@ -63,18 +63,22 @@ and to meet some of our community members.
 
 ## Where to Contribute
 
-1.  If you wish to change this example lesson,
-    please work in <https://github.com/swcarpentry/lesson-example>.
-    This lesson documents the format of our lessons,
+1.  If you wish to change this lesson,
+    please work in <https://github.com/swcarpentry/FIXME>,
+    which can be viewed at <https://swcarpentry.github.io/FIXME>.
+
+2.  If you wish to change the example lesson,
+    please work in <https://github.com/swcarpentry/lesson-example>,
+    which documents the format of our lessons
     and can be viewed at <https://swcarpentry.github.io/lesson-example>.
 
-2.  If you wish to change the template used for workshop websites,
+3.  If you wish to change the template used for workshop websites,
     please work in <https://github.com/swcarpentry/workshop-template>.
     The home page of that repository explains how to set up workshop websites,
     while the extra pages in <https://swcarpentry.github.io/workshop-template>
     provide more background on our design choices.
 
-3.  If you wish to change CSS style files, tools,
+4.  If you wish to change CSS style files, tools,
     or HTML boilerplate for lessons or workshops stored in `_includes` or `_layouts`,
     please work in <https://github.com/swcarpentry/styles>.
 
@@ -147,20 +151,19 @@ and have final say over what gets merged into the lesson.
 General discussion of [Software Carpentry][swc-site] and [Data Carpentry][dc-site]
 happens on the [discussion mailing list][discuss-list],
 which everyone is welcome to join.
-You can also [reach us by email][contact].
+You can also [reach us by email][email].
 
-[contact]: mailto:admin@software-carpentry.org
+[email]: mailto:admin@software-carpentry.org
 [dc-issues]: https://github.com/issues?q=user%3Adatacarpentry
 [dc-lessons]: http://datacarpentry.org/lessons/
 [dc-site]: http://datacarpentry.org/
 [discuss-list]: http://lists.software-carpentry.org/listinfo/discuss
-[example-site]: https://swcarpentry.github.io/lesson-example/
 [github]: http://github.com
 [github-flow]: https://guides.github.com/introduction/flow/
 [github-join]: https://github.com/join
 [how-contribute]: https://egghead.io/series/how-to-contribute-to-an-open-source-project-on-github
-[issues]: https://github.com/swcarpentry/lesson-example/issues/
-[repo]: https://github.com/swcarpentry/lesson-example/
+[issues]: https://github.com/swcarpentry/FIXME/issues/
+[repo]: https://github.com/swcarpentry/FIXME/
 [swc-issues]: https://github.com/issues?q=user%3Aswcarpentry
 [swc-lessons]: http://software-carpentry.org/lessons/
 [swc-site]: http://software-carpentry.org/
@@ -171,60 +174,63 @@ ROOT_CONFIG_YML = '''\
 # Values for this lesson.
 #------------------------------------------------------------
 
-# Which carpentry is this ("swc" or "dc")?
+# Which carpentry is this ("swc", "dc", or "lc")?
 carpentry: "swc"
 
-# What kind of thing is this ("workshop" or "lesson")?
-kind: "lesson"
-
 # Overall title for pages.
 title: "Lesson Title"
 
-# Repository URL (without trailing slash).
-repo: https://github.com/[USERNAME]/[LESSON-SLUG]
-
-# Root URL below username.github.io domain, with leading slash but no trailing slash.
-# For example, for 'https://swcarpentry.github.io/lesson-example', use '/lesson-example'.
-root: "/[LESSON-SLUG]"
-
-# Contact email address.
-email: "[[CONTACT-ADDRESS]]"
+# Contact.  This *must* include the protocol: if it's an email
+# address, it must look like "mailto:lessons@software-carpentry.org",
+# or if it's a URL, "https://gitter.im/username/ProjectName".
+email: "mailto:lessons@software-carpentry.org"
 
 #------------------------------------------------------------
 # Generic settings (should not need to change).
 #------------------------------------------------------------
 
-# Is this production or development? (Overridden in _config_dev.yml.)
-is_production: true
+# What kind of thing is this ("workshop" or "lesson")?
+kind: "lesson"
+
+# Magic to make URLs resolve both locally and on GitHub.
+# See https://help.github.com/articles/repository-metadata-on-github-pages/.
+repository: <USERNAME>/<PROJECT>
 
 # Sites.
 amy_site: "https://amy.software-carpentry.org/workshops"
-dc_site: "https://datacarpentry.org"
+dc_site: "http://datacarpentry.org"
 swc_github: "https://github.com/swcarpentry"
 swc_site: "https://software-carpentry.org"
+swc_pages: "https://swcarpentry.github.io"
+lc_site: "http://librarycarpentry.github.io/"
 template_repo: "https://github.com/swcarpentry/styles"
 example_repo: "https://github.com/swcarpentry/lesson-example"
 example_site: "https://swcarpentry.github.com/lesson-example"
 workshop_repo: "https://github.com/swcarpentry/workshop-template"
 workshop_site: "https://swcarpentry.github.io/workshop-template"
+training_site: "https://swcarpentry.github.io/instructor-training"
 
 # Surveys.
 pre_survey: "https://www.surveymonkey.com/r/swc_pre_workshop_v1?workshop_id="
 post_survey: "https://www.surveymonkey.com/r/swc_post_workshop_v1?workshop_id="
+training_post_survey: "https://www.surveymonkey.com/r/post-instructor-training"
 
-# Start time in minutes (540 is 09:00 am)
-start_time: 540
+# Start time in minutes (0 to be clock-independent, 540 to show a start at 09:00 am).
+start_time: 0
 
 # Specify that things in the episodes collection should be output.
 collections:
   episodes:
     output: true
-    permalink: /:path/
+    permalink: /:path/index.html
   extras:
     output: true
+    permalink: /:path/index.html
 
 # Set the default layout for things in the episodes collection.
 defaults:
+  - values:
+      root: ..
   - scope:
       path: ""
       type: episodes
@@ -243,6 +249,8 @@ highlighter: false
 ROOT_INDEX_MD = '''\
 ---
 layout: lesson
+root: .
+permalink: index.html  # Is the only page that don't follow the partner /:path/index.html
 ---
 FIXME: home page introduction
 
@@ -255,6 +263,7 @@ FIXME: home page introduction
 ROOT_REFERENCE_MD = '''\
 ---
 layout: reference
+root: .
 ---
 
 ## Glossary
@@ -266,11 +275,50 @@ ROOT_SETUP_MD = '''\
 ---
 layout: page
 title: Setup
-permalink: /setup/
+root: .
 ---
 FIXME
 '''
 
+ROOT_AIO_MD = '''\
+---
+layout: page 
+root: .
+---
+<script>
+  window.onload = function() {
+    var lesson_episodes = [
+    {% for episode in site.episodes %}
+    "{{ episode.url}}"{% unless forloop.last %},{% endunless %}
+    {% endfor %}
+    ];
+    var xmlHttp = [];  /* Required since we are going to query every episode. */
+    for (i=0; i < lesson_episodes.length; i++) {
+      xmlHttp[i] = new XMLHttpRequest();
+      xmlHttp[i].episode = lesson_episodes[i];  /* To enable use this later. */
+      xmlHttp[i].onreadystatechange = function() {
+      if (this.readyState == 4 && this.status == 200) {
+        var article_here = document.getElementById(this.episode);
+        var parser = new DOMParser();
+        var htmlDoc = parser.parseFromString(this.responseText,"text/html");
+        var htmlDocArticle = htmlDoc.getElementsByTagName("article")[0];
+        article_here.innerHTML = htmlDocArticle.innerHTML;
+        }
+      }
+      episode_url = "{{ page.root }}" + lesson_episodes[i];
+      xmlHttp[i].open("GET", episode_url);
+      xmlHttp[i].send(null);
+    }
+  }
+</script>
+{% comment %}
+Create anchor for each one of the episodes.
+{% endcomment %}
+{% for episode in site.episodes %}
+<article id="{{ episode.url }}"></article>
+{% endfor %}
+'''
+
 EPISODES_INTRODUCTION_MD = '''\
 ---
 title: "Introduction"
@@ -289,7 +337,6 @@ EXTRAS_ABOUT_MD = '''\
 ---
 layout: page
 title: About
-permalink: /about/
 ---
 {% include carpentries.html %}
 '''
@@ -298,7 +345,6 @@ EXTRAS_DISCUSS_MD = '''\
 ---
 layout: page
 title: Discussion
-permalink: /discuss/
 ---
 FIXME
 '''
@@ -307,24 +353,52 @@ EXTRAS_FIGURES_MD = '''\
 ---
 layout: page
 title: Figures
-permalink: /figures/
 ---
-{% include all_figures.html %}
+<script>
+  window.onload = function() {
+    var lesson_episodes = [
+    {% for episode in site.episodes %}
+    "{{ episode.url}}"{% unless forloop.last %},{% endunless %}
+    {% endfor %}
+    ];
+    var xmlHttp = [];  /* Required since we are going to query every episode. */
+    for (i=0; i < lesson_episodes.length; i++) {
+      xmlHttp[i] = new XMLHttpRequest();
+      xmlHttp[i].episode = lesson_episodes[i];  /* To enable use this later. */
+      xmlHttp[i].onreadystatechange = function() {
+        if (this.readyState == 4 && this.status == 200) {
+          var article_here = document.getElementById(this.episode);
+          var parser = new DOMParser();
+          var htmlDoc = parser.parseFromString(this.responseText,"text/html");
+          var htmlDocArticle = htmlDoc.getElementsByTagName("article")[0];
+          article_here.appendChild(htmlDocArticle.getElementsByTagName("h1")[0]);
+          for (let image of htmlDocArticle.getElementsByTagName("img")) {
+            article_here.appendChild(image);
+          }
+        }
+      }
+      episode_url = "{{ page.root }}" + lesson_episodes[i];
+      xmlHttp[i].open("GET", episode_url);
+      xmlHttp[i].send(null);
+    }
+  }
+</script>
+{% comment %}
+Create anchor for each one of the episodes.
+{% endcomment %}
+{% for episode in site.episodes %}
+<article id="{{ episode.url }}"></article>
+{% endfor %}
 '''
 
 EXTRAS_GUIDE_MD = '''\
 ---
 layout: page
-title: "Instructors' Guide"
-permalink: /guide/
+title: "Instructor Notes"
 ---
 FIXME
 '''
 
-INCLUDES_ALL_FIGURES_HTML = '''\
-<!-- empty -->
-'''
-
 BOILERPLATE = (
     ('AUTHORS', ROOT_AUTHORS),
     ('CITATION', ROOT_CITATION),
@@ -333,12 +407,12 @@ BOILERPLATE = (
     ('index.md', ROOT_INDEX_MD),
     ('reference.md', ROOT_REFERENCE_MD),
     ('setup.md', ROOT_SETUP_MD),
+    ('aio.md', ROOT_AIO_MD),
     ('_episodes/01-introduction.md', EPISODES_INTRODUCTION_MD),
     ('_extras/about.md', EXTRAS_ABOUT_MD),
     ('_extras/discuss.md', EXTRAS_DISCUSS_MD),
     ('_extras/figures.md', EXTRAS_FIGURES_MD),
     ('_extras/guide.md', EXTRAS_GUIDE_MD),
-    ('_includes/all_figures.html', INCLUDES_ALL_FIGURES_HTML)
 )