github-to-canvas 0.0.26 → 0.0.31

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 49af565aafcbebe3151fdf8546a6153600e6425afcf1af8034fdc914d4003b51
4
- data.tar.gz: 01a5ac504f7d905394f1eb42f2cec5b89237f1e2af7f7e42fad3bacd6001b0de
3
+ metadata.gz: cbe5aa05e4c77ad585a787d3d47d7f6f9bd3c1459888f6fc1bbba4d28270744d
4
+ data.tar.gz: 27491ba2f7073b47ba291bf81796649346d3ec5d0f1203d2715af1373fde7f6a
5
5
  SHA512:
6
- metadata.gz: 535eeae8522d06b60b35a5f26a7a427fecd28cfa4c89f8d359b472e290a34ef58b5a7532f79c28219a20a8333bdd643052b497052b853749ecfc9ff0ba91c174
7
- data.tar.gz: c7dc94133876c712d5e3f0fc1003553d2ea3f21b967d8ffa742fa98be1147f09f7024f0f0baa5ffc6f286a64dc9bbb6f7ab90b480da59449956fba0faf69aec5
6
+ metadata.gz: 164d14066a9a97e873aa6d348fc16ee6bd9dd56d5670753490d0729bda8202a7d2b94881ef0c40f44bf8328383b176ec7809f7295ee0f88639310c1827040f7e
7
+ data.tar.gz: 04640d7007324b1b75b4afc123eabec3e9e1fff600da90b1ad094ce04ba72fd1df6611f9e9e304fb0023d1779316f3d6d40a551f64ecab86226add8f0799565b
data/README.md CHANGED
@@ -1,10 +1,5 @@
1
1
  # GitHub to Canvas Gem
2
2
 
3
- ## Objectives
4
-
5
- 1. test
6
- 2. test 2
7
-
8
3
  ## Introduction
9
4
 
10
5
  The `github-to-canvas` gem is designed to enable GitHub to Canvas LMS
@@ -2,7 +2,6 @@
2
2
 
3
3
  require 'optparse'
4
4
  require 'github-to-canvas'
5
-
6
5
  options = {}
7
6
  OptionParser.new do |opts|
8
7
  opts.banner = <<-EOBANNER
@@ -13,13 +12,13 @@ OptionParser.new do |opts|
13
12
  https://github.com/learn-co-curriculum/github-to-canvas
14
13
 
15
14
  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 --create COURSE [--dry-run]
21
- github-to-canvas --create COURSE [--fis-links]
22
- github-to-canvas --create COURSE [--fis-links] [--remove-header-and-footer]
15
+ github-to-canvas --create-lesson COURSE
16
+ github-to-canvas --create-lesson COURSE [--save]
17
+ github-to-canvas --create-lesson COURSE [--branch BRANCH]
18
+ github-to-canvas --create-lesson COURSE [--branch BRANCH] [--name NAME]
19
+ github-to-canvas --create-lesson COURSE [--branch BRANCH] [--name NAME] [--type TYPE]
20
+ github-to-canvas --create-lesson COURSE [--fis-links]
21
+ github-to-canvas --create-lesson COURSE [--fis-links] [--remove-header-and-footer]
23
22
  github-to-canvas --align
24
23
  github-to-canvas --align [--branch BRANCH]
25
24
  github-to-canvas --align [--branch BRANCH] [--fis-links]
@@ -31,19 +30,19 @@ OptionParser.new do |opts|
31
30
 
32
31
  Example usage:
33
32
 
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
33
+ github-to-canvas --create-lesson 154 -> Creates a lesson in course 154, derives the name and type from the local repo
34
+ 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
35
+ github-to-canvas --create-lesson 154 --name "Fetch Lab" --type assignment -> Creates an assignment in course 154 with the provided name
36
+ 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
37
  github-to-canvas --align -> Patches existing lessons in Canvas based on the .canvas file
39
38
  github-to-canvas --align --fis-links -> Patches existing lessons in Canvas based on the .canvas file, adds addition Flatiron School specific HTML
40
39
  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
40
 
42
41
  EOBANNER
43
42
 
