github-to-canvas 0.0.11 → 0.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +53 -11
- data/lib/github-to-canvas/canvas_dotfile.rb +1 -1
- data/lib/github-to-canvas/canvas_interface.rb +3 -3
- data/lib/github-to-canvas/github_interface.rb +1 -1
- data/lib/github-to-canvas/repository_converter.rb +5 -3
- data/lib/github-to-canvas/version.rb +2 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3152fc876a1490ceeb473de2839518c2ced04e535ea246de7fd49c0a07003ff6
|
4
|
+
data.tar.gz: d13329c8279a5b6cc971b6d3ef75a34bec6c4a4f329aba35f34a1bb7eb59a337
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 208aa644d3bcdec1c7f393c12cacaee4ad80b16ec818603cca5ff97f75d1414d7743219430e28d00a49b66d27caa9afbed49e00ecca31f1ae1df6442006866bc
|
7
|
+
data.tar.gz: e7539b042e5650952e1880da35a8b16b50da481eb59902e9012c2e3f964e2aacb8c3ec06f180c321bf256a8744e30c367e4f14566f62312cbb4c5006c08e5963
|
data/README.md
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
# GitHub to Canvas Gem
|
2
|
-
|
2
|
+
|
3
3
|
## Introduction
|
4
4
|
|
5
5
|
The `github-to-canvas` gem is designed to enable GitHub to Canvas LMS
|
@@ -8,11 +8,13 @@ file, convert it to HTML, and push it to Canvas. The gem also updates the
|
|
8
8
|
repository to include a `.canvas` file containing Canvas specific information.
|
9
9
|
|
10
10
|
With the `.canvas` file in place, this gem can be used to continuously align
|
11
|
-
content between GitHub and Canvas
|
11
|
+
content between GitHub and Canvas using the GitHub repository as the single
|
12
|
+
source of truth.
|
12
13
|
|
13
14
|
This gem is built for use internally at [Flatiron School][]. Access to the
|
14
15
|
[Canvas LMS API][] and the ability to add pages and assignments to a Canvas
|
15
|
-
course are required.
|
16
|
+
course are required. Write access to the GitHub repository being converted is
|
17
|
+
also required.
|
16
18
|
|
17
19
|
## Installation
|
18
20
|
|
@@ -29,7 +31,7 @@ called `CANVAS_API_KEY`. Use the following command to add your new key to
|
|
29
31
|
`~/.zshrc`:
|
30
32
|
|
31
33
|
```sh
|
32
|
-
echo "$(
|
34
|
+
echo "$(export 'CANVAS_API_KEY=<your-new-API-key-here>' | cat - ~/.zshrc)" > ~/.zshrc
|
33
35
|
```
|
34
36
|
|
35
37
|
> **Note:** The command above assumes you are using Zsh. Change the dotfile if
|
@@ -42,7 +44,7 @@ Flatiron School's base path is `https://learning.flatironschool.com/api/v1`. Add
|
|
42
44
|
as an `ENV` variable like the API key. **Do not add a `/` at the end after `/api/v1`.**
|
43
45
|
|
44
46
|
```sh
|
45
|
-
echo "$(
|
47
|
+
echo "$(export 'CANVAS_API_PATH=<your-base-api-path>' | cat - ~/.zshrc)" > ~/.zshrc
|
46
48
|
```
|
47
49
|
|
48
50
|
After both the API key and path are added to `~/.zshrc`, run `source ~/.zshrc`
|
@@ -51,11 +53,17 @@ are present by running `ENV`.
|
|
51
53
|
|
52
54
|
## Usage
|
53
55
|
|
54
|
-
|
55
|
-
|
56
|
+
### Create a Canvas Lesson
|
57
|
+
|
58
|
+
To create a Canvas lesson from a GitHub `README.md` file, at minimum, you will
|
59
|
+
need to know the Canvas course id you are going to add to. This id can be found
|
60
|
+
in the URL of the course.
|
56
61
|
|
57
|
-
|
58
|
-
|
62
|
+
Once you have the course id, you will need to do the following:
|
63
|
+
|
64
|
+
1. Clone down the repository you'd like to push to Canvas.
|
65
|
+
2. Change directory into the new local repository
|
66
|
+
3. Run `github-to-canvas --create <your-course-id>` from inside the local repo
|
59
67
|
|
60
68
|
If everything is set up properly, `github-to-canvas` will create a Canvas lesson
|
61
69
|
using `master` branch `README.md` and the name of the current folder. By
|
@@ -63,8 +71,30 @@ default, if the repository contains folders, an **assignment** will be created.
|
|
63
71
|
Otherwise, a **page** will be created.
|
64
72
|
|
65
73
|
After a successful lesson creation, `github-to-canvas` will use the API response
|
66
|
-
to build a `.canvas` YAML file. This file contains the course id, the newly
|
67
|
-
page id, and the Canvas URL to the lesson for future reference.
|
74
|
+
to build a `.canvas` YAML file. This file contains the course id, the newly
|
75
|
+
created page id, and the Canvas URL to the lesson for future reference. With the
|
76
|
+
newly created `.canvas` file, `github-to-canvas` will attempt to commit and push the
|
77
|
+
file up to the remote GitHub repository.
|
78
|
+
|
79
|
+
If you create multiple Canvas lessons from the same repository, each lesson's
|
80
|
+
Canvas data will be stored in the `.canvas` file.
|
81
|
+
|
82
|
+
> **Note:** If you don't have write access to the repository, the `.canvas` file
|
83
|
+
> will still be created locally.
|
84
|
+
|
85
|
+
### Update an existing Canvas Lesson
|
86
|
+
|
87
|
+
To update an existing Canvas lesson using a local repository, **a `.canvas` file
|
88
|
+
must be present in the repo**, as it contains the lesson information for the
|
89
|
+
Canvas API.
|
90
|
+
|
91
|
+
1. Clone down and/or change directory into the repository you'd like to update
|
92
|
+
2. Run `github-to-canvas --align <your-course-id>` from inside the local repo
|
93
|
+
|
94
|
+
`github-to-canvas` will get the course id and page/assignment id from the
|
95
|
+
`.canvas` file and update the associated Canvas lesson. If there are multiple
|
96
|
+
Canvas lessons included in the `.canvas` file, each lesson will be updated (i.e.
|
97
|
+
you have the same lesson in two courses created from one repository).
|
68
98
|
|
69
99
|
### Options
|
70
100
|
|
@@ -76,5 +106,17 @@ You can override the default behaviors with the following arguments:
|
|
76
106
|
appropriate Canvas lesson type instead of relying on the repository's
|
77
107
|
directory structure
|
78
108
|
|
109
|
+
## Examples of Valid Images This Gem Can Convert
|
110
|
+
|
111
|
+
Inline Markdown:
|
112
|
+
|
113
|
+

