github-to-canvas 0.0.46 → 0.0.48
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/bin/github-to-canvas +13 -1
- data/lib/github-to-canvas.rb +12 -1
- data/lib/github-to-canvas/canvas_interface.rb +22 -22
- data/lib/github-to-canvas/repository_converter.rb +18 -9
- data/lib/github-to-canvas/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d00d3f8b2e4a748b6d8840c365904d980f7bc6f7ad8046cc44b0f28372cad834
|
4
|
+
data.tar.gz: 2cf19fe82846d2cb544ba8cccacd078e08c71c7270f4ecfa1a954d894cdf6750
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 74598233da7a1ecfc041937a838a06e14511fbc98c65a981c8a408f997289e0c3520fa600e023bba1c3800ee84c742bb79598ca067e8ba2e0957972df390173c
|
7
|
+
data.tar.gz: b81aca6a1ebd575642e438a60af63a24db731728b144de5e6f7e5be2ed8c36f6c5cdc93411aa7e64e6e6e231946d0db359a51497b7417b25c40d9f4c2b36f6fb
|
data/bin/github-to-canvas
CHANGED
@@ -36,7 +36,7 @@ OptionParser.new do |opts|
|
|
36
36
|
github-to-canvas --create-lesson 154 --name "Fetch Lab" --type assignment -> Creates an assignment in course 154 with the provided name
|
37
37
|
github-to-canvas --create-lesson 154 --name "Fetch Lab" --branch solution -> Creates a lesson in course 154 with the provided name, uses the repository's solution branch and derives the type from the local repo
|
38
38
|
github-to-canvas --align -> Patches existing lessons in Canvas based on the .canvas file
|
39
|
-
github-to-canvas --align --fis-links -> Patches existing lessons in Canvas based on the .canvas file, adds
|
39
|
+
github-to-canvas --align --fis-links -> Patches existing lessons in Canvas based on the .canvas file, adds additional Flatiron School specific HTML and meta-data
|
40
40
|
github-to-canvas --align --remove-header-and-footer -> Patches existing lessons in Canvas based on the .canvas file, removes top lesson header before converting to HTML
|
41
41
|
github-to-canvas --info COURSE -> Displays a course's lesson and assignment names
|
42
42
|
|
@@ -104,6 +104,10 @@ OptionParser.new do |opts|
|
|
104
104
|
"Displays a course's lessons and assignments") do |course|
|
105
105
|
options[:query] = course
|
106
106
|
end
|
107
|
+
opts.on("--remote",
|
108
|
+
"Retrieves a Canvas lesson. Requires --course and --id") do |remote|
|
109
|
+
options[:remote] = true
|
110
|
+
end
|
107
111
|
|
108
112
|
end.parse!
|
109
113
|
|
@@ -115,6 +119,14 @@ if options[:query]
|
|
115
119
|
GithubToCanvas.new(mode: 'query', course: options[:query], id: options[:id])
|
116
120
|
end
|
117
121
|
|
122
|
+
if options[:remote]
|
123
|
+
if !options[:course] || !options[:id]
|
124
|
+
puts "Both --course and --id required when using --remote"
|
125
|
+
abort
|
126
|
+
end
|
127
|
+
GithubToCanvas.new(mode: 'remote', course: options[:course], id: options[:id])
|
128
|
+
end
|
129
|
+
|
118
130
|
if !options[:type]
|
119
131
|
if Dir.glob("**/*/").empty?
|
120
132
|
options[:type] = "page"
|
data/lib/github-to-canvas.rb
CHANGED
@@ -6,7 +6,6 @@ require_relative './github-to-canvas/canvas_interface'
|
|
6
6
|
require_relative './github-to-canvas/canvas_dotfile'
|
7
7
|
require_relative './github-to-canvas/version'
|
8
8
|
|
9
|
-
|
10
9
|
class GithubToCanvas
|
11
10
|
|
12
11
|
def initialize(mode:,
|
@@ -30,6 +29,18 @@ class GithubToCanvas
|
|
30
29
|
CanvasInterface.get_course_info(course, id)
|
31
30
|
end
|
32
31
|
|
32
|
+
if mode == 'remote'
|
33
|
+
lesson_data = CanvasInterface.get_lesson_info(course, id)
|
34
|
+
if !lesson_data[1]
|
35
|
+
puts "No lesson with id #{id} was found in course #{course}."
|
36
|
+
else
|
37
|
+
pp lesson_data[0]
|
38
|
+
puts "\nLesson Type: #{lesson_data[1]}"
|
39
|
+
end
|
40
|
+
|
41
|
+
|
42
|
+
end
|
43
|
+
|
33
44
|
if mode == 'create'
|
34
45
|
puts "github-to-canvas will now create a Canvas lesson based on the current repo"
|
35
46
|
CreateCanvasLesson.new(course, filepath, file_to_convert, branch, name, type, save_to_github, fis_links, remove_header_and_footer)
|
@@ -3,41 +3,41 @@ require 'rest-client'
|
|
3
3
|
class CanvasInterface
|
4
4
|
|
5
5
|
def self.get_lesson_info(course, id)
|
6
|
-
|
7
|
-
|
6
|
+
|
7
|
+
lesson_types = ["quizzes", "assignments", "pages", "discussion_topics"]
|
8
|
+
lesson_type_urls = []
|
9
|
+
lesson_types.each do |type|
|
10
|
+
lesson_type_urls << "#{ENV['CANVAS_API_PATH']}/courses/#{course}/#{type}/#{id}"
|
11
|
+
end
|
12
|
+
|
8
13
|
type = nil
|
9
14
|
info = ""
|
15
|
+
lesson_type_urls.each do |url|
|
10
16
|
begin
|
11
|
-
|
17
|
+
response = RestClient.get(url, headers={
|
12
18
|
"Authorization" => "Bearer #{ENV['CANVAS_API_KEY']}"
|
13
19
|
})
|
14
|
-
if
|
15
|
-
info = JSON.parse(
|
16
|
-
|
17
|
-
type
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
begin
|
23
|
-
assignment_response = RestClient.get(assignment_url, headers={
|
24
|
-
"Authorization" => "Bearer #{ENV['CANVAS_API_KEY']}"
|
25
|
-
})
|
26
|
-
if ([200, 201].include? assignment_response.code)
|
27
|
-
info = JSON.parse(assignment_response.body)
|
28
|
-
puts "A Canvas assignment with the ID #{id} was found in course #{course}:"
|
29
|
-
type = "assignment"
|
20
|
+
if [200, 201].include? response.code
|
21
|
+
info = JSON.parse(response.body)
|
22
|
+
type = lesson_types.find {|type| url.match?("#{type}")}
|
23
|
+
type.delete_suffix!('zes')
|
24
|
+
type.delete_suffix!('s')
|
25
|
+
puts "\nA Canvas #{type} was found in course #{course} with the id #{id}"
|
26
|
+
break
|
30
27
|
end
|
31
28
|
rescue
|
32
29
|
end
|
30
|
+
end
|
31
|
+
|
32
|
+
|
33
33
|
[info, type]
|
34
34
|
end
|
35
35
|
|
36
36
|
def self.get_course_info(course, id)
|
37
37
|
if id
|
38
|
-
|
39
|
-
pp
|
40
|
-
pp
|
38
|
+
lesson_data = self.get_lesson_info(course, id)
|
39
|
+
pp lesson_data[0]
|
40
|
+
pp "\nLesson Type: #{lesson_data[1]}"
|
41
41
|
return
|
42
42
|
end
|
43
43
|
|
@@ -73,15 +73,24 @@ class RepositoryConverter
|
|
73
73
|
end
|
74
74
|
|
75
75
|
def self.add_fis_links(filepath, readme)
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
76
|
+
repo_path = self.get_repo_url(filepath)
|
77
|
+
header = self.create_github_link_header(repo_path)
|
78
|
+
header + readme
|
79
|
+
end
|
80
|
+
|
81
|
+
def self.create_github_link_header(repo_path)
|
82
|
+
repo_name = repo_path.split('/')[-1]
|
83
|
+
|
84
|
+
# add link to fork (forking handled by separate Flatiron server, generation of link handled via custom Canvas JS theme file)
|
85
|
+
github_fork_link = "<a class='fis-git-link' data-repo='#{repo_name}' href='#' target='_blank' rel='noopener'><img id='fork-img' title='Fork This Assignment' alt='Fork This Assignment' /></a>"
|
86
|
+
|
87
|
+
# add link to associated repository
|
88
|
+
# github_repo_link = "<a class='fis-git-link' href='#{repo_path}' target='_blank' rel='noopener'><img id='repo-img' title='Open GitHub Repo' alt='GitHub Repo' /></a>"
|
89
|
+
|
90
|
+
# add link to new issue form
|
91
|
+
github_issue_link = "<a class='fis-git-link' href='#{repo_path}/issues/new' target='_blank' rel='noopener'><img id='issue-img' title='Create New Issue' alt='Create New Issue' /></a>"
|
92
|
+
|
93
|
+
"<header class='fis-header' style='visibility: hidden;'>#{github_fork_link}#{github_issue_link}</header>"
|
85
94
|
end
|
86
95
|
|
87
96
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github-to-canvas
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.48
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- maxwellbenton
|
@@ -106,7 +106,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
106
106
|
- !ruby/object:Gem::Version
|
107
107
|
version: '0'
|
108
108
|
requirements: []
|
109
|
-
rubygems_version: 3.
|
109
|
+
rubygems_version: 3.1.4
|
110
110
|
signing_key:
|
111
111
|
specification_version: 4
|
112
112
|
summary: github-to-canvas is a tool for migrating and aligning GitHub content with
|