44
- opts.on("-cCOURSE", "--create COURSE",
43
+ opts.on("-cCOURSE", "--create-lesson COURSE",
45
44
  "Creates a new canvas lesson, converting the local repository's README.md to HTML. Adds .canvas file to remote repository") do |course|
46
- options[:create] = true
45
+ options[:create_lesson] = true
47
46
  options[:course] = course
48
47
  end
49
48
  opts.on("-bBRANCH", "--branch BRANCH",
@@ -63,6 +62,14 @@ OptionParser.new do |opts|
63
62
  options[:type] = "page"
64
63
  end
65
64
  end
65
+ opts.on("-fFILE", "--file FILE",
66
+ "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|
67
+ options[:file_to_convert] = file
68
+ end
69
+ opts.on("-s", "--save-to-github",
70
+ "Creates a local .canvas file and attempts to commit and push it to the GitHub repository") do |s|
71
+ options[:save_to_github] = true
72
+ end
66
73
  opts.on("-a", "--align",
67
74
  "Updates a canvas lesson based on the local repository's README.md") do |a|
68
75
  options[:align] = true
@@ -71,11 +78,7 @@ OptionParser.new do |opts|
71
78
  "Displays current gem version") do |v|
72
79
  options[:version] = true
73
80
  end
74
- opts.on("-d", "--dry-run",
75
- "Runs through creation without pushing to Canvas or GitHub") do |d|
76
- options[:dry] = true
77
- end
78
- opts.on("-f", "--fis-links",
81
+ opts.on("-l", "--fis-links",
79
82
  "Adds additional Flatiron School HTML after markdown conversion") do |f|
80
83
  options[:fis] = true
81
84
  end
@@ -90,6 +93,10 @@ if options[:version]
90
93
  GithubToCanvas.new(mode: 'version', course: nil)
91
94
  end
92
95
 
96
+ if !options[:file_to_convert]
97
+ options[:file_to_convert] = "README.md"
98
+ end
99
+
93
100
  if !options[:type]
94
101
  if Dir.glob("**/*/").empty?
95
102
  options[:type] = "page"
@@ -103,17 +110,22 @@ if !options[:branch]
103
110
  end
104
111
 
105
112
  if !options[:name]
106
- options[:name] = File.basename(Dir.getwd)
113
+ if options[:file_to_convert]
114
+ options[:name] = options[:file_to_convert]
115
+ else
116
+ options[:name] = File.basename(Dir.getwd)
117
+ end
107
118
  end
108
119
 
109
- if options[:create]
120
+ if options[:create_lesson]
110
121
  GithubToCanvas.new(mode: "create",
111
122
  course: options[:course],
112
123
  filepath: Dir.pwd,
124
+ file_to_convert: options[:file_to_convert],
113
125
  branch: options[:branch],
114
126
  name: options[:name],
115
127
  type: options[:type],
116
- dry: !!options[:dry],
128
+ save_to_github: !!options[:save_to_github],
117
129
  fis_links: !!options[:fis],
118
130
  remove_header_and_footer: !!options[:remove_header_and_footer])
119
131
  end
@@ -121,11 +133,12 @@ end
121
133
  if options[:align]
122
134
  GithubToCanvas.new(mode: "align",
123
135
  course: nil,
124
- filepath: Dir.pwd,
125
- branch: options[:branch],
126
- name: options[:name],
127
- type: options[:type],
128
- dry: !!options[:dry],
136
+ filepath: Dir.pwd,
137
+ file_to_convert: options[:file_to_convert],
138
+ branch: options[:branch],
139
+ name: options[:name],
140
+ type: options[:type],
141
+ save_to_github: !!options[:save_to_github],
129
142
  fis_links: !!options[:fis],
130
143
  remove_header_and_footer: !!options[:remove_header_and_footer])
131
144
  end
@@ -12,10 +12,11 @@ class GithubToCanvas
12
12
  def initialize(mode:,
13
13
  course:,
14
14
  filepath:Dir.pwd,
15
- branch:'master',
15
+ file_to_convert:'README.md',
16
+ branch:'master',
16
17
  name:File.basename(Dir.getwd),
17
18
  type:"page",
18
- dry:false,
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, dry, fis_links, remove_header_and_footer)
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, dry, fis_links, remove_header_and_footer)
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
 
@@ -1,16 +1,15 @@
1
1
  require 'yaml'
2
-
3
2
  class CanvasDotfile
4
3
 
5
4
  def self.update_or_create(filepath, response, course, type)
6
5
  if File.file?(".canvas")
7
- if type == "assignment"
6
+ if type == "assignment" || type == "discussion"
8
7
  canvas_data = self.update_assignment_data(response, course, type)
9
8
  else
10
9
  canvas_data = self.update_page_data(response, course, type)
11
10
  end
12
11
  else
13
- if type == "assignment"
12
+ if type == "assignment" || type == "discussion"
14
13
  canvas_data = self.create_assignment_data(response, course, type)
15
14
  else
16
15
  canvas_data = self.create_page_data(response, course, type)
@@ -1,19 +1,14 @@
1
1
  require 'json'
2
2
  require 'rest-client'
3
-
4
3
  class CanvasInterface
5
4
 
6
- def self.submit_to_canvas(course_id, type, name, readme, dry_run = false)
7
- if dry_run
8
- puts 'DRY RUN: Skipping push to Canvas'
9
- else
10
- response = self.push_to_canvas(course_id, type, name, readme)
11
- if ![200, 201].include? response.code
12
- puts "Canvas push failed. #{response.code} status code returned "
13
- abort
14
- end
15
- 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
16
10
  end
11
+ JSON.parse(response.body)
17
12
  end
18
13
 
19
14
  def self.push_to_canvas(course_id, type, name, new_readme)
@@ -29,11 +24,16 @@ class CanvasInterface
29
24
  })