|
114
|
+
|
115
|
+
HTML:
|
116
|
+
|
117
|
+
<p align="center">
|
118
|
+
<img src="https://curriculum-content.s3.amazonaws.com/fewpjs/fewpjs-fetch-lab/Image_25_AsynchronousJavaScript.png" width="500">
|
119
|
+
</p>
|
120
|
+
|
79
121
|
[Canvas LMS API]: https://canvas.instructure.com/doc/api/index.html
|
80
122
|
[Flatiron School]: https://flatironschool.com/
|
@@ -1,6 +1,6 @@
|
|
1
1
|
require 'json'
|
2
2
|
require 'rest-client'
|
3
|
-
|
3
|
+
|
4
4
|
class CanvasInterface
|
5
5
|
|
6
6
|
def self.submit_to_canvas(course_id, type, name, readme, dry_run = false)
|
@@ -25,8 +25,8 @@ class CanvasInterface
|
|
25
25
|
})
|
26
26
|
end
|
27
27
|
|
28
|
-
def self.update_existing_lesson(course_id,
|
29
|
-
url = "#{ENV['CANVAS_API_PATH']}/courses/#{course_id}/#{type}s/#{
|
28
|
+
def self.update_existing_lesson(course_id, id, type, name, new_readme, dry_run)
|
29
|
+
url = "#{ENV['CANVAS_API_PATH']}/courses/#{course_id}/#{type}s/#{id}"
|
30
30
|
payload = self.build_payload(type, name, new_readme)
|
31
31
|
RestClient.put(url, payload, headers={
|
32
32
|
"Authorization" => "Bearer #{ENV['CANVAS_API_KEY']}"
|
@@ -13,7 +13,7 @@ class GithubInterface
|
|
13
13
|
end
|
14
14
|
|
15
15
|
def self.git_co_branch(filepath, branch)
|
16
|
-
branch = self.cd_into_and(filepath, "git
|
16
|
+
branch = self.cd_into_and(filepath, "git checkout #{branch}")
|
17
17
|
if branch.to_s.strip.empty?
|
18
18
|
puts "#{branch} branch not found. Exiting..."
|
19
19
|
abort
|
@@ -26,7 +26,7 @@ class RepositoryConverter
|
|
26
26
|
image.gsub!(/\(.+\)/) { |path|
|
27
27
|
path.delete_prefix!("(")
|
28
28
|
path.delete_suffix!(")")
|
29
|
-
"(" +
|
29
|
+
"(" + raw_remote_url + "/#{branch}/" + path + ")"
|
30
30
|
}
|
31
31
|
end
|
32
32
|
image
|
@@ -35,12 +35,14 @@ class RepositoryConverter
|
|
35
35
|
|
36
36
|
def self.adjust_local_html_images(readme, raw_remote_url)
|
37
37
|
readme.gsub!(/src=\"[\s\S]*?" /) { |img|
|
38
|
-
if !
|
38
|
+
if !img.match('amazonaws.com') && !img.match('https://') && !img.match('youtube')
|
39
39
|
img.gsub!(/\"/, "")
|
40
40
|
img.gsub!(/src=/, '')
|
41
41
|
img.strip!
|
42
|
+
'src="' + raw_remote_url + '/master/' + img + '"'
|
43
|
+
else
|
44
|
+
img
|
42
45
|
end
|
43
|
-
'src="' + raw_remote_url + '/master/' + img + '"'
|
44
46
|
}
|
45
47
|
end
|
46
48
|
|
@@ -1,3 +1,3 @@
|
|
1
|
-
class
|
2
|
-
VERSION = "0.0.
|
1
|
+
class GithubToCanvas
|
2
|
+
VERSION = "0.0.16"
|
3
3
|
end
|