github-to-canvas 0.0.28 → 0.0.29
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/github-to-canvas +35 -23
- data/lib/github-to-canvas.rb +5 -4
- data/lib/github-to-canvas/canvas_interface.rb +8 -10
- data/lib/github-to-canvas/create_canvas_lesson.rb +14 -12
- data/lib/github-to-canvas/update_canvas_lesson.rb +10 -9
- data/lib/github-to-canvas/version.rb +1 -1
- 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: 277ca5f225d7b666fd529a1914309ce575622645455b0b073bd37a8ab19145cf
|
4
|
+
data.tar.gz: 8849918914e4201e73f6a6143e847ce2f30ea6d7bfcb8a6aa48f3adb8c6b88e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 04adb2efc3fe4b57e358de6974ecbd0097cd67a26c5a72bbbf1de1bd49dbd48dad44af6828a67c9ab8f0ef97bbe73b58d911be49637c3f24992ecd14bbe20ab8
|
7
|
+
data.tar.gz: bdf9b9f2fa0bf3a0bba2b5816d89f3461081f81a5ad92262b0a3a0599f1da21ba1b041f445ca1c13e6766333d2197d90dab17a0481b091345efb68c157c26d3b
|
data/bin/github-to-canvas
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require 'optparse'
|
4
4
|
require 'github-to-canvas'
|
5
|
-
|
5
|
+
require 'byebug'
|
6
6
|
options = {}
|
7
7
|
OptionParser.new do |opts|
|
8
8
|
opts.banner = <<-EOBANNER
|
@@ -13,13 +13,13 @@ OptionParser.new do |opts|
|
|
13
13
|
https://github.com/learn-co-curriculum/github-to-canvas
|
14
14
|
|
15
15
|
Commands:
|
16
|
-
github-to-canvas --create COURSE
|
17
|
-
github-to-canvas --create COURSE [--
|
18
|
-
github-to-canvas --create COURSE [--branch BRANCH]
|
19
|
-
github-to-canvas --create COURSE [--branch BRANCH] [--name NAME]
|
20
|
-
github-to-canvas --create COURSE [--
|
21
|
-
github-to-canvas --create COURSE [--fis-links]
|
22
|
-
github-to-canvas --create COURSE [--fis-links] [--remove-header-and-footer]
|
16
|
+
github-to-canvas --create-lesson COURSE
|
17
|
+
github-to-canvas --create-lesson COURSE [--save]
|
18
|
+
github-to-canvas --create-lesson COURSE [--branch BRANCH]
|
19
|
+
github-to-canvas --create-lesson COURSE [--branch BRANCH] [--name NAME]
|
20
|
+
github-to-canvas --create-lesson COURSE [--branch BRANCH] [--name NAME] [--type TYPE]
|
21
|
+
github-to-canvas --create-lesson COURSE [--fis-links]
|
22
|
+
github-to-canvas --create-lesson COURSE [--fis-links] [--remove-header-and-footer]
|
23
23
|
github-to-canvas --align
|
24
24
|
github-to-canvas --align [--branch BRANCH]
|
25
25
|
github-to-canvas --align [--branch BRANCH] [--fis-links]
|
@@ -31,19 +31,19 @@ OptionParser.new do |opts|
|
|
31
31
|
|
32
32
|
Example usage:
|
33
33
|
|
34
|
-
github-to-canvas --create 154 -> Creates a lesson in course 154, derives the name and type from the local repo
|
35
|
-
github-to-canvas --create 154 --name "Fetch Lab" -> Creates a lesson in course 154 with the provided name, derives the type from the local repo
|
36
|
-
github-to-canvas --create 154 --name "Fetch Lab" --type assignment -> Creates an assignment in course 154 with the provided name
|
37
|
-
github-to-canvas --create 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
|
34
|
+
github-to-canvas --create-lesson 154 -> Creates a lesson in course 154, derives the name and type from the local repo
|
35
|
+
github-to-canvas --create-lesson 154 --name "Fetch Lab" -> Creates a lesson in course 154 with the provided name, derives the type from the local repo
|
36
|
+
github-to-canvas --create-lesson 154 --name "Fetch Lab" --type assignment -> Creates an assignment in course 154 with the provided name
|
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
39
|
github-to-canvas --align --fis-links -> Patches existing lessons in Canvas based on the .canvas file, adds addition Flatiron School specific HTML
|
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
|
|
42
42
|
EOBANNER
|
43
43
|
|
44
|
-
opts.on("-cCOURSE", "--create COURSE",
|
44
|
+
opts.on("-cCOURSE", "--create-lesson COURSE",
|
45
45
|
"Creates a new canvas lesson, converting the local repository's README.md to HTML. Adds .canvas file to remote repository") do |course|
|
46
|
-
options[:
|
46
|
+
options[:create_lesson] = true
|
47
47
|
options[:course] = course
|
48
48
|
end
|
49
49
|
opts.on("-bBRANCH", "--branch BRANCH",
|
@@ -63,6 +63,14 @@ OptionParser.new do |opts|
|
|
63
63
|
options[:type] = "page"
|
64
64
|
end
|
65
65
|
end
|
66
|
+
opts.on("-fFILE", "--file FILE",
|
67
|
+
"Looks for and uses a markdown file in the currentt folder as source for conversion. Default file is README.md. Skips writing .canvas to repository") do |file|
|
68
|
+
options[:file_to_convert] = file
|
69
|
+
end
|
70
|
+
opts.on("-s", "--save-to-github",
|
71
|
+
"Creates a local .canvas file and attempts to commit and push it to the GitHub repository") do |s|
|
72
|
+
options[:save_to_github] = true
|
73
|
+
end
|
66
74
|
opts.on("-a", "--align",
|
67
75
|
"Updates a canvas lesson based on the local repository's README.md") do |a|
|
68
76
|
options[:align] = true
|
@@ -71,11 +79,7 @@ OptionParser.new do |opts|
|
|
71
79
|
"Displays current gem version") do |v|
|
72
80
|
options[:version] = true
|
73
81
|
end
|
74
|
-
opts.on("-
|
75
|
-
"Runs through creation without pushing to Canvas or GitHub") do |d|
|
76
|
-
options[:dry] = true
|
77
|
-
end
|
78
|
-
opts.on("-f", "--fis-links",
|
82
|
+
opts.on("-l", "--fis-links",
|
79
83
|
"Adds additional Flatiron School HTML after markdown conversion") do |f|
|
80
84
|
options[:fis] = true
|
81
85
|
end
|
@@ -90,6 +94,10 @@ if options[:version]
|
|
90
94
|
GithubToCanvas.new(mode: 'version', course: nil)
|
91
95
|
end
|
92
96
|
|
97
|
+
if !options[:file_to_convert]
|
98
|
+
options[:file_to_convert] = "README.md"
|
99
|
+
end
|
100
|
+
|
93
101
|
if !options[:type]
|
94
102
|
if Dir.glob("**/*/").empty?
|
95
103
|
options[:type] = "page"
|
@@ -106,14 +114,17 @@ if !options[:name]
|
|
106
114
|
options[:name] = File.basename(Dir.getwd)
|
107
115
|
end
|
108
116
|
|
109
|
-
|
117
|
+
byebug
|
118
|
+
|
119
|
+
if options[:create_lesson]
|
110
120
|
GithubToCanvas.new(mode: "create",
|
111
121
|
course: options[:course],
|
112
122
|
filepath: Dir.pwd,
|
123
|
+
file_to_convert: options[:file_to_convert],
|
113
124
|
branch: options[:branch],
|
114
125
|
name: options[:name],
|
115
126
|
type: options[:type],
|
116
|
-
|
127
|
+
save_to_github: !!options[:save_to_github],
|
117
128
|
fis_links: !!options[:fis],
|
118
129
|
remove_header_and_footer: !!options[:remove_header_and_footer])
|
119
130
|
end
|
@@ -121,11 +132,12 @@ end
|
|
121
132
|
if options[:align]
|
122
133
|
GithubToCanvas.new(mode: "align",
|
123
134
|
course: nil,
|
124
|
-
filepath: Dir.pwd,
|
135
|
+
filepath: Dir.pwd,
|
136
|
+
file_to_convert: options[:file_to_convert],
|
125
137
|
branch: options[:branch],
|
126
138
|
name: options[:name],
|
127
139
|
type: options[:type],
|
128
|
-
|
140
|
+
save_to_github: !!options[:save_to_github],
|
129
141
|
fis_links: !!options[:fis],
|
130
142
|
remove_header_and_footer: !!options[:remove_header_and_footer])
|
131
143
|
end
|
data/lib/github-to-canvas.rb
CHANGED
@@ -12,10 +12,11 @@ class GithubToCanvas
|
|
12
12
|
def initialize(mode:,
|
13
13
|
course:,
|
14
14
|
filepath:Dir.pwd,
|
15
|
-
|
15
|
+
file_to_convert:'README.md',
|
16
|
+
branch:'master',
|
16
17
|
name:File.basename(Dir.getwd),
|
17
18
|
type:"page",
|
18
|
-
|
19
|
+
save_to_github:false,
|
19
20
|
fis_links:false,
|
20
21
|
remove_header_and_footer:false)
|
21
22
|
|
@@ -26,12 +27,12 @@ class GithubToCanvas
|
|
26
27
|
|
27
28
|
if mode == 'create'
|
28
29
|
puts "github-to-canvas will now create a Canvas lesson based on the current repo"
|
29
|
-
CreateCanvasLesson.new(course, filepath, branch, name, type,
|
30
|
+
CreateCanvasLesson.new(course, filepath, file_to_convert, branch, name, type, save_to_github, fis_links, remove_header_and_footer)
|
30
31
|
end
|
31
32
|
|
32
33
|
if mode == 'align'
|
33
34
|
puts "github-to-canvas will now align any existing Canvas lessons based on the current repo. NOTE: .canvas file must be present"
|
34
|
-
UpdateCanvasLesson.new(filepath, branch, name, type,
|
35
|
+
UpdateCanvasLesson.new(filepath, file_to_convert, branch, name, type, save_to_github, fis_links, remove_header_and_footer)
|
35
36
|
end
|
36
37
|
end
|
37
38
|
|
@@ -2,17 +2,13 @@ require 'json'
|
|
2
2
|
require 'rest-client'
|
3
3
|
class CanvasInterface
|
4
4
|
|
5
|
-
def self.submit_to_canvas(course_id, type, name, readme
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
if ![200, 201].include? response.code
|
11
|
-
puts "Canvas push failed. #{response.code} status code returned "
|
12
|
-
abort
|
13
|
-
end
|
14
|
-
JSON.parse(response.body)
|
5
|
+
def self.submit_to_canvas(course_id, type, name, readme)
|
6
|
+
response = self.push_to_canvas(course_id, type, name, readme)
|
7
|
+
if ![200, 201].include? response.code
|
8
|
+
puts "Canvas push failed. #{response.code} status code returned "
|
9
|
+
abort
|
15
10
|
end
|
11
|
+
JSON.parse(response.body)
|
16
12
|
end
|
17
13
|
|
18
14
|
def self.push_to_canvas(course_id, type, name, new_readme)
|
@@ -28,6 +24,7 @@ class CanvasInterface
|
|
28
24
|
})
|
29
25
|
rescue
|
30
26
|
puts "Something went wrong while pushing lesson #{id} to course #{course_id}"
|
27
|
+
abort
|
31
28
|
end
|
32
29
|
end
|
33
30
|
|
@@ -44,6 +41,7 @@ class CanvasInterface
|
|
44
41
|
})
|
45
42
|
rescue
|
46
43
|
puts "Something went wrong while pushing lesson #{id} to course #{course_id}"
|
44
|
+
# abort
|
47
45
|
end
|
48
46
|
end
|
49
47
|
|
@@ -1,29 +1,31 @@
|
|
1
1
|
class CreateCanvasLesson
|
2
2
|
|
3
|
-
def initialize(course, filepath, branch, name, type,
|
3
|
+
def initialize(course, filepath, file_to_convert, branch, name, type, save_to_github, fis_links, remove_header_and_footer)
|
4
4
|
name = name.split(/[- _]/).map(&:capitalize).join(' ')
|
5
|
-
|
6
|
-
if !
|
7
|
-
puts
|
5
|
+
markdown = File.read("#{filepath}/#{file_to_convert}")
|
6
|
+
if !markdown
|
7
|
+
puts "#{file_to_convert} not found in current directory. Exiting..."
|
8
8
|
abort
|
9
9
|
end
|
10
|
-
create_canvas_lesson(
|
10
|
+
create_canvas_lesson(markdown, course, filepath, branch, name, type, save_to_github, fis_links, remove_header_and_footer)
|
11
11
|
end
|
12
12
|
|
13
|
-
def create_canvas_lesson(
|
13
|
+
def create_canvas_lesson(markdown, course, filepath, branch, name, type, save_to_github, fis_links, remove_header_and_footer)
|
14
14
|
GithubInterface.get_updated_repo(filepath, branch)
|
15
|
-
|
15
|
+
new_html = RepositoryConverter.convert(filepath, markdown, branch, remove_header_and_footer)
|
16
16
|
if fis_links
|
17
|
-
|
17
|
+
new_html = RepositoryConverter.add_fis_links(filepath, new_html)
|
18
18
|
end
|
19
|
-
response = CanvasInterface.submit_to_canvas(course, type, name,
|
20
|
-
if
|
21
|
-
puts '
|
22
|
-
else
|
19
|
+
response = CanvasInterface.submit_to_canvas(course, type, name, new_html)
|
20
|
+
if save_to_github
|
21
|
+
puts 'Creating .canvas file'
|
23
22
|
CanvasDotfile.update_or_create(filepath, response, course, type)
|
23
|
+
puts 'Commiting .canvas file'
|
24
24
|
CanvasDotfile.commit_canvas_dotfile(filepath)
|
25
|
+
puts 'Pushing .canvas file'
|
25
26
|
GithubInterface.git_push(filepath, branch)
|
26
27
|
end
|
28
|
+
puts "Canvas lesson created. Lesson available at #{response['html_url']}."
|
27
29
|
end
|
28
30
|
|
29
31
|
end
|
@@ -1,24 +1,25 @@
|
|
1
1
|
class UpdateCanvasLesson
|
2
2
|
|
3
|
-
def initialize(filepath, branch, name, type,
|
3
|
+
def initialize(filepath, branch, name, type, save_to_github, fis_links, remove_header_and_footer)
|
4
4
|
name = name.split(/[- _]/).map(&:capitalize).join(' ')
|
5
|
-
|
6
|
-
if !
|
7
|
-
puts
|
5
|
+
markdown = File.read("#{filepath}/#{file_to_convert}")
|
6
|
+
if !markdown
|
7
|
+
puts "#{file_to_convert} not found in current directory. Exiting..."
|
8
8
|
abort
|
9
9
|
end
|
10
|
-
update_canvas_lesson(
|
10
|
+
update_canvas_lesson(markdown, filepath, branch, name, type, save_to_github, fis_links, remove_header_and_footer)
|
11
11
|
end
|
12
12
|
|
13
|
-
def update_canvas_lesson(
|
13
|
+
def update_canvas_lesson(markdown, filepath, branch, name, type, save_to_github, fis_links, remove_header_and_footer)
|
14
14
|
GithubInterface.get_updated_repo(filepath, branch)
|
15
|
-
|
15
|
+
new_html = RepositoryConverter.convert(filepath, markdown, branch, remove_header_and_footer)
|
16
16
|
if fis_links
|
17
|
-
|
17
|
+
new_html = RepositoryConverter.add_fis_links(filepath, new_html) # adds Flatiron School specific header and footer
|
18
18
|
end
|
19
19
|
canvas_data = CanvasDotfile.read_canvas_data
|
20
20
|
canvas_data[:lessons].each { |lesson|
|
21
|
-
CanvasInterface.update_existing_lesson(lesson[:course_id], lesson[:id], lesson[:type], name,
|
21
|
+
response = CanvasInterface.update_existing_lesson(lesson[:course_id], lesson[:id], lesson[:type], name, new_html, save_to_github)
|
22
|
+
puts "Canvas lesson created. Lesson available at #{response['html_url']}."
|
22
23
|
}
|
23
24
|
end
|
24
25
|
|