30
25
  rescue
31
26
  puts "Something went wrong while pushing lesson #{id} to course #{course_id}"
27
+ abort
32
28
  end
33
29
  end
34
30
 
35
31
  def self.update_existing_lesson(course_id, id, type, name, new_readme, dry_run)
36
- url = "#{ENV['CANVAS_API_PATH']}/courses/#{course_id}/#{type}s/#{id}"
32
+ if type == "discussion"
33
+ url = "#{ENV['CANVAS_API_PATH']}/courses/#{course_id}/#{type}_topics/#{id}"
34
+ else
35
+ url = "#{ENV['CANVAS_API_PATH']}/courses/#{course_id}/#{type}s/#{id}"
36
+ end
37
37
  payload = self.build_payload(type, name, new_readme)
38
38
  begin
39
39
  RestClient.put(url, payload, headers={
@@ -41,6 +41,7 @@ class CanvasInterface
41
41
  })
42
42
  rescue
43
43
  puts "Something went wrong while pushing lesson #{id} to course #{course_id}"
44
+ # abort
44
45
  end
45
46
  end
46
47
 
@@ -1,29 +1,31 @@
1
1
  class CreateCanvasLesson
2
2
 
3
- def initialize(course, filepath, branch, name, type, dry_run, fis_links, remove_header_and_footer)
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
- original_readme = File.read("#{filepath}/README.md")
6
- if !original_readme
7
- puts 'README.md not found in current directory. Exiting...'
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(original_readme, course, filepath, branch, name, type, dry_run, fis_links, remove_header_and_footer)
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(readme, course, filepath, branch, name, type, dry_run, fis_links, remove_header_and_footer)
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
- new_readme = RepositoryConverter.convert(filepath, readme, branch, remove_header_and_footer)
15
+ new_html = RepositoryConverter.convert(filepath, markdown, branch, remove_header_and_footer)
16
16
  if fis_links
17
- new_readme = RepositoryConverter.add_fis_links(filepath, new_readme)
17
+ new_html = RepositoryConverter.add_fis_links(filepath, new_html)
18
18
  end
19
- response = CanvasInterface.submit_to_canvas(course, type, name, new_readme, dry_run)
20
- if dry_run
21
- puts 'DRY RUN: Skipping dotfile creation and push to GitHub'
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
@@ -5,7 +5,6 @@ class RepositoryConverter
5
5
  if remove_header_and_footer
6
6
  readme = self.remove_header(readme)
7
7
  readme = self.remove_footer(readme)
8
- p readme
9
8
  end
10
9
  self.fix_local_images(filepath, readme, branch)
11
10
  self.convert_to_html(filepath, readme)
@@ -1,24 +1,25 @@
1
1
  class UpdateCanvasLesson
2
2
 
3
- def initialize(filepath, branch, name, type, dry_run, fis_links, remove_header_and_footer)
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
- readme = File.read("#{filepath}/README.md")
6
- if !readme
7
- puts 'README.md not found in current directory. Exiting...'
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(readme, filepath, branch, name, type, dry_run, fis_links, remove_header_and_footer)
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(readme, filepath, branch, name, type, dry_run, fis_links, remove_header_and_footer)
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
- new_readme = RepositoryConverter.convert(filepath, readme, branch, remove_header_and_footer)
15
+ new_html = RepositoryConverter.convert(filepath, markdown, branch, remove_header_and_footer)
16
16
  if fis_links
17
- new_readme = RepositoryConverter.add_fis_links(filepath, new_readme)
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], type, name, new_readme, dry_run)
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
 
@@ -1,3 +1,3 @@
1
1
  class GithubToCanvas
2
- VERSION = "0.0.26"
2
+ VERSION = "0.0.31"
3
3
  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.26
4
+ version: 0.0.31
5
5
  platform: ruby
6
6
  authors:
7
7
  - maxwellbenton