├── viz ├── test │ ├── tmp │ │ └── .gitkeep │ ├── fixtures │ │ ├── step_3.tw2 │ │ ├── step_1.tw2 │ │ ├── step_2.tw2 │ │ └── graph.dot │ └── build_graph_test.rb ├── build_graph.rb └── .byebug_history ├── .ruby-version ├── yarn.lock ├── .gitignore ├── contents ├── assets │ ├── mac │ │ ├── 32_bit.png │ │ ├── 64_bit.png │ │ ├── pouring.png │ │ ├── terminal.png │ │ ├── create_bin.png │ │ ├── exercism_usage.png │ │ ├── folder_created.png │ │ ├── 32_bit_download.png │ │ ├── 64_bit_download.png │ │ ├── spotlight_access.png │ │ ├── typing_terminal.gif │ │ ├── exercism_extracted.png │ │ ├── folder_not_created.png │ │ ├── homebrew_installed.png │ │ ├── installing_exercism.gif │ │ ├── confirming_installation.png │ │ ├── exercism_not_installed.png │ │ ├── homebrew_not_installed.png │ │ └── clicking_the_magnifying_glass.png │ ├── windows │ │ ├── win10.png │ │ ├── win10-cmd.png │ │ ├── win10-zip.png │ │ ├── win10-result.png │ │ ├── win10-installed.png │ │ ├── win10-cmd-folder.png │ │ └── win10-cmd-result.png │ └── downloads_list.png ├── common │ ├── install_complete.tw2 │ ├── cli_install_complete.tw2 │ ├── talk_to_a_volunteer.tw2 │ ├── configuring_the_cli.tw2 │ └── welcome.tw2 ├── mac │ ├── 32_bit_version_not_supported.tw2 │ ├── install_exercism_on_a_mac.tw2 │ ├── add_to_path_troubleshooting.tw2 │ ├── opening_the_terminal_troubleshooting.tw2 │ ├── introduction.tw2 │ ├── create_bin_folder_troubleshooting.tw2 │ ├── asking_about_homebrew.tw2 │ ├── download_64_bit_version_troubleshooting.tw2 │ ├── manual_install.tw2 │ ├── install_exercism_via_homebrew_troubleshooting.tw2 │ ├── determine_processor_architecture_troubleshooting.tw2 │ ├── expert │ │ ├── install_exercism_via_homebrew_troubleshooting.tw2 │ │ ├── determine_processor_architecture.tw2 │ │ └── install_exercism_on_a_mac.tw2 │ ├── add_to_path.tw2 │ ├── determine_processor_architecture.tw2 │ ├── download_64_bit_version.tw2 │ ├── opening_the_terminal.tw2 │ ├── create_bin_folder.tw2 │ ├── verifying_homebrew_installation.tw2 │ ├── install_exercism_via_homebrew.tw2 │ └── install_homebrew.tw2 ├── linux │ ├── introduction.tw2 │ ├── directory.tw2 │ ├── tarball.tw2 │ ├── architecture.tw2 │ └── path.tw2 └── windows │ ├── introduction.tw2 │ ├── download_cli_installer.tw2 │ ├── open_command_prompt.tw2 │ ├── download_64_bit_on_win10.tw2 │ └── add_to_path.tw2 ├── main.tw2 ├── package.json ├── .github ├── dependabot.yml ├── workflows │ ├── sync-labels.yml │ └── pause-community-contributions.yml └── labels.yml ├── Gemfile ├── storyFormats └── exercism_prod │ └── format.js ├── README.md ├── licences ├── mit.md └── cc_sa_4.md ├── .appends └── .github │ └── labels.yml ├── Rakefile ├── table_of_contents.tw2 ├── Gemfile.lock ├── CODE_OF_CONDUCT.md └── CONTRIBUTING.md /viz/test/tmp/.gitkeep: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /.ruby-version: -------------------------------------------------------------------------------- 1 | ruby-2.6.6 2 | -------------------------------------------------------------------------------- /viz/test/fixtures/step_3.tw2: -------------------------------------------------------------------------------- 1 | :: Step 3 2 | -------------------------------------------------------------------------------- /viz/test/fixtures/step_1.tw2: -------------------------------------------------------------------------------- 1 | :: Step 1 2 | 3 | [[Next->Step 2]] 4 | -------------------------------------------------------------------------------- /viz/test/fixtures/step_2.tw2: -------------------------------------------------------------------------------- 1 | :: Step 2 2 | 3 | [[Prev->Step 1]] 4 | [[Next->Step 3]] 5 | -------------------------------------------------------------------------------- /yarn.lock: -------------------------------------------------------------------------------- 1 | # THIS IS AN AUTOGENERATED FILE. DO NOT EDIT THIS FILE DIRECTLY. 2 | # yarn lockfile v1 3 | 4 | 5 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules/ 2 | compiled.html 3 | compiled_prod.html 4 | graph.dot 5 | graph.png 6 | .bundle/ 7 | vendor/ 8 | -------------------------------------------------------------------------------- /contents/assets/mac/32_bit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/32_bit.png -------------------------------------------------------------------------------- /contents/assets/mac/64_bit.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/64_bit.png -------------------------------------------------------------------------------- /contents/assets/mac/pouring.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/pouring.png -------------------------------------------------------------------------------- /contents/assets/mac/terminal.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/terminal.png -------------------------------------------------------------------------------- /contents/assets/windows/win10.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/windows/win10.png -------------------------------------------------------------------------------- /contents/assets/downloads_list.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/downloads_list.png -------------------------------------------------------------------------------- /contents/assets/mac/create_bin.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/create_bin.png -------------------------------------------------------------------------------- /contents/assets/mac/exercism_usage.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/exercism_usage.png -------------------------------------------------------------------------------- /contents/assets/mac/folder_created.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/folder_created.png -------------------------------------------------------------------------------- /contents/assets/windows/win10-cmd.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/windows/win10-cmd.png -------------------------------------------------------------------------------- /contents/assets/windows/win10-zip.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/windows/win10-zip.png -------------------------------------------------------------------------------- /viz/test/fixtures/graph.dot: -------------------------------------------------------------------------------- 1 | digraph 2 | { 3 | "Step 1" -> "Step 2"; 4 | "Step 2" -> "Step 1"; 5 | "Step 2" -> "Step 3"; 6 | } 7 | -------------------------------------------------------------------------------- /contents/assets/mac/32_bit_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/32_bit_download.png -------------------------------------------------------------------------------- /contents/assets/mac/64_bit_download.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/64_bit_download.png -------------------------------------------------------------------------------- /contents/assets/mac/spotlight_access.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/spotlight_access.png -------------------------------------------------------------------------------- /contents/assets/mac/typing_terminal.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/typing_terminal.gif -------------------------------------------------------------------------------- /contents/assets/windows/win10-result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/windows/win10-result.png -------------------------------------------------------------------------------- /contents/assets/mac/exercism_extracted.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/exercism_extracted.png -------------------------------------------------------------------------------- /contents/assets/mac/folder_not_created.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/folder_not_created.png -------------------------------------------------------------------------------- /contents/assets/mac/homebrew_installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/homebrew_installed.png -------------------------------------------------------------------------------- /contents/assets/mac/installing_exercism.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/installing_exercism.gif -------------------------------------------------------------------------------- /contents/assets/windows/win10-installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/windows/win10-installed.png -------------------------------------------------------------------------------- /contents/assets/windows/win10-cmd-folder.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/windows/win10-cmd-folder.png -------------------------------------------------------------------------------- /contents/assets/windows/win10-cmd-result.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/windows/win10-cmd-result.png -------------------------------------------------------------------------------- /contents/assets/mac/confirming_installation.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/confirming_installation.png -------------------------------------------------------------------------------- /contents/assets/mac/exercism_not_installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/exercism_not_installed.png -------------------------------------------------------------------------------- /contents/assets/mac/homebrew_not_installed.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/homebrew_not_installed.png -------------------------------------------------------------------------------- /contents/assets/mac/clicking_the_magnifying_glass.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/HEAD/contents/assets/mac/clicking_the_magnifying_glass.png -------------------------------------------------------------------------------- /main.tw2: -------------------------------------------------------------------------------- 1 | ::Configuration [twee2] 2 | Twee2::build_config.story_name = "Exercism CLI installation walkthrough" 3 | Twee2::build_config.story_ifid = "IFID" 4 | 5 | ::StoryIncludes 6 | table_of_contents.tw2 7 | 8 | -------------------------------------------------------------------------------- /contents/common/install_complete.tw2: -------------------------------------------------------------------------------- 1 | ::Installation complete 2 | # Installation complete 3 | Congratulations, you now have everything set up! Start learning by choosing an exercise from [your dashboard](https://exercism.org/dashboard)! 4 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "cli-walkthrough", 3 | "version": "1.0.0", 4 | "description": "An interactive walkthrough for installing the Exercism CLI", 5 | "devDependencies": {}, 6 | "main": "index.js", 7 | "license": "MIT" 8 | } 9 | -------------------------------------------------------------------------------- /contents/mac/32_bit_version_not_supported.tw2: -------------------------------------------------------------------------------- 1 | ::Sorry, we don't support 32 bit Mac's 2 | # Can't install Exercism on your 32 bit Mac 3 | 4 | Unfortunately, we don't support installing Exercism on 32 bit Mac's. Please use the online editor instead. 5 | -------------------------------------------------------------------------------- /contents/common/cli_install_complete.tw2: -------------------------------------------------------------------------------- 1 | ::CLI Installation complete 2 | # CLI Installation complete 3 | Congratulations, you've now installed Exercism on your computer! Our next step is to configure the CLI. 4 | 5 | [[Configure the CLI->Configuring the CLI]] 6 | -------------------------------------------------------------------------------- /.github/dependabot.yml: -------------------------------------------------------------------------------- 1 | version: 2 2 | 3 | updates: 4 | # Keep dependencies for GitHub Actions up-to-date 5 | - package-ecosystem: 'github-actions' 6 | directory: '/' 7 | schedule: 8 | interval: 'monthly' 9 | labels: 10 | - 'x:size/small' 11 | -------------------------------------------------------------------------------- /Gemfile: -------------------------------------------------------------------------------- 1 | # frozen_string_literal: true 2 | source "https://rubygems.org" 3 | 4 | git_source(:github) {|repo_name| "https://github.com/#{repo_name}" } 5 | 6 | gem "twee2" 7 | gem "minitest", require: false 8 | gem "graph", require: false 9 | gem "rake" 10 | gem "therubyracer" 11 | -------------------------------------------------------------------------------- /contents/linux/introduction.tw2: -------------------------------------------------------------------------------- 1 | ::Linux Introduction 2 | # Installing Exercism on Linux 3 | 4 | You can install the CLI manually. More information is available in the next section. 5 | 6 | --- 7 | 8 | ## I would like to install the CLI 9 | 10 | - [[Using the source code->Linux tarball]] 11 | -------------------------------------------------------------------------------- /storyFormats/exercism_prod/format.js: -------------------------------------------------------------------------------- 1 | window.storyFormat({"author":"Karlo Soriano","description":"Story format to build exercism walkthroughs","image":"icon.svg","name":"Exercism_Prod","proofing":false,"source":"\n
\n{{STORY_DATA}}\n","url":"","version":"1.0.0"}); -------------------------------------------------------------------------------- /contents/mac/install_exercism_on_a_mac.tw2: -------------------------------------------------------------------------------- 1 | ::Installing Exercism on a Mac 2 | # Installing Exercism on a Mac 3 | 4 | To install Exercism on a Mac, we first need to open the terminal. 5 | 6 | --- 7 | 8 | ## Do you know how to open the terminal? 9 | 10 | - [[Yes->Asking about Homebrew]] 11 | - [[No->Opening the Terminal on a Mac]] 12 | -------------------------------------------------------------------------------- /contents/common/talk_to_a_volunteer.tw2: -------------------------------------------------------------------------------- 1 | ::Talk to a Volunteer 2 | # Talk to a Volunteer 3 | 4 | Are you having problems installing Exercism? Don't worry! 5 | We have volunteers willing to help you [on our forum](https://forum.exercism.org/). 6 | Getting new people to learn with Exercism is our top priority, so please don't be afraid to reach out. 7 | -------------------------------------------------------------------------------- /contents/mac/add_to_path_troubleshooting.tw2: -------------------------------------------------------------------------------- 1 | ::Add to $PATH on a Mac - Troubleshooting 2 | # Add to $PATH on a Mac - Troubleshooting 3 | Having problems creating adding BINARY_NAME to the $PATH variable? A solution to your problem may be outlined below. 4 | 5 | --- 6 | 7 | ## Were you able to install Exercism? 8 | 9 | - [[Yes->CLI Installation complete]] 10 | - [[No->Talk to a Volunteer]] 11 | -------------------------------------------------------------------------------- /contents/mac/opening_the_terminal_troubleshooting.tw2: -------------------------------------------------------------------------------- 1 | ::Open the Terminal on a Mac - Troubleshooting 2 | # Open the Terminal on a Mac - Troubleshooting 3 | Having problems opening the terminal on your Mac? You might find a solution to your problem below. 4 | 5 | --- 6 | 7 | ## Were you able to open the Terminal? 8 | 9 | - [[Yes->Verifying Homebrew Installation]] 10 | - [[No->Talk to a Volunteer]] 11 | -------------------------------------------------------------------------------- /contents/mac/introduction.tw2: -------------------------------------------------------------------------------- 1 | ::Mac Introduction 2 | # Installing Exercism on a Mac 3 | 4 | You can use the Homebrew package manager to install the command-line client, or install it manually. 5 | Both methods involve using the command-line. 6 | 7 | Are you comfortable installing and executing programs in the terminal? 8 | 9 | - [[Yes->Installing Exercism on a Mac - Expert]] 10 | - [[No->Installing Exercism on a Mac]] 11 | -------------------------------------------------------------------------------- /contents/mac/create_bin_folder_troubleshooting.tw2: -------------------------------------------------------------------------------- 1 | ::Create bin folder on a Mac - Troubleshooting 2 | # Create bin folder on a Mac - Troubleshooting 3 | Having problems creating and moving BINARY_NAME to your `bin` folder? A solution to your problem may be outlined below. 4 | 5 | --- 6 | 7 | ## Were you able to move the BINARY_NAME program to your `bin` folder? 8 | 9 | - [[Yes->Add to $PATH on a Mac]] 10 | - [[No->Talk to a Volunteer]] 11 | -------------------------------------------------------------------------------- /.github/workflows/sync-labels.yml: -------------------------------------------------------------------------------- 1 | name: Tools 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | paths: 8 | - .github/labels.yml 9 | - .github/workflows/sync-labels.yml 10 | workflow_dispatch: 11 | schedule: 12 | - cron: 0 0 1 * * # First day of each month 13 | 14 | permissions: 15 | issues: write 16 | 17 | jobs: 18 | sync-labels: 19 | uses: exercism/github-actions/.github/workflows/labels.yml@main 20 | -------------------------------------------------------------------------------- /contents/mac/asking_about_homebrew.tw2: -------------------------------------------------------------------------------- 1 | ::Asking about Homebrew 2 | # Installing Homebrew on a Mac 3 | 4 | Homebrew is a package manager for the Mac, and it makes the whole Exercism installation process easier. 5 | 6 | Do you already have Homebrew installed? 7 | 8 | - [[Yes->Installing Exercism via Homebrew]] 9 | - [[I don't know->Verifying Homebrew Installation]] 10 | - [[No->Installing Homebrew]] 11 | - [[I want to install Exercism manually->Manual Installation on a Mac]] 12 | -------------------------------------------------------------------------------- /contents/mac/download_64_bit_version_troubleshooting.tw2: -------------------------------------------------------------------------------- 1 | ::Download and unzip 64 bit version on a Mac - Troubleshooting 2 | # Download Exercism on your Mac - Troubleshooting 3 | Having problems determining your downloading the 64 bit version of BINARY_NAME? A solution to your problem may be outlined below. 4 | 5 | --- 6 | 7 | ## Were you able to get the Exercism program in your `Downloads` folder? 8 | 9 | - [[Yes->Create bin folder on a Mac]] 10 | - [[No->Talk to a Volunteer]] 11 | -------------------------------------------------------------------------------- /contents/mac/manual_install.tw2: -------------------------------------------------------------------------------- 1 | ::Manual Installation on a Mac 2 | # Installing Exercism on a Mac manually 3 | 4 | To install Exercism on a Mac manually, we first need to determine your Mac's processor architecture. 5 | 6 | --- 7 | 8 | ## Do you know what your Mac's processor architecture is? 9 | - [[32 bit->Sorry, we don't support 32 bit Mac's]] 10 | - [[64 bit->Download and unzip 64 bit version on a Mac]] 11 | - [[I don't know->Determine processor architecture on a Mac]] 12 | -------------------------------------------------------------------------------- /contents/mac/install_exercism_via_homebrew_troubleshooting.tw2: -------------------------------------------------------------------------------- 1 | ::Installing Exercism via Homebrew - Troubleshooting 2 | # Installing Exercism via Homebrew - Troubleshooting 3 | Having problems getting Exercism on your computer? A solution to your problem may be present below. 4 | 5 | --- 6 | 7 | ## Were you able to install Exercism? 8 | 9 | - [[Yes->CLI Installation complete]] 10 | - [[No->Talk to a Volunteer]] 11 | - [[Try another installation method->Manual Installation on a Mac]] 12 | -------------------------------------------------------------------------------- /contents/windows/introduction.tw2: -------------------------------------------------------------------------------- 1 | ::Windows Introduction 2 | # Installing Exercism on Windows 3 | 4 | The installer application will determine what version of the Exercism CLI you need, download it, and place it in the right location. 5 | If you are on Windows 10, you may opt to install the CLI manually by following the steps provided. 6 | 7 | - [[Install the CLI using the installer application.->Download CLI Installer for Windows]] 8 | - [[Proceed with manual installation.->Download and unzip 64-bit version on Windows 10]] 9 | -------------------------------------------------------------------------------- /contents/mac/determine_processor_architecture_troubleshooting.tw2: -------------------------------------------------------------------------------- 1 | ::Determine processor architecture on a Mac - Troubleshooting 2 | # Determine processor architecture on a Mac - Troubleshooting 3 | 4 | Having problems determining your processor architecture? A solution to your problem may be outlined below. 5 | 6 | --- 7 | 8 | ## What is your Mac's processor architecture? 9 | 10 | - [[32 bit->Download and unzip 32 bit version on a Mac]] 11 | - [[64 bit->Download and unzip 64 bit version on a Mac]] 12 | - [[I don't know->Talk to a Volunteer]] 13 | -------------------------------------------------------------------------------- /contents/mac/expert/install_exercism_via_homebrew_troubleshooting.tw2: -------------------------------------------------------------------------------- 1 | ::Installing Exercism via Homebrew - Expert - Troubleshooting 2 | # Installing Exercism via Homebrew - Troubleshooting 3 | 4 | Having problems getting Exercism on your computer using Homebrew? 5 | 6 | Here there is a list of Homebrew - Common Issues that can help: Common Issues 7 | 8 | --- 9 | 10 | ## Were you able to install Exercism? 11 | 12 | - [[Yes->CLI Installation complete]] 13 | - [[No->Talk to a Volunteer]] 14 | -------------------------------------------------------------------------------- /viz/test/build_graph_test.rb: -------------------------------------------------------------------------------- 1 | require "minitest/autorun" 2 | require "byebug" 3 | require_relative "../build_graph" 4 | 5 | class BuildGraphTest < Minitest::Test 6 | def test_builds_a_graph 7 | files_path = File.expand_path("../fixtures/**/*.tw2", __FILE__) 8 | output_path = File.expand_path("../tmp/graph", __FILE__) 9 | expected = File.read(File.expand_path("../fixtures/graph.dot", __FILE__)) 10 | 11 | BuildGraph.(files_path, output_path) 12 | 13 | assert_equal expected, File.read("#{output_path}.dot") 14 | 15 | FileUtils.rm("#{output_path}.dot") 16 | FileUtils.rm("#{output_path}.png") 17 | end 18 | end 19 | -------------------------------------------------------------------------------- /.github/workflows/pause-community-contributions.yml: -------------------------------------------------------------------------------- 1 | name: Pause Community Contributions 2 | 3 | on: 4 | issues: 5 | types: 6 | - opened 7 | pull_request_target: 8 | types: 9 | - opened 10 | 11 | permissions: 12 | issues: write 13 | pull-requests: write 14 | 15 | jobs: 16 | pause: 17 | if: github.repository_owner == 'exercism' # Stops this job from running on forks 18 | uses: exercism/github-actions/.github/workflows/community-contributions.yml@main 19 | with: 20 | forum_category: support 21 | secrets: 22 | github_membership_token: ${{ secrets.COMMUNITY_CONTRIBUTIONS_WORKFLOW_TOKEN }} 23 | -------------------------------------------------------------------------------- /contents/windows/download_cli_installer.tw2: -------------------------------------------------------------------------------- 1 | ::Download CLI Installer for Windows 2 | # Option to install the Exercism CLI using the installer for Windows 3 | 4 | Use the link below to download and execute the Windows Installer for the Exercism CLI. A new browser window will be opened when you click this link. Please return to this browser window and let us know if you were successful. 5 | 6 | https://github.com/exercism/windows-installer/releases/latest 7 | 8 | ## Were you able to successfully install the Exercism CLI using the Windows Installer? 9 | 10 | - [[Yes->CLI Installation complete]] 11 | - [[No->Talk to a Volunteer]] 12 | -------------------------------------------------------------------------------- /contents/mac/expert/determine_processor_architecture.tw2: -------------------------------------------------------------------------------- 1 | ::Determine processor architecture on a Mac - Expert 2 | # Determine processor architecture on a Mac 3 | 4 | To determine your processor architecture, run: 5 | 6 | ``` 7 | uname -m 8 | ``` 9 | 10 | If you see `x86_64` as output, this means that your processor architecture is 64 bit. 11 | 12 | ## Unknown architecture 13 | 14 | Nowadays, the majority of the new (newer than 3 years) PCs are using a 64 bit architecture. 15 | Also, all computers with more than 4 GB of memory has to have a 64 bit processor architecture. 16 | 17 | --- 18 | ## Do you know your processor architecture? 19 | 20 | - [[Yes->Manual Installation on a Mac]] 21 | - [[I don't know->Talk to a Volunteer]] 22 | -------------------------------------------------------------------------------- /contents/linux/directory.tw2: -------------------------------------------------------------------------------- 1 | ::Linux directory 2 | # Moving the Executable to `~/bin` 3 | 4 | Once you download and extract the archive, make it available in your `$PATH`. 5 | 6 | First, let’s make sure the directory exists: 7 | 8 | ``` 9 | mkdir -p ~/bin 10 | ``` 11 | 12 | Next, let’s move the `BINARY_NAME` executable there: 13 | 14 | ``` 15 | mv BINARY_NAME ~/bin 16 | ``` 17 | 18 | Make sure everything worked: 19 | 20 | ``` 21 | ~/bin/BINARY_NAME 22 | ``` 23 | 24 | The above should output something like the below: 25 | 26 | ``` 27 | A command-line interface for the v3 redesign of Exercism. 28 | 29 | Download exercises and submit your solutions. 30 | 31 | Usage: 32 | [command] 33 | ``` 34 | 35 | --- 36 | 37 | ## Did running `~/bin/BINARY_NAME` output something like the above? 38 | 39 | - [[Yes->Linux path]] 40 | - [[No->Talk to a Volunteer]] 41 | -------------------------------------------------------------------------------- /contents/common/configuring_the_cli.tw2: -------------------------------------------------------------------------------- 1 | ::Configuring the CLI 2 | # Configuring the CLI 3 | 4 | In order to configure the CLI, paste in the following text into your terminal: 5 | 6 | ``` 7 | [CONFIGURE_COMMAND] 8 | ``` 9 | 10 | You can find your token on your [settings page](https://exercism.org/settings/api_cli). 11 | 12 | After typing in the command, hit the `Enter` key. 13 | 14 | After hitting the `Enter` key, you should see a notification from the CLI that a configuration file has been written. 15 | 16 | ### Important: The token above should be treated like a password and not be shared with anyone! 17 | 18 | When asking for help that involves a command, remove your token before sharing the command. 19 | 20 | --- 21 | 22 | ## Have you configured the Exercism CLI on your computer? 23 | 24 | - [[Yes->Installation complete]] 25 | - [[No->Talk to a Volunteer]] 26 | -------------------------------------------------------------------------------- /contents/linux/tarball.tw2: -------------------------------------------------------------------------------- 1 | ::Linux tarball 2 | # Getting the Executable 3 | 4 | ## Download the archive 5 | 6 | If you know your processor architecture (x86 (32-bit) vs x86_64 (64-bit) vs ARM), download the appropriate archive from the 7 | releases page. 8 | 9 | 10 | ## Extract from the archive 11 | 12 | Once you have the archive downloaded you 13 | need to extract the executable from it. 14 | 15 | * If you’re using a graphic interface (e.g., GNOME or 16 | Unity on Ubuntu): go to your downloads directory, right 17 | click on the downloaded file and select _Extract Here_. 18 | 19 | * If you’re using the command line (use the 20 | right archive file name for your architecture): 21 | ``` 22 | tar -xf BINARY_NAME-linux-64bit.tgz 23 | ``` 24 | 25 | --- 26 | 27 | ## Next steps: 28 | 29 | - [[Continue->Linux directory]] 30 | - [[I don’t know my processor architecture->Linux architecture]] 31 | -------------------------------------------------------------------------------- /contents/common/welcome.tw2: -------------------------------------------------------------------------------- 1 | ::Welcome 2 | # Welcome to the Exercism installation guide! 3 | 4 | This guide was created in order to help you get started learning with Exercism. Answer a few questions, follow a few instructions, and you should be ready in no time! 5 | 6 | To make better use of the guide, here's a brief outline of how this guide is structured: 7 | 8 | - This guide contains several tutorials. These outline the steps needed to get Exercism installed. Inside each tutorial are step-by-step instructions to get Exercism running, as well as steps to verify whether you've done the right thing. 9 | 10 | - At the end of each tutorial, we ask a question in order to track your progress. This helps us to point you to the next installation step. 11 | 12 | That being said, let's start with our first question! 13 | 14 | --- 15 | ## Which OS do you use? 16 | 17 | - [[Linux->Linux Introduction]] 18 | - [[Mac->Mac Introduction]] 19 | - [[Windows->Windows Introduction]] 20 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Walkthrough 2 | 3 | A repository for the text found in the Exercism CLI installation walkthrough. 4 | 5 | To start contributing, please view the [Contributing Guide](https://github.com/exercism/interactive-cli-walkthrough/blob/main/CONTRIBUTING.md). 6 | 7 | ## Deploying changes to production 8 | 9 | To get new changes to production we need to: 10 | 11 | 1. Compile 12 | 2. Copy the compiled file to the [exercism/website-copy](https://github.com/exercism/website-copy) repository 13 | 3. Commit to `main` and push to GitHub 14 | 15 | We don't worry about submitting a pull request for this, since the changes have 16 | been reviewed in a pull request in the exercism/interactive-cli-walkthrough repository 17 | before compiling. 18 | 19 | ```shell 20 | rake compile:prod 21 | cp compiled_prod.html ../website-copy/walkthrough/index.html 22 | ``` 23 | 24 | This can only be done by core website-copy contributors, who have push access on the 25 | exercism/website-copy repository. 26 | -------------------------------------------------------------------------------- /contents/mac/expert/install_exercism_on_a_mac.tw2: -------------------------------------------------------------------------------- 1 | ::Installing Exercism on a Mac - Expert 2 | # Installing Exercism on a Mac 3 | 4 | To install BINARY_NAME via Homebrew run: 5 | 6 | ``` 7 | brew update 8 | brew install BINARY_NAME 9 | ``` 10 | 11 | To install manually, download the appropriate version of BINARY_NAME based on your processor architecture at the releases page, then extract the archive and put the binary in your path. 12 | 13 | Check the installed version with: 14 | 15 | ``` 16 | BINARY_NAME version 17 | ``` 18 | 19 | It should be at least version 3.x 20 | 21 | ---- 22 | ## Have you installed Exercism on your computer? 23 | 24 | - [[Yes->CLI Installation complete]] 25 | - [[I don't know my processor architecture->Determine processor architecture on a Mac - Expert]] 26 | - [[How do I put the binary in my path?->Create bin folder on a Mac]] 27 | - [[I'm lost, can we start over?->Installing Exercism on a Mac]] 28 | -------------------------------------------------------------------------------- /licences/mit.md: -------------------------------------------------------------------------------- 1 | Copyright Exercism 2 | 3 | Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: 4 | 5 | The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. 6 | 7 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. 8 | -------------------------------------------------------------------------------- /contents/windows/open_command_prompt.tw2: -------------------------------------------------------------------------------- 1 | ::Opening the Command Prompt on Windows 10 2 | # Opening the Command Prompt on Windows 10 3 | 4 | For Exercism to work, it needs to be in the correct folder. The easiest way to move it is by using the Command Prompt. 5 | 6 | Let's get started by opening the Command Prompt. 7 | 8 | --- 9 | 10 | ## Step 1: Opening Start 11 | 12 | Open the Start menu, by clicking the Windows icon in the bottom left corner of your screen. 13 | 14 | ## Step 2: Searching for the Command Prompt 15 | 16 | With the Start menu open, start typing `cmd.exe` to search for the Command Prompt 17 | 18 | When searching for `cmd.exe` in the Start menu, your results will look something like this: 19 | 20 | ![cmd.exe result](WALKTHROUGH_ASSETS_PATH/windows/win10-cmd.png) 21 | 22 | 23 | ## Step 3: Open the Command Prompt 24 | 25 | Double click the top result, as shown above, to open the Command Prompt. 26 | 27 | After double clicking, you'll see a window like the one shown here: 28 | 29 | ![cmd.exe window](WALKTHROUGH_ASSETS_PATH/windows/win10-cmd-result.png) 30 | 31 | --- 32 | 33 | ## Were you able to open the Command Prompt? 34 | 35 | - [[Yes->Moving BINARY_NAME to PATH on Windows 10]] 36 | - [[No->Download CLI Installer for Windows]] 37 | -------------------------------------------------------------------------------- /contents/linux/architecture.tw2: -------------------------------------------------------------------------------- 1 | ::Linux architecture 2 | # Determine processor architecture on Linux 3 | 4 | To determine your processor architecture, paste 5 | in the following command into your terminal: 6 | 7 | ``` 8 | uname -m 9 | ``` 10 | 11 | Hit `Enter` after you have pasted in the command and examine the output. 12 | 13 | ## `x86_64` 14 | 15 | If the output is `x86_64` then you are on a 64-bit architecture. 16 | 17 | The file you are looking for is `BINARY_NAME-linux-64bit.tgz`. 18 | 19 | ## `i686` 20 | 21 | If the output is `i686` then you are on a 32-bit architecture. 22 | 23 | The file you are looking for is `BINARY_NAME-linux-32bit.tgz`. 24 | 25 | ## `armv5l`, `armv6l`, `armv7l` or `armv8l` 26 | 27 | If the output is `armv5l`, `armv6l`, `armv7l` 28 | or `armv8l` then you are on an ARM architecture. 29 | 30 | The file you are looking for is `BINARY_NAME-linux-arm-v5.tgz`, 31 | `BINARY_NAME-linux-arm-v6.tgz`, `BINARY_NAME-linux-arm-v7.tgz` 32 | or `BINARY_NAME-linux-arm-v8.tgz` (respectively). 33 | 34 | ## Other 35 | 36 | If your output does not match any of the above, try talk to a volunteer. 37 | 38 | --- 39 | 40 | ## Do you know your system’s processor architecture? 41 | 42 | - [[Yes->Linux tarball]] 43 | - [[No, I would like talk to a volunteer->Talk to a Volunteer]] 44 | -------------------------------------------------------------------------------- /.appends/.github/labels.yml: -------------------------------------------------------------------------------- 1 | # ----------------------------------------------------------------------------------------- # 2 | # These are the repository-specific labels that augment the Exercise-wide labels defined in # 3 | # https://github.com/exercism/org-wide-files/blob/main/global-files/.github/labels.yml. # 4 | # ----------------------------------------------------------------------------------------- # 5 | 6 | - name: "dependencies" 7 | description: "Pull requests that update a dependency file" 8 | color: "0366d6" 9 | 10 | - name: "duplicate" 11 | description: "" 12 | color: "cccccc" 13 | 14 | - name: "invalid" 15 | description: "" 16 | color: "e6e6e6" 17 | 18 | - name: "priority/blocking-v2-launch" 19 | description: "" 20 | color: "BFE3DF" 21 | 22 | - name: "priority/maybe-later" 23 | description: "" 24 | color: "BFE3DF" 25 | 26 | - name: "priority/nice-to-have-for-v2" 27 | description: "" 28 | color: "BFE3DF" 29 | 30 | - name: "question" 31 | description: "" 32 | color: "cc317c" 33 | 34 | - name: "status/pr-welcome" 35 | description: "" 36 | color: "128A0C" 37 | 38 | - name: "type/bug" 39 | description: "" 40 | color: "ee0701" 41 | 42 | - name: "type/improvement" 43 | description: "" 44 | color: "bfd4f2" 45 | 46 | - name: "wontfix" 47 | description: "" 48 | color: "ffffff" 49 | -------------------------------------------------------------------------------- /contents/mac/add_to_path.tw2: -------------------------------------------------------------------------------- 1 | ::Add to $PATH on a Mac 2 | # Add to $PATH on a Mac 3 | 4 | In order to for us to run the BINARY_NAME program from anywhere in our terminal, we need to add its location to the $PATH variable. 5 | 6 | --- 7 | 8 | ## Step 1 9 | 10 | In your terminal, paste in the following to create the `bin` folder: 11 | 12 | ``` 13 | echo 'export PATH=~/bin:$PATH' >> ~/.bash_profile 14 | ``` 15 | 16 | To verify if the `$PATH` variable was updated, paste the following command in your terminal: 17 | 18 | ``` 19 | source ~/.bash_profile 20 | ``` 21 | 22 | Next, paste the following command in your terminal: 23 | 24 | ``` 25 | BINARY_NAME 26 | ``` 27 | 28 | ### Variable updated successfully 29 | 30 | If the terminal replies with instructions on how to use the BINARY_NAME program, you've installed BINARY_NAME successfully! Give yourself a pat on the back. 31 | 32 | ### Variable not updated 33 | 34 | If the terminal replies saying that the BINARY_NAME command is not found, it means that the variable wasn't updated. 35 | 36 | ## Wrapping up 37 | 38 | If you've reached the end of this tutorial without any problems, you have installed BINARY_NAME successfully! 39 | 40 | --- 41 | 42 | ## Were you able to install Exercism? 43 | 44 | - [[Yes->CLI Installation complete]] 45 | - [[No->Add to $PATH on a Mac - Troubleshooting]] 46 | -------------------------------------------------------------------------------- /viz/build_graph.rb: -------------------------------------------------------------------------------- 1 | require "graph" 2 | 3 | class BuildGraph 4 | TITLE_REGEX = /^:: *([^\[]*?) *[\[(.*?)\]]? *[<(.*?)>]? *$/ 5 | LINK_REGEX = /\[\[(.*)->(.*)\]\]/ 6 | 7 | def self.call(*args) 8 | new(*args).call 9 | end 10 | 11 | def initialize(glob="**/*.tw2", output_path="graph") 12 | @glob = glob 13 | @output_path = output_path 14 | @graph = {} 15 | end 16 | 17 | def call 18 | parse_files! 19 | build_graph! 20 | end 21 | 22 | private 23 | attr_reader :output_path, :glob, :graph 24 | 25 | def parse_files! 26 | Dir[glob]. 27 | reject{ |file| file['viz/'] }. 28 | each do |file| 29 | text = read_file!(file) 30 | title = parse_title!(text) 31 | graph[title] = parse_links!(text) 32 | end 33 | end 34 | 35 | def read_file!(file) 36 | File.read(file) 37 | end 38 | 39 | def parse_title!(text) 40 | text.match(TITLE_REGEX).captures[0].strip 41 | end 42 | 43 | def parse_links!(text) 44 | text.scan(LINK_REGEX).map do |link| 45 | _, dest = link 46 | 47 | dest 48 | end 49 | end 50 | 51 | def build_graph! 52 | graph = @graph 53 | 54 | digraph do 55 | graph.each do |src, dest| 56 | dest.each { |node| send(:edge, src, node) } 57 | end 58 | end.save(output_path, "png") 59 | end 60 | end 61 | -------------------------------------------------------------------------------- /contents/linux/path.tw2: -------------------------------------------------------------------------------- 1 | ::Linux path 2 | # Adding `~/bin` to `$PATH` in Bash 3 | 4 | Note: If you’re not running Bash try to adjust the 5 | below to your shell or [[Talk to a Volunteer->Talk to a Volunteer]]. 6 | 7 | To have the `BINARY_NAME` executable available everywhere on the 8 | command line you need to make sure `~/bin` is in your `$PATH`. 9 | 10 | There is a chance it’s there already; let’s see whether it is: 11 | 12 | ``` 13 | [[ ":$PATH:" == *":$HOME/bin:"* || ":$PATH:" == *":~/bin:"* ]] && echo "~/bin is in PATH" || echo "~/bin is not in PATH" 14 | ``` 15 | 16 | If the above prints `~/bin is not in PATH` let’s add 17 | `~/bin` to `$PATH` and reload Bash configuration: 18 | 19 | ``` 20 | echo 'export PATH=~/bin:$PATH' >> ~/.bash_profile 21 | source ~/.bash_profile 22 | ``` 23 | 24 | To check whether this worked, try to run `BINARY_NAME` without providing the path: 25 | 26 | ``` 27 | BINARY_NAME 28 | ``` 29 | 30 | The above should output something like the below: 31 | 32 | ``` 33 | A command-line interface for the v3 redesign of Exercism. 34 | 35 | Download exercises and submit your solutions. 36 | 37 | Usage: 38 | [command] 39 | ``` 40 | 41 | --- 42 | 43 | ## Did running `BINARY_NAME` output something like the above? 44 | 45 | - [[Yes->CLI Installation complete]] 46 | - [[No, I would like talk to a volunteer->Talk to a Volunteer]] 47 | -------------------------------------------------------------------------------- /contents/windows/download_64_bit_on_win10.tw2: -------------------------------------------------------------------------------- 1 | ::Download and unzip 64-bit version on Windows 10 2 | # Downloading the Exercism CLI on Windows 10 3 | 4 | Let's download the latest version of the Exercism CLI to get up and running. 5 | 6 | ## Step 1 7 | 8 | Open your browser (for example, Chrome or Edge) and navigate to 9 | 10 | ``` 11 | https://github.com/exercism/cli/releases/latest 12 | ``` 13 | 14 | To verify you are on the correct page, you must see a Downloads list when you scroll down. 15 | 16 | ![Downloads list](WALKTHROUGH_ASSETS_PATH/downloads_list.png) 17 | 18 | 19 | ## Step 2 20 | 21 | On the downloads list, click the file named `BINARY_NAME-windows-64bit.zip` to download it: 22 | 23 | ![64-bit download](WALKTHROUGH_ASSETS_PATH/windows/win10.png) 24 | 25 | To verify the file was downloaded, you should see a file named `BINARY_NAME-windows-64bit.zip` in your `Downloads` folder. 26 | 27 | 28 | ## Step 3 29 | 30 | Double click on `BINARY_NAME-windows-64bit.zip` to open the folder. 31 | 32 | The folder will show the file `BINARY_NAME`, and will look something like this: 33 | 34 | ![Extracted folder](WALKTHROUGH_ASSETS_PATH/windows/win10-zip.png) 35 | 36 | 37 | ## Wrapping up 38 | 39 | If you've reached the end of this tutorial without any problems, you should have the program `BINARY_NAME` in your `Downloads` folder! 40 | 41 | --- 42 | 43 | ## Were you able to get the program `BINARY_NAME` in your `Downloads` folder? 44 | 45 | - [[Yes->Opening the Command Prompt on Windows 10]] 46 | - [[No->Download CLI Installer for Windows]] 47 | -------------------------------------------------------------------------------- /viz/.byebug_history: -------------------------------------------------------------------------------- 1 | exit 2 | nodes 3 | c 4 | output_path 5 | c 6 | test.save(output_path) 7 | test.save(output_file) 8 | test.save 9 | test.methods 10 | test 11 | c 12 | exit 13 | @graph 14 | exit 15 | @graph 16 | exit 17 | @graph 18 | exit 19 | @graph 20 | exit 21 | link 22 | exit 23 | text.match(TITLE_REGEX).captures 24 | text.match(TITLE_REGEX)[1] 25 | text.match(TITLE_REGEX)[0] 26 | text.match(TITLE_REGEX) 27 | title[0] 28 | title 29 | exit 30 | extit 31 | title 32 | ttile 33 | exit 34 | text.scan LINK_REGEX 35 | exit 36 | text.match(LINK_REGEX).captures 37 | text.match(LINK_REGEX) 38 | exit 39 | text.match(LINK_REGEX).captures 40 | text.match(LINK_REGEX).size 41 | text.match(LINK_REGEX)[0] 42 | text.match(LINK_REGEX)[3] 43 | text.match(LINK_REGEX)[2] 44 | text.match(LINK_REGEX)[1] 45 | text.match(LINK_REGEX)[0] 46 | text.match(LINK_REGEX).length 47 | text.match(LINK_REGEX).methods 48 | text.match(LINK_REGEX).count 49 | text.match(LINK_REGEX) 50 | exit 51 | text.match(LINK_REGEX)[0] 52 | text.match(LINK_REGEX)[2] 53 | text.match(LINK_REGEX)[1] 54 | text.match(LINK_REGEX)[0] 55 | text.match(LINK_REGEX).methods 56 | text.match LINK_REGEX 57 | text.match LINK_REGEX.methods 58 | text.match LINK_REGEX 59 | text 60 | exit 61 | File.read(file) 62 | file 63 | exit 64 | a.read 65 | exit 66 | a 67 | exit 68 | Dir['../**/*.tw2'] 69 | Dir['**/*.tw2'] 70 | Dir['test/fixtures/**/*.tw2'] 71 | Dir['**/*.tw2'] 72 | Dir 73 | __FILE__ 74 | glob 75 | a 76 | exit 77 | @story_data.target! 78 | @story_data 79 | child_story_files 80 | PP.pp(@passages) 81 | @passages 82 | c 83 | PP.pp(@passages) 84 | require 'pp' 85 | pp @passagesrequi 86 | @passages.inspectr 87 | @passages 88 | -------------------------------------------------------------------------------- /Rakefile: -------------------------------------------------------------------------------- 1 | require_relative "./viz/build_graph" 2 | require "twee2" 3 | 4 | desc "Graph the walkthrough" 5 | task :graph do 6 | BuildGraph.() 7 | end 8 | 9 | namespace :compile do 10 | desc "Compile the walkthrough for development" 11 | task :dev do 12 | STDERR.puts "Use 'rake compile:prod' to compile for production!" 13 | 14 | filename = "compiled.html" 15 | binary_name = ENV["BINARY_NAME"] || "exercism" 16 | walkthrough_assets_path = ENV["WALKTHROUGH_ASSETS_PATH"] || "#{Dir.pwd}/contents/assets" 17 | 18 | Twee2.build("main.tw2", filename, format: "./storyFormats/exercism") 19 | 20 | contents = File.read(filename).gsub("BINARY_NAME", binary_name) 21 | contents = contents.gsub("WALKTHROUGH_ASSETS_PATH", walkthrough_assets_path) 22 | 23 | File.open(filename, "wb") do |f| 24 | f.puts contents 25 | end 26 | end 27 | 28 | desc "Compile the walkthrough for production" 29 | task :prod do 30 | filename = "compiled_prod.html" 31 | binary_name = ENV["BINARY_NAME"] || "exercism" 32 | walkthrough_assets_path = "https://raw.githubusercontent.com/exercism/interactive-cli-walkthrough/main/contents/assets" 33 | Twee2.build("main.tw2", filename, format: "./storyFormats/exercism_prod") 34 | 35 | contents = File.read(filename).gsub("BINARY_NAME", binary_name) 36 | contents = contents.gsub("WALKTHROUGH_ASSETS_PATH", walkthrough_assets_path) 37 | 38 | File.open(filename, "wb") do |f| 39 | f.puts contents 40 | end 41 | end 42 | end 43 | 44 | desc "Compile the walkthrough for development (alias for compile:dev)" 45 | task :compile do 46 | Rake::Task['compile:dev'].invoke 47 | end 48 | -------------------------------------------------------------------------------- /table_of_contents.tw2: -------------------------------------------------------------------------------- 1 | ::StoryIncludes 2 | contents/common/welcome.tw2 3 | contents/common/install_complete.tw2 4 | contents/common/cli_install_complete.tw2 5 | contents/common/talk_to_a_volunteer.tw2 6 | contents/common/configuring_the_cli.tw2 7 | 8 | contents/linux/architecture.tw2 9 | contents/linux/directory.tw2 10 | contents/linux/introduction.tw2 11 | contents/linux/path.tw2 12 | contents/linux/tarball.tw2 13 | 14 | contents/mac/introduction.tw2 15 | contents/mac/opening_the_terminal.tw2 16 | contents/mac/opening_the_terminal_troubleshooting.tw2 17 | contents/mac/asking_about_homebrew.tw2 18 | contents/mac/verifying_homebrew_installation.tw2 19 | contents/mac/install_homebrew.tw2 20 | contents/mac/install_exercism_via_homebrew.tw2 21 | contents/mac/install_exercism_via_homebrew_troubleshooting.tw2 22 | contents/mac/manual_install.tw2 23 | contents/mac/determine_processor_architecture.tw2 24 | contents/mac/determine_processor_architecture_troubleshooting.tw2 25 | contents/mac/32_bit_version_not_supported.tw2 26 | contents/mac/download_64_bit_version.tw2 27 | contents/mac/download_64_bit_version_troubleshooting.tw2 28 | contents/mac/create_bin_folder.tw2 29 | contents/mac/create_bin_folder_troubleshooting.tw2 30 | contents/mac/add_to_path.tw2 31 | contents/mac/add_to_path_troubleshooting.tw2 32 | contents/mac/install_exercism_on_a_mac.tw2 33 | contents/mac/expert/determine_processor_architecture.tw2 34 | contents/mac/expert/install_exercism_on_a_mac.tw2 35 | 36 | contents/windows/add_to_path.tw2 37 | contents/windows/download_64_bit_on_win10.tw2 38 | contents/windows/introduction.tw2 39 | contents/windows/open_command_prompt.tw2 40 | contents/windows/download_cli_installer.tw2 41 | -------------------------------------------------------------------------------- /contents/mac/determine_processor_architecture.tw2: -------------------------------------------------------------------------------- 1 | ::Determine processor architecture on a Mac 2 | # Determine processor architecture on a Mac 3 | 4 | The first step in installing Exercism manually is to determine your Mac's processor architecture. For this step, we need to use the terminal. If you need instructions on how to open the terminal, [[Opening the Terminal on a Mac]] would be helpful. 5 | 6 | Let's get started! 7 | 8 | --- 9 | 10 | ## Step 1: Determining processor architecture 11 | 12 | To determine your processor architecture, paste in the following command into your Mac: 13 | 14 | ``` 15 | uname -m | if grep -q 64; then echo "64-bit CPU"; else echo "32-bit CPU"; fi 16 | ``` 17 | 18 | Hit `Enter` after you've pasted in the command. 19 | 20 | ### 32-bit processor architecture 21 | 22 | If you're on a 32-bit processor architecture, your Terminal would reply with this: 23 | 24 | ![32-bit](WALKTHROUGH_ASSETS_PATH/mac/32_bit.png) 25 | 26 | ### 64-bit processor architecture 27 | 28 | If you're on a 64-bit processor architecture, your Terminal would reply with this: 29 | 30 | ![64-bit](WALKTHROUGH_ASSETS_PATH/mac/64_bit.png) 31 | 32 | ### Unknown architecture 33 | 34 | If your output doesn't match any of the above, click on "I don't know" below and we could recommend steps to help you. 35 | 36 | ## Wrapping up 37 | 38 | If you've reached the end of this tutorial without any problems, you should now know what your processor architecture is! 39 | 40 | --- 41 | 42 | ## What is your Mac's processor architecture? 43 | 44 | - [[32 bit->Download and unzip 32 bit version on a Mac]] 45 | - [[64 bit->Download and unzip 64 bit version on a Mac]] 46 | - [[I don't know->Determine processor architecture on a Mac - Troubleshooting]] 47 | -------------------------------------------------------------------------------- /contents/mac/download_64_bit_version.tw2: -------------------------------------------------------------------------------- 1 | ::Download and unzip 64 bit version on a Mac 2 | # Downloading Exercism on your Mac 3 | 4 | Now that we've found out that you run on a 64-bit processor architecture. Let's now download Exercism. 5 | 6 | --- 7 | 8 | ## Step 1 9 | 10 | Open your browser and navigate to this page: 11 | 12 | ``` 13 | https://github.com/exercism/cli/releases/latest 14 | ``` 15 | 16 | To verify you are on the correct page, you must see a Downloads list when you scroll down. 17 | 18 | ![Downloads list](WALKTHROUGH_ASSETS_PATH/downloads_list.png) 19 | 20 | ## Step 2 21 | 22 | On the downloads list, click on the file named: 23 | 24 | ``` 25 | BINARY_NAME-darwin-x86_64.tar.gz 26 | ``` 27 | 28 | Clicking on it downloads the file. 29 | 30 | If you're unable to find it, here it is on the downloads list: 31 | 32 | ![64-bit download](WALKTHROUGH_ASSETS_PATH/mac/64_bit_download.png) 33 | 34 | To verify whether you've downloaded the right file, you should see the following file in your `Downloads` folder: 35 | 36 | ``` 37 | BINARY_NAME-darwin-x86_64.tar.gz 38 | ``` 39 | 40 | ## Step 3 41 | 42 | Double click on `BINARY_NAME-darwin-x86_64.tar.gz` in order to extract it. 43 | 44 | To determine whether you've correctly extracted it, you must see a file named `BINARY_NAME` appear. 45 | 46 | To illustrate, your `Downloads` folder should somewhat appear as this: 47 | 48 | ![Exercism extracted](WALKTHROUGH_ASSETS_PATH/mac/exercism_extracted.png) 49 | 50 | ## Wrapping up 51 | 52 | If you've reached the end of this tutorial without any problems, you should've the Exercism program in your `Downloads` folder! 53 | 54 | --- 55 | 56 | ## Were you able to get the Exercism program in your `Downloads` folder? 57 | 58 | - [[Yes->Create bin folder on a Mac]] 59 | - [[No->Download and unzip 64 bit version on a Mac - Troubleshooting]] 60 | -------------------------------------------------------------------------------- /Gemfile.lock: -------------------------------------------------------------------------------- 1 | GEM 2 | remote: https://rubygems.org/ 3 | specs: 4 | builder (3.2.4) 5 | coffee-script (2.4.1) 6 | coffee-script-source 7 | execjs 8 | coffee-script-source (1.12.2) 9 | execjs (2.8.1) 10 | ffi (1.15.5) 11 | ffi (1.15.5-x64-mingw32) 12 | ffi (1.15.5-x86-mingw32) 13 | filewatcher (0.5.4) 14 | trollop (~> 2.0) 15 | graph (2.11.0) 16 | haml (4.0.7) 17 | tilt 18 | libv8 (3.16.14.19) 19 | mini_portile2 (2.8.6) 20 | minitest (5.16.3) 21 | nokogiri (1.16.4) 22 | mini_portile2 (~> 2.8.2) 23 | racc (~> 1.4) 24 | nokogiri (1.16.4-x64-mingw32) 25 | racc (~> 1.4) 26 | nokogiri (1.16.4-x86-mingw32) 27 | racc (~> 1.4) 28 | racc (1.7.3) 29 | rake (13.0.6) 30 | rb-fsevent (0.11.2) 31 | rb-inotify (0.10.1) 32 | ffi (~> 1.0) 33 | ref (2.0.0) 34 | sass (3.7.4) 35 | sass-listen (~> 4.0.0) 36 | sass-listen (4.0.0) 37 | rb-fsevent (~> 0.9, >= 0.9.4) 38 | rb-inotify (~> 0.9, >= 0.9.7) 39 | therubyracer (0.12.3) 40 | libv8 (~> 3.16.14.15) 41 | ref 42 | thor (0.20.3) 43 | tilt (2.0.11) 44 | trollop (2.9.10) 45 | twee2 (0.5.0) 46 | builder (~> 3.2, >= 3.2.2) 47 | bundler (~> 1.6) 48 | coffee-script (~> 2.4, >= 2.4.1) 49 | coffee-script-source (~> 1.9, >= 1.9.1.1) 50 | execjs (~> 2.6, >= 2.6.0) 51 | filewatcher (~> 0.5, >= 0.5.2) 52 | haml (~> 4.0, >= 4.0.7) 53 | nokogiri (~> 1.6, >= 1.6.6.2) 54 | sass (~> 3.2, >= 3.2.19) 55 | thor (~> 0.19, >= 0.19.1) 56 | tilt (~> 2.0, >= 2.0.1) 57 | trollop (~> 2.1, >= 2.1.2) 58 | 59 | PLATFORMS 60 | ruby 61 | x64-mingw32 62 | x86-mingw32 63 | 64 | DEPENDENCIES 65 | graph 66 | minitest 67 | rake 68 | therubyracer 69 | twee2 70 | 71 | BUNDLED WITH 72 | 1.17.2 73 | -------------------------------------------------------------------------------- /contents/mac/opening_the_terminal.tw2: -------------------------------------------------------------------------------- 1 | ::Opening the Terminal on a Mac 2 | # Opening the Terminal on a Mac 3 | 4 | The first step in installing Exercism is opening the terminal on your Mac. The terminal is a program which allows us to send commands to our computer via text. 5 | 6 | Let's get started by opening the terminal! 7 | 8 | --- 9 | 10 | ## Step 1: Opening Spotlight Access 11 | 12 | To open Spotlight Access, click the magnifying glass on the top right corner of your screen. 13 | 14 | ![Clicking the magnifying glass](WALKTHROUGH_ASSETS_PATH/mac/clicking_the_magnifying_glass.png) 15 | 16 | To confirm whether Spotlight Access was successfully opened, you should see a search bar appear on your screen. When it appears, try typing into it, too! 17 | 18 | ![Spotlight access](WALKTHROUGH_ASSETS_PATH/mac/spotlight_access.png) 19 | 20 | ## Step 2 21 | 22 | To open the terminal, type in the following text into Spotlight Access: 23 | 24 | ``` 25 | terminal 26 | ``` 27 | 28 | > Sidenote: This tutorial contains more of these. Whenever you see text surrounded by a box, it means that you need to type in or copy and paste the text in the box. We recommend the latter to avoid typos. 29 | 30 | ![Typing terminal](WALKTHROUGH_ASSETS_PATH/mac/typing_terminal.gif) 31 | 32 | After typing in the command, hit the `Enter` key. 33 | 34 | To confirm whether the terminal was successfully opened, you should see a new window appear on your screen. 35 | 36 | ![Terminal](WALKTHROUGH_ASSETS_PATH/mac/terminal.png) 37 | 38 | ## Wrapping up 39 | 40 | If you've reached the end of this tutorial without any problems, you've successfully opened the terminal! You could try typing into it and see how you could send commands to your computer. 41 | 42 | --- 43 | 44 | ## Were you able to open the terminal? 45 | 46 | - [[Yes->Verifying Homebrew Installation]] 47 | - [[No->Open the Terminal on a Mac - Troubleshooting]] 48 | -------------------------------------------------------------------------------- /contents/windows/add_to_path.tw2: -------------------------------------------------------------------------------- 1 | ::Moving BINARY_NAME to PATH on Windows 10 2 | # Moving the Exercism CLI to the right folder on Windows 10 3 | 4 | To make the Exercism CLI usable on your computer, we need to move the `BINARY_NAME` executable file to the correct folder. Using the Command Prompt we just opened, we are going to open the folder. 5 | 6 | ## Step 1: Opening the right folder 7 | 8 | In the Command Prompt window, copy & paste: 9 | 10 | ``` 11 | start "" "%LOCALAPPDATA%\Microsoft\WindowsApps" 12 | ``` 13 | 14 | and hit the 'Enter' key. 15 | 16 | A new window, showing a folder, will show up. This is where we need to place the `BINARY_NAME` file. It will look something like this, but it might not be empty for you. 17 | 18 | ![cmd.exe folder](WALKTHROUGH_ASSETS_PATH/windows/win10-cmd-folder.png) 19 | 20 | 21 | ## Step 2: Moving the `BINARY_NAME` file 22 | 23 | Find the `BINARY_NAME` file in the folder we opened earlier, when we downloaded `BINARY_NAME`. From this folder, drag the file (or copy & paste it) to the folder we just opened, labeled `WindowsApps`. 24 | 25 | In the `WindowsApps` folder, you should now see the `BINARY_NAME` file. It will look something like this: 26 | 27 | ![cmd.exe folder](WALKTHROUGH_ASSETS_PATH/windows/win10-result.png) 28 | 29 | 30 | ## Step 3: Verify installation 31 | 32 | Now that we moved the file, we need to check our installation. Open up the Command Prompt window again, and type (or copy & paste): 33 | 34 | ``` 35 | BINARY_NAME 36 | ``` 37 | 38 | and hit the 'Enter' key. 39 | 40 | After hitting the `Enter` key, the Command Prompt should reply with how the `BINARY_NAME` command can be used. 41 | 42 | ![Exercism usage](WALKTHROUGH_ASSETS_PATH/windows/win10-installed.png) 43 | 44 | > Sidenote: As you get the hang of the Exercism CLI, you'll get to know more about its commands. 45 | 46 | --- 47 | 48 | ## Have you installed the Exercism CLI on your computer? 49 | 50 | - [[Yes->CLI Installation complete]] 51 | - [[No->Download CLI Installer for Windows]] 52 | -------------------------------------------------------------------------------- /contents/mac/create_bin_folder.tw2: -------------------------------------------------------------------------------- 1 | ::Create bin folder on a Mac 2 | # Create bin folder on a Mac 3 | 4 | In order to place the Exercism program cleanly in our computer, let's create a folder named `bin` in order to house it. 5 | 6 | --- 7 | 8 | ## Step 1 9 | 10 | In your terminal, paste in the following to create the `bin` folder: 11 | 12 | ``` 13 | mkdir -p ~/bin 14 | ``` 15 | 16 | ![Create bin](WALKTHROUGH_ASSETS_PATH/mac/create_bin.png) 17 | 18 | To verify if the `bin` folder is created, paste the following command in your terminal: 19 | 20 | ``` 21 | if [ -d ~/bin ]; then echo "folder created"; else echo "folder not created"; fi 22 | ``` 23 | 24 | ### Folder created 25 | 26 | Your terminal should reply with the following message when the folder was created: 27 | 28 | ![Folder created](WALKTHROUGH_ASSETS_PATH/mac/folder_created.png) 29 | 30 | ### Folder not created 31 | 32 | Your terminal should reply with the following message when the folder was not created: 33 | 34 | ![Folder not created](WALKTHROUGH_ASSETS_PATH/mac/folder_not_created.png) 35 | 36 | ## Step 2 37 | 38 | Once the folder was created, paste in the following command in your terminal to move the BINARY_NAME program to the `bin` folder: 39 | 40 | ``` 41 | mv ~/Downloads/BINARY_NAME ~/bin 42 | ``` 43 | 44 | To verify whether you've moved the BINARY_NAME program correctly, paste in the following command to your terminal: 45 | 46 | ``` 47 | if [ -f ~/bin/BINARY_NAME ]; then echo "file moved"; else echo "file not moved"; fi 48 | ``` 49 | 50 | ### File moved 51 | 52 | After pasting in the command, your terminal must reply with `file moved` if the file was moved. 53 | 54 | ### File not moved 55 | 56 | After pasting in the command, your terminal must reply with `file not moved` if the file was moved. 57 | 58 | ## Wrapping up 59 | 60 | If you've reached the end of this tutorial without any problems, you should've created a `bin` folder and moved the BINARY_NAME program into it! 61 | 62 | --- 63 | 64 | ## Were you able to move the BINARY_NAME program to your `bin` folder? 65 | 66 | - [[Yes->Add to $PATH on a Mac]] 67 | - [[No->Create bin folder on a Mac - Troubleshooting]] 68 | -------------------------------------------------------------------------------- /contents/mac/verifying_homebrew_installation.tw2: -------------------------------------------------------------------------------- 1 | ::Verifying Homebrew Installation 2 | # Installing Homebrew on a Mac 3 | 4 | Great! Now that you've opened the terminal on your Mac, we need to install Homebrew next. Homebrew is a package manager for the Mac, and installing it makes the whole Exercism installation process easier. If you want to Exercism manually, [[Manual Installation on a Mac->Manual Installation on a Mac]] would be helpful. 5 | 6 | Since Homebrew is pretty common on Macs, let's first verify whether you have it on your computer. 7 | 8 | --- 9 | 10 | ## Step 1 11 | 12 | To verify if homebrew is installed, type in the following text into your terminal: 13 | 14 | ``` 15 | brew 16 | ``` 17 | 18 | > Sidenote: This tutorial contains more of these. Whenever you see text surrounded by a box, it means that you need to type in or copy and paste the text in the box. We recommend the latter to avoid typos. 19 | 20 | 21 | ![Clicking the magnifying glass](WALKTHROUGH_ASSETS_PATH/mac/clicking_the_magnifying_glass.png) 22 | 23 | After typing in the command, hit the `Enter` key. 24 | 25 | After hitting the `Enter` key, your terminal should give you a reply. 26 | 27 | ### Homebrew is not installed 28 | 29 | When you see the following reply, it means that Homebrew isn't installed on your Mac yet. 30 | 31 | ![Homebrew not installed](WALKTHROUGH_ASSETS_PATH/mac/homebrew_not_installed.png) 32 | 33 | > Sidenote: This reply means that the terminal doesn't understand the `brew` command. Your terminal may reply with a different text, but if it means that the `brew` command isn't understood, it still means that homebrew isn't installed. 34 | 35 | ### Homebrew is installed 36 | 37 | When you see the following reply, it means that Homebrew is installed. 38 | 39 | ![Homebrew installed](WALKTHROUGH_ASSETS_PATH/mac/homebrew_installed.png) 40 | 41 | > Sidenote: This reply means that the terminal understands the `brew` command. Your terminal replies with examples of how the `brew` command can be used. Again, the text can vary from terminal to terminal, but the underlying principle should be that the terminal understands the `brew` command. 42 | 43 | ## Wrapping up 44 | 45 | If you've reached the end of this tutorial, you should be able to determine whether you've installed Homebrew or not. 46 | 47 | --- 48 | 49 | ## Do you have Homebrew installed? 50 | 51 | - [[Yes->Installing Exercism via Homebrew]] 52 | - [[No->Installing Homebrew]] 53 | -------------------------------------------------------------------------------- /contents/mac/install_exercism_via_homebrew.tw2: -------------------------------------------------------------------------------- 1 | ::Installing Exercism via Homebrew 2 | # Installing Exercism via Homebrew 3 | 4 | You've made it to the last step! Since we've got the parts to install Exercism, it shouldn't be long before you start your learning journey with Exercism. 5 | 6 | 7 | --- 8 | 9 | ## Step 1 10 | 11 | Paste in the following text into your terminal: 12 | 13 | ``` 14 | brew install BINARY_NAME 15 | ``` 16 | 17 | ![Installing Exercism](WALKTHROUGH_ASSETS_PATH/mac/installing_exercism.gif) 18 | 19 | After typing in the command, hit the `Enter` key. 20 | 21 | ### Installation started 22 | 23 | After hitting the `Enter` key, you should see that the terminal starts to install Exercism. Since this proccess takes time, we need to wait until it finishes. 24 | 25 | ![Confirming installation](WALKTHROUGH_ASSETS_PATH/mac/confirming_installation.png) 26 | 27 | ### Installation finished 28 | 29 | The installation is finished once you see this message on your terminal: 30 | 31 | ![Pouring](WALKTHROUGH_ASSETS_PATH/mac/pouring.png) 32 | 33 | > Sidenote: The message on your terminal doesn't need to exactly match the screenshot. If you see the message "Pouring...", that should be enough. 34 | 35 | ### Installation taking too long 36 | 37 | If your installation is taking too long, we recommend checking your internet connection. If your internet connection is up, we recommend trying to run the command again. It might work this time! 38 | 39 | ## Step 2 40 | 41 | In order to verify whether BINARY_NAME was successfully installed, paste the following text into your terminal. 42 | 43 | ``` 44 | BINARY_NAME 45 | ``` 46 | 47 | After typing in the command, hit the `Enter` key. 48 | 49 | ### Installation successful 50 | 51 | After hitting the `Enter` key, the terminal should reply with how the `BINARY_NAME` command can be used. 52 | 53 | ![Exercism usage](WALKTHROUGH_ASSETS_PATH/mac/exercism_usage.png) 54 | 55 | > Sidenote: As you get the hang of Exercism, you'll get to know more about the commands. 56 | 57 | ### Installation unsuccessful 58 | 59 | After hitting the `Enter` key, the terminal still doesn't recognize the `BINARY_NAME` command. 60 | 61 | ![Exercism not installed](WALKTHROUGH_ASSETS_PATH/mac/exercism_not_installed.png) 62 | 63 | > Sidenote: The messages might vary per computer, but if the message you receive means that the terminal couldn't understand the `BINARY_NAME` command, you have to try installing again. 64 | 65 | If you've encountered this, we recommend trying to install again. It might work this time! 66 | 67 | ## Wrapping up 68 | 69 | Once you've reached the end of this tutorial, you should've installed Exercism on your computer. 70 | 71 | --- 72 | 73 | ## Have you installed Exercism on your computer? 74 | 75 | - [[Yes->CLI Installation complete]] 76 | - [[No->Installing Exercism via Homebrew - Troubleshooting]] 77 | -------------------------------------------------------------------------------- /contents/mac/install_homebrew.tw2: -------------------------------------------------------------------------------- 1 | ::Installing Homebrew 2 | # Installing Homebrew 3 | 4 | If you would like to read more on Homebrew before installing it, the Homebrew webpage is a good resource. 5 | 6 | --- 7 | 8 | ## Step 1 9 | 10 | Paste in the following text into your terminal: 11 | 12 | ``` 13 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 14 | ``` 15 | 16 | After typing in the command, hit the `Enter` key. 17 | 18 | ## Step 2 19 | 20 | ```none 21 | $ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" 22 | ==> Checking for `sudo` access (which may request your password)... 23 | Password: 24 | ``` 25 | 26 | Type in your password and hit `Enter`. 27 | 28 | > Sidenote: If it is your first time doing this, you might be confused that as you are typing, nothing appears. 29 | > This is a security feature of the terminal. 30 | > Just keep on typing and press `Enter` when you finish. 31 | 32 | ### Incorrect password was typed in 33 | 34 | You will see a message that an incorrect password was typed in. 35 | First, try to verify if you have typed your password correctly. 36 | If it still doesn't work, it may be the case that the password you have isn't the administrator's password. 37 | It would be good to ask your administrator to put in the password for you. 38 | 39 | ### Correct password was typed in 40 | 41 | Your terminal should now reply saying that the `homebrew` installation has started. 42 | 43 | ## Step 3 44 | 45 | After hitting the `Enter` key, you should see that the terminal prompts you to confirm installation. 46 | 47 | > Sidenote: Your installation directories may be different. 48 | 49 | ```none 50 | ==> This script will install: 51 | /usr/local/bin/brew 52 | /usr/local/share/doc/homebrew 53 | /usr/local/share/man/man1/brew.1 54 | /usr/local/share/zsh/site-functions/_brew 55 | /usr/local/etc/bash_completion.d/brew 56 | /usr/local/Homebrew 57 | ==> The following existing directories will be made writable by user only: 58 | /usr/local/share/zsh 59 | /usr/local/share/zsh/site-functions 60 | ==> The following existing directories will have their owner set to glennj: 61 | /usr/local/share/zsh 62 | /usr/local/share/zsh/site-functions 63 | ==> The following existing directories will have their group set to admin: 64 | /usr/local/share/zsh 65 | /usr/local/share/zsh/site-functions 66 | 67 | Press RETURN/ENTER to continue or any other key to abort: 68 | ``` 69 | 70 | Hit the `Enter` key to confirm the `homebrew` installation. 71 | 72 | ## Step 4 73 | 74 | Since `homebrew` is still installing at this point, the only need thing we need to do is wait. 75 | It may take at most 5 minutes. 76 | 77 | ### Installation is successful 78 | 79 | After waiting, your terminal must respond with a message saying that the Homebrew installation is complete. 80 | It may look something like this: 81 | 82 | ```none 83 | ==> Installation successful! 84 | 85 | ==> Homebrew has enabled anonymous aggregate formulae and cask analytics. 86 | Read the analytics documentation (and how to opt-out) here: 87 | https://docs.brew.sh/Analytics 88 | No analytics data has been sent yet (nor will any be during this install run). 89 | 90 | ==> Homebrew is run entirely by unpaid volunteers. Please consider donating: 91 | https://github.com/Homebrew/brew#donations 92 | 93 | ==> Next steps: 94 | - Run brew help to get started 95 | - Further documentation: 96 | https://docs.brew.sh 97 | ``` 98 | 99 | ### Installation is not successful 100 | 101 | If you don't seem to see a message confirming that homebrew is installed, we first recommend to check whether your internet connection is up. 102 | The installation process requires it. 103 | If your connection is up, we recommend running the install process again. 104 | 105 | ## Wrapping up 106 | 107 | Once you have reached the end of this tutorial, you should have installed Homebrew on your computer. 108 | 109 | --- 110 | 111 | ## Were you able to install Homebrew? 112 | - [[Yes->Installing Exercism via Homebrew]] 113 | - [[I don't know->Verifying Homebrew Installation]] 114 | - [[No->Talk to a Volunteer]] 115 | -------------------------------------------------------------------------------- /CODE_OF_CONDUCT.md: -------------------------------------------------------------------------------- 1 | # Code of Conduct 2 | 3 | ## Introduction 4 | 5 | Exercism is a platform centered around empathetic conversation. 6 | We have a low tolerance for communication that makes anyone feel unwelcome, unsupported, insulted or discriminated against. 7 | 8 | ## Seen or experienced something uncomfortable? 9 | 10 | If you see or experience abuse, harassment, discrimination, or feel unsafe or upset, please email [abuse@exercism.org](mailto:abuse@exercism.org?subject=%5BCoC%5D) and include \[CoC\] in the subject line. 11 | We will follow up with you as a priority. 12 | 13 | ## Enforcement 14 | 15 | We actively monitor for Code of Conduct (CoC) violations and take any reports of violations extremely seriously. 16 | We have banned contributors, mentors and users due to violations. 17 | 18 | After we receive a report of a CoC violation, we view that person's conversation history on Exercism and related communication channels and attempt to understand whether someone has deliberately broken the CoC, or accidentally crossed a line. 19 | We generally reach out to the person who has been reported to discuss any concerns we have and warn them that repeated violations will result in a ban. 20 | Sometimes we decide that no violation has occurred and that no action is required and sometimes we will also ban people on a first offense. 21 | We strive to be fair, but will err on the side of protecting the culture of our community. 22 | 23 | Exercism's leadership reserve the right to take whatever action they feel appropriate with regards to CoC violations. 24 | 25 | ## The simple version 26 | 27 | - Be empathetic 28 | - Be welcoming 29 | - Be kind 30 | - Be honest 31 | - Be supportive 32 | - Be polite 33 | 34 | ## The details 35 | 36 | Exercism should be a safe place for everybody regardless of 37 | 38 | - Gender, gender identity or gender expression 39 | - Sexual orientation 40 | - Disability 41 | - Physical appearance (including but not limited to body size) 42 | - Race 43 | - Age 44 | - Religion 45 | - Anything else you can think of 46 | 47 | As someone who is part of this community, you agree that: 48 | 49 | - We are collectively and individually committed to safety and inclusivity 50 | - We have zero tolerance for abuse, harassment, or discrimination 51 | - We respect people’s boundaries and identities 52 | - We refrain from using language that can be considered offensive or oppressive (systemically or otherwise), eg. sexist, racist, homophobic, transphobic, ableist, classist, etc. 53 | - this includes (but is not limited to) various slurs. 54 | - We avoid using offensive topics as a form of humor 55 | 56 | We actively work towards: 57 | 58 | - Being a safe community 59 | - Cultivating a network of support & encouragement for each other 60 | - Encouraging responsible and varied forms of expression 61 | 62 | We condemn: 63 | 64 | - Stalking, doxxing, or publishing private information 65 | - Violence, threats of violence or violent language 66 | - Anything that compromises people’s safety 67 | - Conduct or speech which might be considered sexist, racist, homophobic, transphobic, ableist or otherwise discriminatory or offensive in nature 68 | - The use of unwelcome, suggestive, derogatory or inappropriate nicknames or terms 69 | - Disrespect towards others (jokes, innuendo, dismissive attitudes) and towards differences of opinion 70 | - Intimidation or harassment (online or in-person). 71 | Please read the [Citizen Code of Conduct](https://github.com/stumpsyn/policies/blob/master/citizen_code_of_conduct.md) for how we interpret harassment 72 | - Inappropriate attention or contact 73 | - Not understanding the differences between constructive criticism and disparagement 74 | 75 | These things are NOT OK. 76 | 77 | Be aware of how your actions affect others. 78 | If it makes someone uncomfortable, stop. 79 | 80 | If you say something that is found offensive, and you are called out on it, try to: 81 | 82 | - Listen without interruption 83 | - Believe what the person is saying & do not attempt to disqualify what they have to say 84 | - Ask for tips / help with avoiding making the offense in the future 85 | - Apologize and ask forgiveness 86 | 87 | ## History 88 | 89 | This policy was initially adopted from the Front-end London Slack community and has been modified since. 90 | A version history can be seen on [GitHub](https://github.com/exercism/website-copy/edit/main/pages/code_of_conduct.md). 91 | 92 | _This policy is a "living" document, and subject to refinement and expansion in the future. 93 | This policy applies to the Exercism website, the Exercism GitHub organization, any other Exercism-related communication channels (e.g. Discord, Forum, Twitter, email) and any other Exercism entity or event._ 94 | -------------------------------------------------------------------------------- /.github/labels.yml: -------------------------------------------------------------------------------- 1 | # --------------------------------------------------------------- # 2 | # This is an auto-generated file - Do not manually edit this file # 3 | # --------------------------------------------------------------- # 4 | 5 | # This file is automatically generated by concatenating two files: 6 | # 7 | # 1. The Exercism-wide labels: defined in https://github.com/exercism/org-wide-files/blob/main/global-files/.github/labels.yml 8 | # 2. The repository-specific labels: defined in the `.appends/.github/labels.yml` file within this repository. 9 | # 10 | # If any of these two files change, a pull request is automatically created containing a re-generated version of this file. 11 | # Consequently, to change repository-specific labels you should update the `.appends/.github/labels.yml` file and _not_ this file. 12 | # 13 | # When the pull request has been merged, the GitHub labels will be automatically updated by the "Sync labels" workflow. 14 | # This typically takes 5-10 minutes. 15 | 16 | # --------------------------------------------------------------------- # 17 | # These are the Exercism-wide labels which are shared across all repos. # 18 | # --------------------------------------------------------------------- # 19 | 20 | # The following Exercism-wide labels are used to show "tasks" on the website, which will point users to things they can contribute to. 21 | 22 | # The `x:action/` labels describe what sort of work the contributor will be engaged in when working on the issue 23 | - name: "x:action/create" 24 | description: "Work on something from scratch" 25 | color: "ffffff" 26 | 27 | - name: "x:action/fix" 28 | description: "Fix an issue" 29 | color: "ffffff" 30 | 31 | - name: "x:action/improve" 32 | description: "Improve existing functionality/content" 33 | color: "ffffff" 34 | 35 | - name: "x:action/proofread" 36 | description: "Proofread text" 37 | color: "ffffff" 38 | 39 | - name: "x:action/sync" 40 | description: "Sync content with its latest version" 41 | color: "ffffff" 42 | 43 | # The `x:knowledge/` labels describe how much Exercism knowledge is required by the contributor 44 | - name: "x:knowledge/none" 45 | description: "No existing Exercism knowledge required" 46 | color: "ffffff" 47 | 48 | - name: "x:knowledge/elementary" 49 | description: "Little Exercism knowledge required" 50 | color: "ffffff" 51 | 52 | - name: "x:knowledge/intermediate" 53 | description: "Quite a bit of Exercism knowledge required" 54 | color: "ffffff" 55 | 56 | - name: "x:knowledge/advanced" 57 | description: "Comprehensive Exercism knowledge required" 58 | color: "ffffff" 59 | 60 | # The `x:module/` labels indicate what part of Exercism the contributor will be working on 61 | - name: "x:module/analyzer" 62 | description: "Work on Analyzers" 63 | color: "ffffff" 64 | 65 | - name: "x:module/concept" 66 | description: "Work on Concepts" 67 | color: "ffffff" 68 | 69 | - name: "x:module/concept-exercise" 70 | description: "Work on Concept Exercises" 71 | color: "ffffff" 72 | 73 | - name: "x:module/generator" 74 | description: "Work on Exercise generators" 75 | color: "ffffff" 76 | 77 | - name: "x:module/practice-exercise" 78 | description: "Work on Practice Exercises" 79 | color: "ffffff" 80 | 81 | - name: "x:module/representer" 82 | description: "Work on Representers" 83 | color: "ffffff" 84 | 85 | - name: "x:module/test-runner" 86 | description: "Work on Test Runners" 87 | color: "ffffff" 88 | 89 | # The `x:rep/` labels describe the amount of reputation to award 90 | # 91 | # For more information on reputation and how these labels should be used, 92 | # check out https://exercism.org/docs/using/product/reputation 93 | - name: "x:rep/tiny" 94 | description: "Tiny amount of reputation" 95 | color: "ffffff" 96 | 97 | - name: "x:rep/small" 98 | description: "Small amount of reputation" 99 | color: "ffffff" 100 | 101 | - name: "x:rep/medium" 102 | description: "Medium amount of reputation" 103 | color: "ffffff" 104 | 105 | - name: "x:rep/large" 106 | description: "Large amount of reputation" 107 | color: "ffffff" 108 | 109 | - name: "x:rep/massive" 110 | description: "Massive amount of reputation" 111 | color: "ffffff" 112 | 113 | # The `x:size/` labels describe the expected amount of work for a contributor 114 | - name: "x:size/tiny" 115 | description: "Tiny amount of work" 116 | color: "ffffff" 117 | 118 | - name: "x:size/small" 119 | description: "Small amount of work" 120 | color: "ffffff" 121 | 122 | - name: "x:size/medium" 123 | description: "Medium amount of work" 124 | color: "ffffff" 125 | 126 | - name: "x:size/large" 127 | description: "Large amount of work" 128 | color: "ffffff" 129 | 130 | - name: "x:size/massive" 131 | description: "Massive amount of work" 132 | color: "ffffff" 133 | 134 | # The `x:status/` label indicates if there is already someone working on the issue 135 | - name: "x:status/claimed" 136 | description: "Someone is working on this issue" 137 | color: "ffffff" 138 | 139 | # The `x:type/` labels describe what type of work the contributor will be engaged in 140 | - name: "x:type/ci" 141 | description: "Work on Continuous Integration (e.g. GitHub Actions workflows)" 142 | color: "ffffff" 143 | 144 | - name: "x:type/coding" 145 | description: "Write code that is not student-facing content (e.g. test-runners, generators, but not exercises)" 146 | color: "ffffff" 147 | 148 | - name: "x:type/content" 149 | description: "Work on content (e.g. exercises, concepts)" 150 | color: "ffffff" 151 | 152 | - name: "x:type/docker" 153 | description: "Work on Dockerfiles" 154 | color: "ffffff" 155 | 156 | - name: "x:type/docs" 157 | description: "Work on Documentation" 158 | color: "ffffff" 159 | 160 | # This Exercism-wide label is added to all automatically created pull requests that help migrate/prepare a track for Exercism v3 161 | - name: "v3-migration 🤖" 162 | description: "Preparing for Exercism v3" 163 | color: "e99695" 164 | 165 | # This Exercism-wide label can be used to bulk-close issues in preparation for pausing community contributions 166 | - name: "paused" 167 | description: "Work paused until further notice" 168 | color: "e4e669" 169 | 170 | # ----------------------------------------------------------------------------------------- # 171 | # These are the repository-specific labels that augment the Exercise-wide labels defined in # 172 | # https://github.com/exercism/org-wide-files/blob/main/global-files/.github/labels.yml. # 173 | # ----------------------------------------------------------------------------------------- # 174 | 175 | - name: "dependencies" 176 | description: "Pull requests that update a dependency file" 177 | color: "0366d6" 178 | 179 | - name: "duplicate" 180 | description: "" 181 | color: "cccccc" 182 | 183 | - name: "invalid" 184 | description: "" 185 | color: "e6e6e6" 186 | 187 | - name: "priority/blocking-v2-launch" 188 | description: "" 189 | color: "BFE3DF" 190 | 191 | - name: "priority/maybe-later" 192 | description: "" 193 | color: "BFE3DF" 194 | 195 | - name: "priority/nice-to-have-for-v2" 196 | description: "" 197 | color: "BFE3DF" 198 | 199 | - name: "question" 200 | description: "" 201 | color: "cc317c" 202 | 203 | - name: "status/pr-welcome" 204 | description: "" 205 | color: "128A0C" 206 | 207 | - name: "type/bug" 208 | description: "" 209 | color: "ee0701" 210 | 211 | - name: "type/improvement" 212 | description: "" 213 | color: "bfd4f2" 214 | 215 | - name: "wontfix" 216 | description: "" 217 | color: "ffffff" 218 | -------------------------------------------------------------------------------- /CONTRIBUTING.md: -------------------------------------------------------------------------------- 1 | # Contributing to the Exercism CLI installation walkthrough 2 | 3 | First off all, thank you for taking the time to contribute! 4 | 5 | # Table of Contents 6 | 7 | * [Code of Conduct](#code-of-conduct) 8 | * [What is the walkthrough?](#what-is-the-walkthrough?) 9 | * [How can I help?](#how-can-i-help?) 10 | * [How do I start contributing?](#how-do-i-start-contributing) 11 | * [Submitting Code Changes](#submitting-code-changes) 12 | - [Git Workflow](#git-workflow) 13 | - [Issues](#issues) 14 | - [Pull Requests](#pull-requests) 15 | - [Development Workflow](#development-workflow) 16 | 17 | ## Code of Conduct 18 | 19 | Help us keep exercism welcoming. Please read and abide by the [Code of Conduct][coc]. 20 | 21 | ## What is the walkthrough? 22 | 23 | ### Background 24 | 25 | Looking at the data, we noticed that a significant number of users have never 26 | completed a single exercise on exercism. We believe this is because setting it up 27 | isn't easy. This walkthrough aims to solve that. 28 | 29 | The goal of the walkthrough is to guide users through the many steps of 30 | installing the Exercism command-line client (CLI), which is a prerequisite to 31 | doing exercises on the site. 32 | 33 | ### Structure 34 | 35 | The walkthrough is structured in the following way: 36 | 37 | 1. To prevent users from getting lost, the walkthrough is a step by step guide. 38 | 1. At the end of each step, the user must be able to confirm whether they've 39 | done the step correctly. This should prevent users from installing incomplete 40 | packages which may lead to harder troubleshooting in the future. 41 | 1. When the user encounters a problem during a step, the user should be given 42 | steps to self-diagnose or troubleshoot the problem on their own. 43 | 44 | ## How can I help? 45 | 46 | You can help by: 47 | 48 | 1. Giving feedback on the walkthrough. In particular: 49 | * **Did the instructions match your experience?** 50 | * **Are any steps confusing?** 51 | * **Did we miss any steps?** 52 | 1. Writing better instructions. If you have a better way to describe a step in 53 | mind, a PR submission would be greatly appreciated. 54 | 1. Looking through the issues and submitting a patch. We're tracking bugs and 55 | upcoming features in this repository's issue tracker. 56 | 57 | ## How do I start contributing? 58 | 59 | ### Installing the walkthrough 60 | 61 | 1. Clone the repository. 62 | 63 | ``` 64 | $ git clone https://github.com/exercism/interactive-cli-walkthrough 65 | ``` 66 | 67 | 2. Inside the repository's directory, run the following command: 68 | 69 | ``` 70 | $ bundle 71 | ``` 72 | 73 | ### Writing workflow 74 | 75 | #### Steps 76 | 77 | ##### Format 78 | 79 | Each step is written in Markdown and Twee-style. If you haven't used Markdown before, we recommend looking at this [tutorial][markdown]. If you haven't used Twee2 yet, this is the [project documentation](https://dan-q.github.io/twee2/documentation.html) 80 | 81 | Steps should be saved with the `*.tw2` file extension. 82 | 83 | ##### Adding steps 84 | 85 | In order to add a step, you must first add it to the table of contents. The 86 | table of contents is the file named [table_of_contents.tw2](table_of_contents.tw2). 87 | 88 | ##### Table of contents 89 | 90 | To further explain the table of contents' structure, let's take a look at an 91 | example: 92 | 93 | ``` 94 | ::StoryIncludes 95 | 96 | common/step_1.tw2 97 | common/step_2.tw2 98 | ``` 99 | 100 | The first line, `::StoryIncludes`, is a special command which doesn't need to 101 | be changed. 102 | 103 | The consecutive lines tell the table of contents that we have two steps, 104 | `common/step_1.tw2` and `common/step_2.tw2`. These steps are located inside 105 | the `common/` directory and have the file names `step_1.tw2` and `step_2.tw2`, 106 | respectively. 107 | 108 | If we want to add a third step, `step_3.tw2`, located inside the `mac/` 109 | directory, we write the table of contents this way: 110 | 111 | ``` 112 | ::StoryIncludes 113 | 114 | common/step_1.tw2 115 | common/step_2.tw2 116 | mac/step_3.tw2 117 | ``` 118 | 119 | #### Additional commands 120 | 121 | To make it easy to create links between steps, two special commands are 122 | available: 123 | 124 | ##### Step title 125 | 126 | `::Link Destination` 127 | 128 | This sets a step's name as `Link Destination` which is needed in order for the 129 | link command to know what step to link to. This command is placed on the first 130 | line of the file. 131 | 132 | ##### Link 133 | 134 | `[[->]]` 135 | 136 | This creates a link with `Link Text` that links to a step entitled 137 | `Link Destination`. 138 | 139 | ##### Images 140 | 141 | In order to add your own images, you'd need to put them within the `content/assets` folder. 142 | 143 | To render the image on the page, this command is used: 144 | 145 | ``` 146 | ![Image alt](WALKTHROUGH_ASSETS_PATH/image.png) 147 | ``` 148 | 149 | The token `WALKTHROUGH_ASSETS_PATH` is needed as it points to the path of the assets folder. 150 | 151 | #### Viewing changes 152 | 153 | In order to view your changes, you need to compile the project. Compiling is 154 | done by running this command: 155 | 156 | ``` 157 | $ bundle exec rake compile 158 | ``` 159 | 160 | Compiling produces a file named `compiled.html` in the root of the repo. Open this file in your browser and you should see your changes. 161 | 162 | #### Visualizing steps 163 | 164 | If you're a bit lost of how each step links to another, you can generate the 165 | walkthrough graph. 166 | 167 | This requires Graphviz—follow the instructions for your platform on the [Graphviz Download](https://graphviz.gitlab.io/download/) page. 168 | 169 | Then run this command: 170 | 171 | ``` 172 | $ bundle exec rake graph 173 | ``` 174 | 175 | This produces a file named `graph.png`. This tool is also helpful to find broken 176 | links between steps. 177 | 178 | ### Submitting Code Changes 179 | 180 | If you're new to contributing to open source on GitHub, this next section should 181 | help you get started. If you get stuck, open an issue to ask us for help and 182 | we'll get you sorted out (and improve these instructions). 183 | 184 | ### Git Workflow 185 | 186 | 1. Fork and clone. 187 | 1. Add the upstream interactive-cli-walkthrough repository as a new remote to your clone. 188 | `git remote add upstream https://github.com/exercism/interactive-cli-walkthrough.git` 189 | 1. Create a new branch 190 | `git checkout -b name-of-branch` 191 | 1. Commit and push as usual on your branch. 192 | 1. When you're ready to submit a pull request, rebase your branch onto 193 | the upstream master so that you can resolve any conflicts: 194 | `git fetch upstream && git rebase upstream/master` 195 | You may need to push with `--force` up to your branch after resolving conflicts. 196 | 1. When you've got everything solved, push up to your branch and send the pull request as usual. 197 | 198 | ### Pull Requests 199 | 200 | When submitting a pull request, sometimes we'll ask you to make changes before 201 | we accept the patch. 202 | 203 | Please do not close the first pull request and open a second one with these 204 | changes. If you push more commits to a branch that you've opened a pull 205 | request for, it automatically updates the pull request. 206 | 207 | When the pull request is ready to be merged, you will probably be asked to [squash your commits][squash-commits]. 208 | 209 | As with adding more commits, you do not need to close your pull request and open a new one. 210 | If you change the history (rebase, squash, amend), and use git push --force to update the branch on your fork. 211 | The pull request points to that branch, not to specific commits. 212 | 213 | Here's a guide on [how to squash commits in a GitHub pull request][squash-commits]. 214 | 215 | When submitting a PR, please make sure to include the compiled HTML and the 216 | newly generated walkthrough graph. 217 | 218 | 219 | #### More information 220 | 221 | For more guidance, you are free to peek into how the installation 222 | instructions for Mac were written. 223 | 224 | #### The parser 225 | In order to parse the files, we've written a custom Twine2 story format called Exercism. It is located within `storyFormats/`. 226 | 227 | The story format code lives in [exercism/twine2-story-format](https://github.com/exercism/twine2-story-format). 228 | 229 | [coc]: https://exercism.org/code-of-conduct 230 | [table_of_contents.tw2]: https://github.com/exercism/interactive-cli-walkthrough/blob/main/table_of_contents.tw2 231 | [squash-commits]: https://blog.steveklabnik.com/posts/2012-11-08-how-to-squash-commits-in-a-github-pull-request 232 | [issues]: https://github.com/exercism/interactive-cli-walkthrough/issues 233 | [markdown]: https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet 234 | -------------------------------------------------------------------------------- /licences/cc_sa_4.md: -------------------------------------------------------------------------------- 1 | Attribution-ShareAlike 4.0 International 2 | 3 | ======================================================================= 4 | 5 | Creative Commons Corporation ("Creative Commons") is not a law firm and 6 | does not provide legal services or legal advice. Distribution of 7 | Creative Commons public licenses does not create a lawyer-client or 8 | other relationship. Creative Commons makes its licenses and related 9 | information available on an "as-is" basis. Creative Commons gives no 10 | warranties regarding its licenses, any material licensed under their 11 | terms and conditions, or any related information. Creative Commons 12 | disclaims all liability for damages resulting from their use to the 13 | fullest extent possible. 14 | 15 | Using Creative Commons Public Licenses 16 | 17 | Creative Commons public licenses provide a standard set of terms and 18 | conditions that creators and other rights holders may use to share 19 | original works of authorship and other material subject to copyright 20 | and certain other rights specified in the public license below. The 21 | following considerations are for informational purposes only, are not 22 | exhaustive, and do not form part of our licenses. 23 | 24 | Considerations for licensors: Our public licenses are 25 | intended for use by those authorized to give the public 26 | permission to use material in ways otherwise restricted by 27 | copyright and certain other rights. Our licenses are 28 | irrevocable. Licensors should read and understand the terms 29 | and conditions of the license they choose before applying it. 30 | Licensors should also secure all rights necessary before 31 | applying our licenses so that the public can reuse the 32 | material as expected. Licensors should clearly mark any 33 | material not subject to the license. This includes other CC- 34 | licensed material, or material used under an exception or 35 | limitation to copyright. More considerations for licensors: 36 | wiki.creativecommons.org/Considerations_for_licensors 37 | 38 | Considerations for the public: By using one of our public 39 | licenses, a licensor grants the public permission to use the 40 | licensed material under specified terms and conditions. If 41 | the licensor's permission is not necessary for any reason--for 42 | example, because of any applicable exception or limitation to 43 | copyright--then that use is not regulated by the license. Our 44 | licenses grant only permissions under copyright and certain 45 | other rights that a licensor has authority to grant. Use of 46 | the licensed material may still be restricted for other 47 | reasons, including because others have copyright or other 48 | rights in the material. A licensor may make special requests, 49 | such as asking that all changes be marked or described. 50 | Although not required by our licenses, you are encouraged to 51 | respect those requests where reasonable. More_considerations 52 | for the public: 53 | wiki.creativecommons.org/Considerations_for_licensees 54 | 55 | ======================================================================= 56 | 57 | Creative Commons Attribution-ShareAlike 4.0 International Public 58 | License 59 | 60 | By exercising the Licensed Rights (defined below), You accept and agree 61 | to be bound by the terms and conditions of this Creative Commons 62 | Attribution-ShareAlike 4.0 International Public License ("Public 63 | License"). To the extent this Public License may be interpreted as a 64 | contract, You are granted the Licensed Rights in consideration of Your 65 | acceptance of these terms and conditions, and the Licensor grants You 66 | such rights in consideration of benefits the Licensor receives from 67 | making the Licensed Material available under these terms and 68 | conditions. 69 | 70 | 71 | Section 1 -- Definitions. 72 | 73 | a. Adapted Material means material subject to Copyright and Similar 74 | Rights that is derived from or based upon the Licensed Material 75 | and in which the Licensed Material is translated, altered, 76 | arranged, transformed, or otherwise modified in a manner requiring 77 | permission under the Copyright and Similar Rights held by the 78 | Licensor. For purposes of this Public License, where the Licensed 79 | Material is a musical work, performance, or sound recording, 80 | Adapted Material is always produced where the Licensed Material is 81 | synched in timed relation with a moving image. 82 | 83 | b. Adapter's License means the license You apply to Your Copyright 84 | and Similar Rights in Your contributions to Adapted Material in 85 | accordance with the terms and conditions of this Public License. 86 | 87 | c. BY-SA Compatible License means a license listed at 88 | creativecommons.org/compatiblelicenses, approved by Creative 89 | Commons as essentially the equivalent of this Public License. 90 | 91 | d. Copyright and Similar Rights means copyright and/or similar rights 92 | closely related to copyright including, without limitation, 93 | performance, broadcast, sound recording, and Sui Generis Database 94 | Rights, without regard to how the rights are labeled or 95 | categorized. For purposes of this Public License, the rights 96 | specified in Section 2(b)(1)-(2) are not Copyright and Similar 97 | Rights. 98 | 99 | e. Effective Technological Measures means those measures that, in the 100 | absence of proper authority, may not be circumvented under laws 101 | fulfilling obligations under Article 11 of the WIPO Copyright 102 | Treaty adopted on December 20, 1996, and/or similar international 103 | agreements. 104 | 105 | f. Exceptions and Limitations means fair use, fair dealing, and/or 106 | any other exception or limitation to Copyright and Similar Rights 107 | that applies to Your use of the Licensed Material. 108 | 109 | g. License Elements means the license attributes listed in the name 110 | of a Creative Commons Public License. The License Elements of this 111 | Public License are Attribution and ShareAlike. 112 | 113 | h. Licensed Material means the artistic or literary work, database, 114 | or other material to which the Licensor applied this Public 115 | License. 116 | 117 | i. Licensed Rights means the rights granted to You subject to the 118 | terms and conditions of this Public License, which are limited to 119 | all Copyright and Similar Rights that apply to Your use of the 120 | Licensed Material and that the Licensor has authority to license. 121 | 122 | j. Licensor means the individual(s) or entity(ies) granting rights 123 | under this Public License. 124 | 125 | k. Share means to provide material to the public by any means or 126 | process that requires permission under the Licensed Rights, such 127 | as reproduction, public display, public performance, distribution, 128 | dissemination, communication, or importation, and to make material 129 | available to the public including in ways that members of the 130 | public may access the material from a place and at a time 131 | individually chosen by them. 132 | 133 | l. Sui Generis Database Rights means rights other than copyright 134 | resulting from Directive 96/9/EC of the European Parliament and of 135 | the Council of 11 March 1996 on the legal protection of databases, 136 | as amended and/or succeeded, as well as other essentially 137 | equivalent rights anywhere in the world. 138 | 139 | m. You means the individual or entity exercising the Licensed Rights 140 | under this Public License. Your has a corresponding meaning. 141 | 142 | 143 | Section 2 -- Scope. 144 | 145 | a. License grant. 146 | 147 | 1. Subject to the terms and conditions of this Public License, 148 | the Licensor hereby grants You a worldwide, royalty-free, 149 | non-sublicensable, non-exclusive, irrevocable license to 150 | exercise the Licensed Rights in the Licensed Material to: 151 | 152 | a. reproduce and Share the Licensed Material, in whole or 153 | in part; and 154 | 155 | b. produce, reproduce, and Share Adapted Material. 156 | 157 | 2. Exceptions and Limitations. For the avoidance of doubt, where 158 | Exceptions and Limitations apply to Your use, this Public 159 | License does not apply, and You do not need to comply with 160 | its terms and conditions. 161 | 162 | 3. Term. The term of this Public License is specified in Section 163 | 6(a). 164 | 165 | 4. Media and formats; technical modifications allowed. The 166 | Licensor authorizes You to exercise the Licensed Rights in 167 | all media and formats whether now known or hereafter created, 168 | and to make technical modifications necessary to do so. The 169 | Licensor waives and/or agrees not to assert any right or 170 | authority to forbid You from making technical modifications 171 | necessary to exercise the Licensed Rights, including 172 | technical modifications necessary to circumvent Effective 173 | Technological Measures. For purposes of this Public License, 174 | simply making modifications authorized by this Section 2(a) 175 | (4) never produces Adapted Material. 176 | 177 | 5. Downstream recipients. 178 | 179 | a. Offer from the Licensor -- Licensed Material. Every 180 | recipient of the Licensed Material automatically 181 | receives an offer from the Licensor to exercise the 182 | Licensed Rights under the terms and conditions of this 183 | Public License. 184 | 185 | b. Additional offer from the Licensor -- Adapted Material. 186 | Every recipient of Adapted Material from You 187 | automatically receives an offer from the Licensor to 188 | exercise the Licensed Rights in the Adapted Material 189 | under the conditions of the Adapter's License You apply. 190 | 191 | c. No downstream restrictions. You may not offer or impose 192 | any additional or different terms or conditions on, or 193 | apply any Effective Technological Measures to, the 194 | Licensed Material if doing so restricts exercise of the 195 | Licensed Rights by any recipient of the Licensed 196 | Material. 197 | 198 | 6. No endorsement. Nothing in this Public License constitutes or 199 | may be construed as permission to assert or imply that You 200 | are, or that Your use of the Licensed Material is, connected 201 | with, or sponsored, endorsed, or granted official status by, 202 | the Licensor or others designated to receive attribution as 203 | provided in Section 3(a)(1)(A)(i). 204 | 205 | b. Other rights. 206 | 207 | 1. Moral rights, such as the right of integrity, are not 208 | licensed under this Public License, nor are publicity, 209 | privacy, and/or other similar personality rights; however, to 210 | the extent possible, the Licensor waives and/or agrees not to 211 | assert any such rights held by the Licensor to the limited 212 | extent necessary to allow You to exercise the Licensed 213 | Rights, but not otherwise. 214 | 215 | 2. Patent and trademark rights are not licensed under this 216 | Public License. 217 | 218 | 3. To the extent possible, the Licensor waives any right to 219 | collect royalties from You for the exercise of the Licensed 220 | Rights, whether directly or through a collecting society 221 | under any voluntary or waivable statutory or compulsory 222 | licensing scheme. In all other cases the Licensor expressly 223 | reserves any right to collect such royalties. 224 | 225 | 226 | Section 3 -- License Conditions. 227 | 228 | Your exercise of the Licensed Rights is expressly made subject to the 229 | following conditions. 230 | 231 | a. Attribution. 232 | 233 | 1. If You Share the Licensed Material (including in modified 234 | form), You must: 235 | 236 | a. retain the following if it is supplied by the Licensor 237 | with the Licensed Material: 238 | 239 | i. identification of the creator(s) of the Licensed 240 | Material and any others designated to receive 241 | attribution, in any reasonable manner requested by 242 | the Licensor (including by pseudonym if 243 | designated); 244 | 245 | ii. a copyright notice; 246 | 247 | iii. a notice that refers to this Public License; 248 | 249 | iv. a notice that refers to the disclaimer of 250 | warranties; 251 | 252 | v. a URI or hyperlink to the Licensed Material to the 253 | extent reasonably practicable; 254 | 255 | b. indicate if You modified the Licensed Material and 256 | retain an indication of any previous modifications; and 257 | 258 | c. indicate the Licensed Material is licensed under this 259 | Public License, and include the text of, or the URI or 260 | hyperlink to, this Public License. 261 | 262 | 2. You may satisfy the conditions in Section 3(a)(1) in any 263 | reasonable manner based on the medium, means, and context in 264 | which You Share the Licensed Material. For example, it may be 265 | reasonable to satisfy the conditions by providing a URI or 266 | hyperlink to a resource that includes the required 267 | information. 268 | 269 | 3. If requested by the Licensor, You must remove any of the 270 | information required by Section 3(a)(1)(A) to the extent 271 | reasonably practicable. 272 | 273 | b. ShareAlike. 274 | 275 | In addition to the conditions in Section 3(a), if You Share 276 | Adapted Material You produce, the following conditions also apply. 277 | 278 | 1. The Adapter's License You apply must be a Creative Commons 279 | license with the same License Elements, this version or 280 | later, or a BY-SA Compatible License. 281 | 282 | 2. You must include the text of, or the URI or hyperlink to, the 283 | Adapter's License You apply. You may satisfy this condition 284 | in any reasonable manner based on the medium, means, and 285 | context in which You Share Adapted Material. 286 | 287 | 3. You may not offer or impose any additional or different terms 288 | or conditions on, or apply any Effective Technological 289 | Measures to, Adapted Material that restrict exercise of the 290 | rights granted under the Adapter's License You apply. 291 | 292 | 293 | Section 4 -- Sui Generis Database Rights. 294 | 295 | Where the Licensed Rights include Sui Generis Database Rights that 296 | apply to Your use of the Licensed Material: 297 | 298 | a. for the avoidance of doubt, Section 2(a)(1) grants You the right 299 | to extract, reuse, reproduce, and Share all or a substantial 300 | portion of the contents of the database; 301 | 302 | b. if You include all or a substantial portion of the database 303 | contents in a database in which You have Sui Generis Database 304 | Rights, then the database in which You have Sui Generis Database 305 | Rights (but not its individual contents) is Adapted Material, 306 | 307 | including for purposes of Section 3(b); and 308 | c. You must comply with the conditions in Section 3(a) if You Share 309 | all or a substantial portion of the contents of the database. 310 | 311 | For the avoidance of doubt, this Section 4 supplements and does not 312 | replace Your obligations under this Public License where the Licensed 313 | Rights include other Copyright and Similar Rights. 314 | 315 | 316 | Section 5 -- Disclaimer of Warranties and Limitation of Liability. 317 | 318 | a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE 319 | EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS 320 | AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF 321 | ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS, 322 | IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION, 323 | WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR 324 | PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS, 325 | ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT 326 | KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT 327 | ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU. 328 | 329 | b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE 330 | TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION, 331 | NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT, 332 | INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES, 333 | COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR 334 | USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN 335 | ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR 336 | DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR 337 | IN PART, THIS LIMITATION MAY NOT APPLY TO YOU. 338 | 339 | c. The disclaimer of warranties and limitation of liability provided 340 | above shall be interpreted in a manner that, to the extent 341 | possible, most closely approximates an absolute disclaimer and 342 | waiver of all liability. 343 | 344 | 345 | Section 6 -- Term and Termination. 346 | 347 | a. This Public License applies for the term of the Copyright and 348 | Similar Rights licensed here. However, if You fail to comply with 349 | this Public License, then Your rights under this Public License 350 | terminate automatically. 351 | 352 | b. Where Your right to use the Licensed Material has terminated under 353 | Section 6(a), it reinstates: 354 | 355 | 1. automatically as of the date the violation is cured, provided 356 | it is cured within 30 days of Your discovery of the 357 | violation; or 358 | 359 | 2. upon express reinstatement by the Licensor. 360 | 361 | For the avoidance of doubt, this Section 6(b) does not affect any 362 | right the Licensor may have to seek remedies for Your violations 363 | of this Public License. 364 | 365 | c. For the avoidance of doubt, the Licensor may also offer the 366 | Licensed Material under separate terms or conditions or stop 367 | distributing the Licensed Material at any time; however, doing so 368 | will not terminate this Public License. 369 | 370 | d. Sections 1, 5, 6, 7, and 8 survive termination of this Public 371 | License. 372 | 373 | 374 | Section 7 -- Other Terms and Conditions. 375 | 376 | a. The Licensor shall not be bound by any additional or different 377 | terms or conditions communicated by You unless expressly agreed. 378 | 379 | b. Any arrangements, understandings, or agreements regarding the 380 | Licensed Material not stated herein are separate from and 381 | independent of the terms and conditions of this Public License. 382 | 383 | 384 | Section 8 -- Interpretation. 385 | 386 | a. For the avoidance of doubt, this Public License does not, and 387 | shall not be interpreted to, reduce, limit, restrict, or impose 388 | conditions on any use of the Licensed Material that could lawfully 389 | be made without permission under this Public License. 390 | 391 | b. To the extent possible, if any provision of this Public License is 392 | deemed unenforceable, it shall be automatically reformed to the 393 | minimum extent necessary to make it enforceable. If the provision 394 | cannot be reformed, it shall be severed from this Public License 395 | without affecting the enforceability of the remaining terms and 396 | conditions. 397 | 398 | c. No term or condition of this Public License will be waived and no 399 | failure to comply consented to unless expressly agreed to by the 400 | Licensor. 401 | 402 | d. Nothing in this Public License constitutes or may be interpreted 403 | as a limitation upon, or waiver of, any privileges and immunities 404 | that apply to the Licensor or You, including from the legal 405 | processes of any jurisdiction or authority. 406 | 407 | 408 | ======================================================================= 409 | 410 | Creative Commons is not a party to its public 411 | licenses. Notwithstanding, Creative Commons may elect to apply one of 412 | its public licenses to material it publishes and in those instances 413 | will be considered the “Licensor.” The text of the Creative Commons 414 | public licenses is dedicated to the public domain under the CC0 Public 415 | Domain Dedication. Except for the limited purpose of indicating that 416 | material is shared under a Creative Commons public license or as 417 | otherwise permitted by the Creative Commons policies published at 418 | creativecommons.org/policies, Creative Commons does not authorize the 419 | use of the trademark "Creative Commons" or any other trademark or logo 420 | of Creative Commons without its prior written consent including, 421 | without limitation, in connection with any unauthorized modifications 422 | to any of its public licenses or any other arrangements, 423 | understandings, or agreements concerning use of licensed material. For 424 | the avoidance of doubt, this paragraph does not form part of the 425 | public licenses. 426 | 427 | Creative Commons may be contacted at creativecommons.org. 428 | --------------------------------------------------------------------------------