github-to-canvas 0.0.8
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 +7 -0
- data/CONTRIBUTING.md +39 -0
- data/Gemfile +11 -0
- data/LICENSE.md +24 -0
- data/README.md +80 -0
- data/Rakefile +6 -0
- data/bin/github-to-canvas +101 -0
- data/lib/github-to-canvas.rb +18 -0
- data/lib/github-to-canvas/create-canvas-lesson.rb +156 -0
- data/lib/github-to-canvas/version.rb +3 -0
- metadata +109 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 157424448fb4396e7ae200733bf3c27fb45b9d74546f026bf1c9aad55fe958f1
|
4
|
+
data.tar.gz: a675bce4eb13531be6b80867798bf260ecc6edba8ef0e555bbb7b861d24397b3
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: df3a924b7ab026c0101af16e538b333f9b0aac17e4f9a5e66301d5ad690bad3ec7c229aa1547254f532b8d69ca5a27468c6935ee4db69e1544b57add7d0d8859
|
7
|
+
data.tar.gz: 51f8d7055e94c7cc0deaf11defa4a5c9a39ab7300dc10e69f337578a6417f4da4a95ebad9223d46cb22539ec6b3d59f091a2467cb2952cd26c4aaedba768cbdc
|
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,39 @@
|
|
1
|
+
# Contributing to Learn.co Curriculum
|
2
|
+
|
3
|
+
We're really excited that you're about to contribute to the
|
4
|
+
[open curriculum](https://learn.co/content-license) on
|
5
|
+
[Learn.co](https://learn.co). If this is your first time contributing, please
|
6
|
+
continue reading to learn how to make the most meaningful and useful impact
|
7
|
+
possible.
|
8
|
+
|
9
|
+
## Raising an Issue to Encourage a Contribution
|
10
|
+
|
11
|
+
If you notice a problem with the curriculum that you believe needs improvement
|
12
|
+
, but you're unable to make the change yourself, you should raise a Github issue
|
13
|
+
containing a clear description of the problem. Include relevant snippets of the
|
14
|
+
content and screenshots if applicable. Curriculum owners regularly review
|
15
|
+
issue lists, and your issue will be prioritized and addressed as appropriate.
|
16
|
+
|
17
|
+
## Submitting a Pull Request to Suggest an Improvement
|
18
|
+
|
19
|
+
If you see an opportunity for improvement and can make the change yourself go
|
20
|
+
ahead and use a typical git workflow to make it happen:
|
21
|
+
|
22
|
+
* Fork this curriculum repository
|
23
|
+
* Make the change on your fork, with descriptive commits in the standard format
|
24
|
+
* Open a Pull Request against this repo
|
25
|
+
|
26
|
+
A curriculum owner will review your change and approve or comment on it in due
|
27
|
+
course.
|
28
|
+
|
29
|
+
## Why Contribute?
|
30
|
+
|
31
|
+
Curriculum on Learn is publicly and freely available under Learn's
|
32
|
+
[Educational Content License](https://learn.co/content-license). By embracing an
|
33
|
+
open-source contribution model, our goal is for the curriculum on Learn to
|
34
|
+
become, in time, the best educational content the world has ever seen.
|
35
|
+
|
36
|
+
We need help from the community of Learners to maintain and improve the
|
37
|
+
educational content. Everything from fixing typos, to correcting out-dated
|
38
|
+
information, to improving exposition, to adding better examples, to fixing
|
39
|
+
tests—all contributions to making the curriculum more effective are welcome.
|
data/Gemfile
ADDED
data/LICENSE.md
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
# Learn.co Educational Content License
|
2
|
+
|
3
|
+
Copyright (c) 2020 Flatiron School, Inc
|
4
|
+
|
5
|
+
The Flatiron School, Inc. owns this Educational Content. However, the Flatiron
|
6
|
+
School supports the development and availability of educational materials in the
|
7
|
+
public domain. Therefore, the Flatiron School grants Users of the Flatiron
|
8
|
+
Educational Content set forth in this repository certain rights to reuse, build
|
9
|
+
upon and share such Educational Content subject to the terms of the Educational
|
10
|
+
Content License set forth
|
11
|
+
[here](http://learn.co/content-license)(http://learn.co/content-license). You
|
12
|
+
must read carefully the terms and conditions contained in the Educational
|
13
|
+
Content License as such terms govern access to and use of the Educational
|
14
|
+
Content.
|
15
|
+
|
16
|
+
Flatiron School is willing to allow you access to and use of the Educational
|
17
|
+
Content only on the condition that you accept all of the terms and conditions
|
18
|
+
contained in the Educational Content License set forth
|
19
|
+
[here](http://learn.co/content-license) (http://learn.co/content-license). By
|
20
|
+
accessing and/or using the Educational Content, you are agreeing to all of the
|
21
|
+
terms and conditions contained in the Educational Content License. If you do
|
22
|
+
not agree to any or all of the terms of the Educational Content License, you are
|
23
|
+
prohibited from accessing, reviewing or using in any way the Educational
|
24
|
+
Content.
|
data/README.md
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
# GitHub to Canvas Gem
|
2
|
+
|
3
|
+
## Introduction
|
4
|
+
|
5
|
+
The `github-to-canvas` gem is designed to enable GitHub to Canvas LMS
|
6
|
+
integration. This gem is designed to take a GitHub repository's `README.md`
|
7
|
+
file, convert it to HTML, and push it to Canvas. The gem also updates the
|
8
|
+
repository to include a `.canvas` file containing Canvas specific information.
|
9
|
+
|
10
|
+
With the `.canvas` file in place, this gem can be used to continuously align
|
11
|
+
content between GitHub and Canvas.
|
12
|
+
|
13
|
+
This gem is built for use internally at [Flatiron School][]. Access to the
|
14
|
+
[Canvas LMS API][] and the ability to add pages and assignments to a Canvas
|
15
|
+
course are required.
|
16
|
+
|
17
|
+
## Installation
|
18
|
+
|
19
|
+
`gem install github-to-canvas`
|
20
|
+
|
21
|
+
## Setup
|
22
|
+
|
23
|
+
### Generate Canvas API Key
|
24
|
+
|
25
|
+
In order to access the Canvas API, you must first generate an API key. Go to
|
26
|
+
your Canvas Account Settings and under **Approved Integrations**, create a
|
27
|
+
**New Access Token**. You will need to store this API key as an `ENV` variable
|
28
|
+
called `CANVAS_API_KEY`. Use the following command to add your new key to
|
29
|
+
`~/.zshrc`:
|
30
|
+
|
31
|
+
```sh
|
32
|
+
echo "$(echo 'CANVAS_API_KEY=<your-new-API-key-here>' | cat - ~/.zshrc)" > ~/.zshrc
|
33
|
+
```
|
34
|
+
|
35
|
+
> **Note:** The command above assumes you are using Zsh. Change the dotfile if
|
36
|
+
> you are using something else like Bash.
|
37
|
+
|
38
|
+
### Add Canvas API Base Path
|
39
|
+
|
40
|
+
The exact Canvas API path is specific to where you Canvas LMS is located. For example,
|
41
|
+
Flatiron School's base path is `https://learning.flatironschool.com/api/v1`. Add this path
|
42
|
+
as an `ENV` variable like the API key. **Do not add a `/` at the end after `/api/v1`.**
|
43
|
+
|
44
|
+
```sh
|
45
|
+
echo "$(echo 'CANVAS_API_PATH=<your-base-api-path>' | cat - ~/.zshrc)" > ~/.zshrc
|
46
|
+
```
|
47
|
+
|
48
|
+
After both the API key and path are added to `~/.zshrc`, run `source ~/.zshrc`
|
49
|
+
to make them available in your current terminal. You can verify these variables
|
50
|
+
are present by running `ENV`.
|
51
|
+
|
52
|
+
## Usage
|
53
|
+
|
54
|
+
To migrate a GitHub `README.md` file to Canvas, at minimum, you will need to know the
|
55
|
+
Canvas course id you are going to add to. This id can be found in the URL of the course.
|
56
|
+
|
57
|
+
1. clone down the repository to a local folder and change directory into it.
|
58
|
+
2. Run `github-to-canvas --create <your-course-id>`
|
59
|
+
|
60
|
+
If everything is set up properly, `github-to-canvas` will create a Canvas lesson
|
61
|
+
using `master` branch `README.md` and the name of the current folder. By
|
62
|
+
default, if the repository contains folders, an **assignment** will be created.
|
63
|
+
Otherwise, a **page** will be created.
|
64
|
+
|
65
|
+
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 created
|
67
|
+
page id, and the Canvas URL to the lesson for future reference.
|
68
|
+
|
69
|
+
### Options
|
70
|
+
|
71
|
+
You can override the default behaviors with the following arguments:
|
72
|
+
|
73
|
+
* `--name NAME` uses the provided name instead of the repository's folder name
|
74
|
+
* `--branch BRANCH` uses the provided git branch instead of `master`
|
75
|
+
* `--type TYPE` will accept either `'page'` or `'assignment'` and create the
|
76
|
+
appropriate Canvas lesson type instead of relying on the repository's
|
77
|
+
directory structure
|
78
|
+
|
79
|
+
[Canvas LMS API]: https://canvas.instructure.com/doc/api/index.html
|
80
|
+
[Flatiron School]: https://flatironschool.com/
|
data/Rakefile
ADDED
@@ -0,0 +1,101 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
|
3
|
+
require 'optparse'
|
4
|
+
require 'github-to-canvas'
|
5
|
+
|
6
|
+
options = {}
|
7
|
+
OptionParser.new do |opts|
|
8
|
+
opts.banner = <<-EOBANNER
|
9
|
+
GitHub To Canvas
|
10
|
+
====================
|
11
|
+
A tool for migrating and aligning GitHub content with the Canvas LMS. Access
|
12
|
+
to the Canvas API and a GitHub org required. For configuration and setup, visit
|
13
|
+
https://github.com/learn-co-curriculum/github-to-canvas
|
14
|
+
|
15
|
+
Commands:
|
16
|
+
github-to-canvas --create COURSE
|
17
|
+
github-to-canvas --create COURSE [--branch BRANCH]
|
18
|
+
github-to-canvas --create COURSE [--branch BRANCH] [--name NAME]
|
19
|
+
github-to-canvas --create COURSE [--branch BRANCH] [--name NAME] [--type TYPE]
|
20
|
+
github-to-canvas --align
|
21
|
+
github-to-canvas --reverse-align
|
22
|
+
github-to-canvas --version
|
23
|
+
|
24
|
+
Run these commands from inside a local GitHub repository. This gem is built for Flatiron School's internal use.
|
25
|
+
Some default behaviors assume this, like the default Canvas API path.
|
26
|
+
|
27
|
+
Example usage:
|
28
|
+
|
29
|
+
github-to-canvas --create 154 -> Creates a lesson in course 154, deriving the name and type from the local repo
|
30
|
+
github-to-canvas --create 154 --name "Fetch Lab" -> Creates a lesson in course 154 with the provided name, deriving the type from the local repo
|
31
|
+
github-to-canvas --create 154 --name "Fetch Lab" --type assignment -> Creates an assignment in course 154 with the provided name
|
32
|
+
github-to-canvas --create 154 --name "Fetch Lab" --branch solution -> Creates a lesson in course 154 with the provided name, using the repositorie's solution branch and deriving the type from the local repo
|
33
|
+
|
34
|
+
EOBANNER
|
35
|
+
|
36
|
+
opts.on("-cCOURSE", "--create COURSE",
|
37
|
+
"Creates a new canvas lesson, converting the local repository's README.md to HTML. Adds .canvas file to remote repository") do |course|
|
38
|
+
options[:create] = true
|
39
|
+
options[:course] = course
|
40
|
+
end
|
41
|
+
opts.on("-bBRANCH", "--branch BRANCH",
|
42
|
+
"Sets the repository branch used for lesson creation") do |branch|
|
43
|
+
options[:branch] = branch
|
44
|
+
end
|
45
|
+
opts.on("-nNAME", "--name NAME",
|
46
|
+
"Sets the name of the new Canvas lesson to be created. If no name is given, repository folder name is used") do |name|
|
47
|
+
options[:name] = name
|
48
|
+
end
|
49
|
+
opts.on("-tTYPE", "--type TYPE",
|
50
|
+
"Sets the type Canvas lesson to be created (page or assignment). If no type, type decided based on repository structure") do |type|
|
51
|
+
if t == 'page' || t == 'assignment'
|
52
|
+
options[:type] = type
|
53
|
+
else
|
54
|
+
puts "Invalid type. Defaulting to page"
|
55
|
+
options[:type] = "page"
|
56
|
+
end
|
57
|
+
end
|
58
|
+
opts.on("-a", "--align",
|
59
|
+
"Updates a canvas lesson based on the local repository's README.md") do |a|
|
60
|
+
options[:align] = true
|
61
|
+
end
|
62
|
+
opts.on("-r", "--reverse-align",
|
63
|
+
"Updates a remote repository, converting the Canvas lesson body to markdown and pushing it remotely as the README.md") do |r|
|
64
|
+
options[:reverse_align] = true
|
65
|
+
end
|
66
|
+
opts.on("-v", "--version",
|
67
|
+
"Displays current gem version") do |v|
|
68
|
+
options[:version] = true
|
69
|
+
end
|
70
|
+
|
71
|
+
end.parse!
|
72
|
+
|
73
|
+
if options[:version]
|
74
|
+
GithubToCanvas.new(mode: 'version', course: nil)
|
75
|
+
end
|
76
|
+
|
77
|
+
if Dir.entries(Dir.pwd).select {|entry| File.directory? entry and !(entry =='.' || entry == '..')}.empty?
|
78
|
+
options[:type] = "page"
|
79
|
+
else
|
80
|
+
options[:type] = "assignment"
|
81
|
+
end
|
82
|
+
|
83
|
+
if !options[:branch]
|
84
|
+
options[:branch] = 'master'
|
85
|
+
end
|
86
|
+
|
87
|
+
if !options[:name]
|
88
|
+
options[:name] = File.basename(Dir.getwd)
|
89
|
+
end
|
90
|
+
|
91
|
+
if options[:create]
|
92
|
+
GithubToCanvas.new(mode: "create", course: options[:course], filepath: Dir.pwd, branch: options[:branch], name: options[:name], type: options[:type])
|
93
|
+
end
|
94
|
+
|
95
|
+
if options[:align]
|
96
|
+
puts 'feature not working yet'
|
97
|
+
end
|
98
|
+
|
99
|
+
if options[:reverse_align]
|
100
|
+
puts 'feature not working yet'
|
101
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
require_relative './github-to-canvas/create-canvas-lesson'
|
2
|
+
require_relative './github-to-canvas/version'
|
3
|
+
|
4
|
+
class GithubToCanvas
|
5
|
+
|
6
|
+
def initialize(mode:, course:, filepath:Dir.pwd, branch:'master', name:File.basename(Dir.getwd), type:"page")
|
7
|
+
if mode == 'version'
|
8
|
+
puts VERSION
|
9
|
+
return
|
10
|
+
end
|
11
|
+
|
12
|
+
if mode == 'create'
|
13
|
+
puts "github-to-canvas will now create a Canvas lesson based on the current repo"
|
14
|
+
CreateCanvasLesson.new(course, filepath, branch, name, type)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
end
|
@@ -0,0 +1,156 @@
|
|
1
|
+
require 'redcarpet'
|
2
|
+
require 'rest-client'
|
3
|
+
require 'json'
|
4
|
+
require 'yaml'
|
5
|
+
require 'byebug'
|
6
|
+
|
7
|
+
class CreateCanvasLesson
|
8
|
+
|
9
|
+
def initialize(course, filepath, branch, name, type)
|
10
|
+
@course = course
|
11
|
+
@filepath = filepath
|
12
|
+
@branch = branch
|
13
|
+
@name = name.split(/[ -]/).map(&:capitalize).join(' ')
|
14
|
+
@type = type
|
15
|
+
@renderer = Redcarpet::Markdown.new(Redcarpet::Render::HTML, options={tables: true, autolink: true, fenced_code_blocks: true})
|
16
|
+
@original_readme = File.read("#{filepath}/README.md")
|
17
|
+
if !@original_readme
|
18
|
+
puts 'README.md not found in current directory. Exiting...'
|
19
|
+
abort
|
20
|
+
end
|
21
|
+
create_canvas_lesson
|
22
|
+
end
|
23
|
+
|
24
|
+
def create_canvas_lesson
|
25
|
+
git_co_branch
|
26
|
+
git_pull
|
27
|
+
@raw_remote_url = set_raw_image_remote_url
|
28
|
+
adjust_local_markdown_images
|
29
|
+
adjust_local_html_images
|
30
|
+
@new_readme = @renderer.render(@original_readme)
|
31
|
+
write_to_html
|
32
|
+
@response = push_to_canvas
|
33
|
+
if @response.code != 200
|
34
|
+
puts "Canvas push failed. #{@response.code} status code returned "
|
35
|
+
end
|
36
|
+
@response = JSON.parse(@response.body)
|
37
|
+
create_canvas_dotfile
|
38
|
+
commit_canvas_dotfile
|
39
|
+
git_push
|
40
|
+
end
|
41
|
+
|
42
|
+
def cd_into_and(command)
|
43
|
+
cmd = "cd #{@filepath} && #{command}"
|
44
|
+
puts cmd
|
45
|
+
`#{cmd}`
|
46
|
+
end
|
47
|
+
|
48
|
+
def git_co_branch
|
49
|
+
cmd = "git co #{@branch}"
|
50
|
+
branch = cd_into_and(cmd)
|
51
|
+
if branch.to_s.strip.empty?
|
52
|
+
puts "#{b@ranch} branch not found. Exiting..."
|
53
|
+
abort
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def git_pull
|
58
|
+
if @branch != 'master'
|
59
|
+
cmd = "git pull #{@branch}"
|
60
|
+
else
|
61
|
+
cmd = "git pull"
|
62
|
+
end
|
63
|
+
puts "git pulling latest version of #{@branch}"
|
64
|
+
cd_into_and(cmd)
|
65
|
+
end
|
66
|
+
|
67
|
+
def git_remote
|
68
|
+
cmd = "git config --get remote.origin.url"
|
69
|
+
cd_into_and(cmd)
|
70
|
+
end
|
71
|
+
|
72
|
+
def git_add(file)
|
73
|
+
cmd = "git add #{file}"
|
74
|
+
puts "git adding #{file}"
|
75
|
+
cd_into_and(cmd)
|
76
|
+
end
|
77
|
+
|
78
|
+
def git_commit(message)
|
79
|
+
cmd = "git commit -m '#{message}'"
|
80
|
+
puts "git commit: '#{message}'"
|
81
|
+
cd_into_and(cmd)
|
82
|
+
end
|
83
|
+
|
84
|
+
def git_push
|
85
|
+
cmd = "git push"
|
86
|
+
puts "git pushing #{@branch}"
|
87
|
+
cd_into_and(cmd)
|
88
|
+
end
|
89
|
+
|
90
|
+
def set_raw_image_remote_url
|
91
|
+
remote = git_remote
|
92
|
+
remote.gsub!("git@github.com:","https://raw.githubusercontent.com/")
|
93
|
+
remote.gsub!(/.git$/,"")
|
94
|
+
remote.strip!
|
95
|
+
end
|
96
|
+
|
97
|
+
def adjust_local_markdown_images
|
98
|
+
@original_readme.gsub!(/\!\[.+\]\(.+\)/) {|image|
|
99
|
+
if !image.match('amazonaws.com') && !image.match('https://')
|
100
|
+
image.gsub!(/\(.+\)/) { |path|
|
101
|
+
path.delete_prefix!("(")
|
102
|
+
path.delete_suffix!(")")
|
103
|
+
"(" + remote + "/#{@branch}/" + path + ")"
|
104
|
+
}
|
105
|
+
end
|
106
|
+
image
|
107
|
+
}
|
108
|
+
end
|
109
|
+
|
110
|
+
def adjust_local_html_images
|
111
|
+
@original_readme.gsub!(/src=\"[\s\S]*?" /) { |img|
|
112
|
+
img.gsub!(/\"/, "")
|
113
|
+
img.gsub!(/src=/, '')
|
114
|
+
img.strip!
|
115
|
+
'src="' + @raw_remote_url + '/master/' + img + '"'
|
116
|
+
}
|
117
|
+
end
|
118
|
+
|
119
|
+
def write_to_html
|
120
|
+
File.write("#{@filepath}/README.html", @new_readme)
|
121
|
+
end
|
122
|
+
|
123
|
+
def push_to_canvas
|
124
|
+
url = "#{ENV['CANVAS_API_PATH']}/courses/#{@course}/#{@type}s"
|
125
|
+
if @type == "assignment"
|
126
|
+
payload = {
|
127
|
+
'assignment[name]' => @name,
|
128
|
+
'assignment[description]' => @new_readme
|
129
|
+
}
|
130
|
+
else
|
131
|
+
payload = {
|
132
|
+
'wiki_page[title]' => @name,
|
133
|
+
'wiki_page[body]' => @new_readme,
|
134
|
+
'wiki_page[editing_roles]' => "teachers"
|
135
|
+
}
|
136
|
+
end
|
137
|
+
|
138
|
+
RestClient.post(url, payload, headers={
|
139
|
+
"Authorization" => "Bearer #{ENV['CANVAS_API_KEY']}"
|
140
|
+
})
|
141
|
+
end
|
142
|
+
|
143
|
+
def create_canvas_dotfile
|
144
|
+
canvas_data = {
|
145
|
+
page_id: @response['page_id'],
|
146
|
+
course_id: @course.to_i,
|
147
|
+
canvas_url: @response['html_url']
|
148
|
+
}
|
149
|
+
File.write("#{@filepath}/.canvas", canvas_data.to_yaml)
|
150
|
+
end
|
151
|
+
|
152
|
+
def commit_canvas_dotfile
|
153
|
+
git_add('.canvas')
|
154
|
+
git_commit('AUTO: add .canvas file after migration')
|
155
|
+
end
|
156
|
+
end
|
metadata
ADDED
@@ -0,0 +1,109 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: github-to-canvas
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.8
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- maxwellbenton
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2020-05-12 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: faraday
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.15'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.15'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: redcarpet
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '3.5'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '3.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: rest-client
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '2.1'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '2.1'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: json
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '2.3'
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '2.3'
|
69
|
+
description:
|
70
|
+
email: maxwell@flatironschool.com
|
71
|
+
executables:
|
72
|
+
- github-to-canvas
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- CONTRIBUTING.md
|
77
|
+
- Gemfile
|
78
|
+
- LICENSE.md
|
79
|
+
- README.md
|
80
|
+
- Rakefile
|
81
|
+
- bin/github-to-canvas
|
82
|
+
- lib/github-to-canvas.rb
|
83
|
+
- lib/github-to-canvas/create-canvas-lesson.rb
|
84
|
+
- lib/github-to-canvas/version.rb
|
85
|
+
homepage: https://github.com/learn-co-curriculum/github-to-canvas
|
86
|
+
licenses:
|
87
|
+
- MIT
|
88
|
+
metadata: {}
|
89
|
+
post_install_message:
|
90
|
+
rdoc_options: []
|
91
|
+
require_paths:
|
92
|
+
- lib
|
93
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
94
|
+
requirements:
|
95
|
+
- - ">="
|
96
|
+
- !ruby/object:Gem::Version
|
97
|
+
version: '0'
|
98
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - ">="
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '0'
|
103
|
+
requirements: []
|
104
|
+
rubygems_version: 3.0.8
|
105
|
+
signing_key:
|
106
|
+
specification_version: 4
|
107
|
+
summary: github-to-canvas is a tool for migrating and aligning GitHub content with
|
108
|
+
the Canvas LMS
|
109
|
+
test_files: []
|