diff --git a/setup.md b/setup.md index 001e30784f0bf724d0a64243b50a1decee46330c..774f48971cfaa02a11a3e5e8c0cb3ed5c6bdfba5 100644 --- a/setup.md +++ b/setup.md @@ -2,30 +2,35 @@ title: Setup --- -Our lesson template is kept in the [`carpentries/styles` repository][styles]. The `styles` repository is carefully curated so that -changes made to it are easily mergable by downstream lessons. The `styles` repository contains various -bits that take Markdown files and render them as a lesson web page. For more information on how to develop -lessons and maintain them, see our [lesson-example][lesson-example]. It will walk you through the basics of lesson -design and how to use GitHub, Markdown and Jekyll for lesson development. Follow the instructions below to make -your own empty lesson in your own GitHub account. Once you've done that you can just write Markdown code and have -lesson web pages just like the [lesson-example][lesson-example] and all of our other lessons, but with your lesson content. - -Requirements: +Our lesson template is kept in the [`carpentries/styles` repository][styles]. The `styles` +repository is carefully curated so that changes made to it are easily mergable by downstream +lessons. The `styles` repository contains various bits that take Markdown files and render them as a +lesson web page. For more information on how to develop lessons and maintain them, see our +[lesson-example][lesson-example]. It will walk you through the basics of lesson design and how to +use GitHub, Markdown and Jekyll for lesson development. Follow the instructions below to make your +own empty lesson in your own GitHub account. Once you've done that you can just write Markdown code +and have lesson web pages just like the [lesson-example][lesson-example] and all of our other +lessons, but with your lesson content. + +## Requirements + * A GitHub account -* A working Python 3.4+ environment to run the lesson initialization script -* (Optional) A local install of [Jekyll](https://jekyllrb.com/) (version 3.2 or higher) which will require the Ruby language to be installed. +* A working [Python 3.4+](https://www.python.org) environment to run the lesson initialization + script +* (Optional) A local install of [Jekyll](https://jekyllrb.com/) (version 3.2 or higher) which will + require the Ruby language to be installed. ## Creating a New Lesson We will assume that your user ID is `timtomch` and the name of your new lesson is `data-cleanup`. -1. We'll use the [GitHub's importer][importer] to make a copy of this repo in your own GitHub account. -(Note: This is like a GitHub Fork, but not connected to the upstream changes) +1. We'll use the [GitHub's importer][importer] to make a copy of this repo in your own GitHub + account. (Note: This is like a GitHub Fork, but not connected to the upstream changes) -2. **Put the URL of [the styles repository][styles]** (https://github.com/carpentries/styles) in the "Your - old repository’s clone URL" box. - Do *not* use the URL of this repository, +2. Put the URL of **[the styles repository][styles]**, that is + **https://github.com/carpentries/styles** in the "Your old repository’s clone URL" box. + Do not use the URL of this repository, as that will bring in a lot of example files you don't actually want. 3. Select the owner for your new repository. @@ -80,6 +85,13 @@ new lesson is `data-cleanup`. (Note that the user name above is `carpentries`, *not* `timtomch`, since you are adding the master copy of the template as a remote.) +10. Configure the `template` remote to not download tags: + + ~~~ + $ git config --local remote.template.tagOpt --no-tags + ~~~ + {: .language-bash} + 10. Make sure you are using the `gh-pages` branch of the lesson template: ~~~ @@ -98,7 +110,8 @@ new lesson is `data-cleanup`. that cannot be put into the styles repository (because they would trigger repeated merge conflicts). -12. Create and edit files as explained further in [the episodes of this lesson]({{ page.root }}/#schedule). +12. Create and edit files as explained further in + [the episodes of this lesson]({{ relative_root_path }}/#schedule). 13. (requires Jekyll Setup from below) Preview the HTML pages for your lesson: @@ -107,13 +120,19 @@ new lesson is `data-cleanup`. ~~~ {: .language-bash} -14. Commit your changes *and the HTML pages in the root directory of - your lesson repository* and push to the `gh-pages` branch of your + Alternatively, you can try using Docker: + + ~~~ + $ make docker-serve + ~~~ + {: .language-bash} + +14. Commit your changes and push to the `gh-pages` branch of your repository: ~~~ $ cd data-cleanup - $ git add changed-file.md changed-file.html + $ git add changed-file.md $ git commit -m "Explanatory message" $ git push origin gh-pages ~~~ @@ -122,14 +141,13 @@ new lesson is `data-cleanup`. 15. [Tell us][email] where your lesson is so that we can add it to the appropriate index page(s). -**Note:** +## Notes 1. SSH cloning (rather than the HTTPS cloning used above) will also work for those who have set up SSH keys with GitHub. 2. Once a lesson has been created, please submit changes - for review as pull requests that contain *only the modified Markdown files*. - Do *not* submit generated HTML. + for review as pull requests that contain Markdown files only. 3. Some people have had intermittent errors during the import process, possibly because of the network timing out. @@ -151,23 +169,51 @@ new lesson is `data-cleanup`. ## (Optional) Jekyll Setup for Lesson Development -If you want to set up Jekyll -so that you can preview changes on your own machine before pushing them to GitHub, +If you want to preview changes on your own machine before pushing them to GitHub, you must install the software described below. -(Note: Julian Thilo has written instructions for -[installing Jekyll on Windows][jekyll-windows].) +Julian Thilo wrote instructions for [installing Jekyll on Windows][jekyll-windows]. + +1. **[Ruby](https://www.ruby-lang.org/en/downloads/)**. -1. **Ruby**. - This is included with Linux and macOS; - the simplest option on Windows is to use [RubyInstaller][ruby-installer]. - Make sure Ruby is upto date otherwise jekyll may fail. - You can test your installation by running `ruby --version`. - For more information, - see [the Ruby installation guidelines][ruby-install-guide]. + **Linux/macOS**: Ruby is usually included with Linux and macOS. However, to reliably render + lessons the way GitHub does, we have to use the same version of Ruby as GitHub. Currently, + GitHub uses Ruby 2.5.3. In order to install Ruby 2.5.3 on Linux and macOS, we recommend using + [rbenv](https://github.com/rbenv/rbenv): + + ~~~ + rbenv install 2.5.3 + ~~~ + {: .language-bash} + + And then instructing `rbenv` to use it in your lesson development process by executing the + following command from your lesson directory: + + ~~~ + rbenv local 2.5.3 + ~~~ + {: .language-bash} + + To install `rbenv`, please use [rbenv-installer](https://github.com/rbenv/rbenv-installer). + + **Windows**: Please use [RubyInstaller][ruby-installer] to install Ruby on Windows. + + Upon installing Ruby, check its version by executing + + ~~~ + ruby --version + ~~~ + {: .language-bash} + + For more information, see [the Ruby installation guidelines][ruby-install-guide]. 2. **[RubyGems][rubygems]** - (the package manager for Ruby). - You can test your installation by running `gem --version`. + is a tool which manages Ruby packages. It should be installed along with Ruby and you can + test your installation by running + + ~~~ + gem --version + ~~~ + {: .language-bash} 3. **[Jekyll][jekyll]**. You can install this by running `gem install jekyll`. @@ -180,12 +226,11 @@ you must install the software described below. so you will need to install these to build R lessons (and this example lesson). The best way to install these packages is to open an R terminal and type: - ``` - > install.packages('knitr', repos = 'https://', dependencies = TRUE) - > install.packages('stringr', repos = 'https://cran.rstudio.com', dependencies = TRUE) - > install.packages('checkpoint', repos = 'https://cran.rstudio.com', dependencies = TRUE) - > install.packages('ggplot2', repos = 'https://cran.rstudio.com', dependencies = TRUE) - ``` + ~~~ + install.packages(c('knitr', 'stringr', 'checkpoint', 'ggplot2'), + repos = 'https://cran.rstudio.com', dependencies = TRUE) + ~~~ + {: .language-r} If you want to run `bin/lesson_check.py` (which is invoked by `make lesson-check`) you will need Jekyll (so that you have its Markdown parser, which is called Kramdown)