github-to-canvas 0.0.22 → 0.0.23

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: 30ee9448d74c258ca7d0a142e4b2fa4bfa708b227014fd3ef9cd5daf483b0da7
4
- data.tar.gz: 84d2710f793fcf93beea70c5693554920b14890c0260e7d20bb28dbf1d3723c3
3
+ metadata.gz: a883cc9d8163795840e4d49334c15a3610d7bf95f03ea2791b03ef0311d235d7
4
+ data.tar.gz: deb4ee908fe26df4255626f10b6e1ae9dc5a1ffd993e24b8cac399f835eb87ac
5
5
  SHA512:
6
- metadata.gz: 75c3662d1354d1c5ed0e83ec625eed59010dc254ec9fa5663a060d7f32e58cf937ead936dabf8debd1e3f3f2d07f26747c17945b3a99fc3054244fea9be518b2
7
- data.tar.gz: cbc3df60cb990b5c7fffd58b04a0a575c1ec2e4b513f68f7d080b724ee6da94726e14e4d405b77a38389ad1fe470b7c7b2fb03b8f40f00835bdbfebefe52c795
6
+ metadata.gz: 1cea54b28ccb0d3e6ffaaf6d271fe5e4317ca92d86abe3958c97c8b1415571e25fed4cddb7317936727575f6696b0d32a3985294d893e7c48851f1ea33b3d210
7
+ data.tar.gz: 20af85bf1dc7f8c25a6ff3fb247717d611f6fb74d24716ee96966ec1573fc12516e6223fd4099d0022adbf565ca79b233679976319b4673fb3d4e0a31da59ffb
@@ -19,6 +19,7 @@ OptionParser.new do |opts|
19
19
  github-to-canvas --create COURSE [--branch BRANCH] [--name NAME] [--type TYPE]
20
20
  github-to-canvas --create COURSE [--dry-run]
21
21
  github-to-canvas --create COURSE [--fis-links]
22
+ github-to-canvas --create COURSE [--fis-links] [--remove-header]
22
23
  github-to-canvas --align
23
24
  github-to-canvas --align [--branch BRANCH]
24
25
  github-to-canvas --align [--branch BRANCH] [--fis-links]
@@ -30,12 +31,13 @@ OptionParser.new do |opts|
30
31
 
31
32
  Example usage:
32
33
 
33
- github-to-canvas --create 154 -> Creates a lesson in course 154, deriving the name and type from the local repo
34
- 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
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
35
36
  github-to-canvas --create 154 --name "Fetch Lab" --type assignment -> Creates an assignment in course 154 with the provided name
36
- 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
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
37
38
  github-to-canvas --align -> Patches existing lessons in Canvas based on the .canvas file
38
- github-to-canvas --align --fis-links -> Patches existing lessons in Canvas based on the .canvas file, adding addition Flatiron School specific HTML
39
+ github-to-canvas --align --fis-links -> Patches existing lessons in Canvas based on the .canvas file, adds addition Flatiron School specific HTML
40
+ github-to-canvas --align --remove-header -> Patches existing lessons in Canvas based on the .canvas file, removes top lesson header before converting to HTML
39
41
 
40
42
  EOBANNER
41
43
 
@@ -54,7 +56,7 @@ OptionParser.new do |opts|
54
56
  end
55
57
  opts.on("-tTYPE", "--type TYPE",
56
58
  "Sets the type Canvas lesson to be created (page or assignment). If no type, type decided based on repository structure") do |type|
57
- if type == 'page' || type == 'assignment'
59
+ if type == 'page' || type == 'assignment' || type == 'discussion'
58
60
  options[:type] = type
59
61
  else
60
62
  puts "Invalid type. Defaulting to page"
@@ -70,13 +72,17 @@ OptionParser.new do |opts|
70
72
  options[:version] = true
71
73
  end
72
74
  opts.on("-d", "--dry-run",
73
- "Runs through creation without pushing to Canvas or GitHub") do |v|
75
+ "Runs through creation without pushing to Canvas or GitHub") do |d|
74
76
  options[:dry] = true
75
77
  end
76
78
  opts.on("-f", "--fis-links",
77
- "Adds additional Flatiron School HTML after markdown conversion") do |v|
79
+ "Adds additional Flatiron School HTML after markdown conversion") do |f|
78
80
  options[:fis] = true
79
81
  end
82
+ opts.on("-r", "--remove-header",
83
+ "Removes top lesson header before converting to HTML") do |r|
84
+ options[:remove_header] = true
85
+ end
80
86
 
81
87
  end.parse!
82
88
 
@@ -101,9 +107,25 @@ if !options[:name]
101
107
  end
102
108
 
103
109
  if options[:create]
104
- GithubToCanvas.new(mode: "create", course: options[:course], filepath: Dir.pwd, branch: options[:branch], name: options[:name], type: options[:type], dry: !!options[:dry], fis_links: !!options[:fis])
110
+ GithubToCanvas.new(mode: "create",
111
+ course: options[:course],
112
+ filepath: Dir.pwd,
113
+ branch: options[:branch],
114
+ name: options[:name],
115
+ type: options[:type],
116
+ dry: !!options[:dry],
117
+ fis_links: !!options[:fis],
118
+ remove_header: !!options[:remove_header])
105
119
  end
106
120
 
107
121
  if options[:align]
108
- GithubToCanvas.new(mode: "align", course: nil, filepath: Dir.pwd, branch: options[:branch], name: options[:name], type: options[:type], dry: !!options[:dry], fis_links: !!options[:fis])
122
+ GithubToCanvas.new(mode: "align",
123
+ course: nil,
124
+ filepath: Dir.pwd,
125
+ branch: options[:branch],
126
+ name: options[:name],
127
+ type: options[:type],
128
+ dry: !!options[:dry],
129
+ fis_links: !!options[:fis],
130
+ remove_header: !!options[:remove_header])
109
131
  end
@@ -9,7 +9,16 @@ require_relative './github-to-canvas/version'
9
9
 
10
10
  class GithubToCanvas
11
11
 
12
- def initialize(mode:, course:, filepath:Dir.pwd, branch:'master', name:File.basename(Dir.getwd), type:"page", dry:false, fis_links:false)
12
+ def initialize(mode:,
13
+ course:,
14
+ filepath:Dir.pwd,
15
+ branch:'master',
16
+ name:File.basename(Dir.getwd),
17
+ type:"page",
18
+ dry:false,
19
+ fis_links:false,
20
+ remove_header:false)
21
+
13
22
  if mode == 'version'
14
23
  puts VERSION
15
24
  return
@@ -17,12 +26,12 @@ class GithubToCanvas
17
26
 
18
27
  if mode == 'create'
19
28
  puts "github-to-canvas will now create a Canvas lesson based on the current repo"
20
- CreateCanvasLesson.new(course, filepath, branch, name, type, dry, fis_links)
29
+ CreateCanvasLesson.new(course, filepath, branch, name, type, dry, fis_links, remove_header)
21
30
  end
22
31
 
23
32
  if mode == 'align'
24
33
  puts "github-to-canvas will now align any existing Canvas lessons based on the current repo. NOTE: .canvas file must be present"
25
- UpdateCanvasLesson.new(filepath, branch, name, type, dry, fis_links)
34
+ UpdateCanvasLesson.new(filepath, branch, name, type, dry, fis_links, remove_header)
26
35
  end
27
36
  end
28
37
 
@@ -17,7 +17,11 @@ class CanvasInterface
17
17
  end
18
18
 
19
19
  def self.push_to_canvas(course_id, type, name, new_readme)
20
- url = "#{ENV['CANVAS_API_PATH']}/courses/#{course_id}/#{type}s"
20
+ if type == 'discussion'
21
+ url = "#{ENV['CANVAS_API_PATH']}/courses/#{course_id}/#{type}_topics"
22
+ else
23
+ url = "#{ENV['CANVAS_API_PATH']}/courses/#{course_id}/#{type}s"
24
+ end
21
25
  payload = self.build_payload(type, name, new_readme)
22
26
  begin
23
27
  RestClient.post(url, payload, headers={
@@ -46,6 +50,11 @@ class CanvasInterface
46
50
  'assignment[name]' => name,
47
51
  'assignment[description]' => new_readme
48
52
  }
53
+ elsif type == "discussion"
54
+ payload = {
55
+ 'title' => name,
56
+ 'message' => new_readme
57
+ }
49
58
  else
50
59
  payload = {
51
60
  'wiki_page[title]' => name,
@@ -1,18 +1,18 @@
1
1
  class CreateCanvasLesson
2
2
 
3
- def initialize(course, filepath, branch, name, type, dry_run, fis_links)
3
+ def initialize(course, filepath, branch, name, type, dry_run, fis_links, remove_header)
4
4
  name = name.split(/[- _]/).map(&:capitalize).join(' ')
5
5
  original_readme = File.read("#{filepath}/README.md")
6
6
  if !original_readme
7
7
  puts 'README.md 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)
10
+ create_canvas_lesson(original_readme, course, filepath, branch, name, type, dry_run, fis_links, remove_header)
11
11
  end
12
12
 
13
- def create_canvas_lesson(readme, course, filepath, branch, name, type, dry_run, fis_links)
13
+ def create_canvas_lesson(readme, course, filepath, branch, name, type, dry_run, fis_links, remove_header)
14
14
  GithubInterface.get_updated_repo(filepath, branch)
15
- new_readme = RepositoryConverter.convert(filepath, readme, branch)
15
+ new_readme = RepositoryConverter.convert(filepath, readme, branch, remove_header)
16
16
  if fis_links
17
17
  new_readme = RepositoryConverter.add_fis_links(filepath, new_readme)
18
18
  end
@@ -19,7 +19,7 @@ class GithubInterface
19
19
  def self.git_co_branch(filepath, branch)
20
20
  self.cd_into_and(filepath, "git checkout #{branch}")
21
21
  current_branch = self.get_current_branch(filepath)
22
-
22
+ puts "Current branch #{current_branch.strip}"
23
23
  if !current_branch.match(branch)
24
24
  puts "#{branch} branch not found. Exiting..."
25
25
  abort
@@ -1,11 +1,19 @@
1
1
  require 'redcarpet'
2
+ require 'byebug'
2
3
  class RepositoryConverter
3
4
 
4
- def self.convert(filepath, readme, branch)
5
+ def self.convert(filepath, readme, branch, remove_header)
6
+ if remove_header
7
+ self.remove_header(readme)
8
+ end
5
9
  self.fix_local_images(filepath, readme, branch)
6
10
  self.convert_to_html(filepath, readme)
7
11
  end
8
12
 
13
+ def self.remove_header(readme)
14
+ readme.gsub!(/^#.+?\n\n/,"")
15
+ end
16
+
9
17
  def self.fix_local_images(filepath, readme, branch)
10
18
  raw_remote_url = self.set_raw_image_remote_url(filepath)
11
19
  self.adjust_local_markdown_images(readme, raw_remote_url, branch)
@@ -1,18 +1,18 @@
1
1
  class UpdateCanvasLesson
2
2
 
3
- def initialize(filepath, branch, name, type, dry_run, fis_links)
3
+ def initialize(filepath, branch, name, type, dry_run, fis_links, remove_header)
4
4
  name = name.split(/[- _]/).map(&:capitalize).join(' ')
5
5
  readme = File.read("#{filepath}/README.md")
6
6
  if !readme
7
7
  puts 'README.md 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)
10
+ update_canvas_lesson(readme, filepath, branch, name, type, dry_run, fis_links, remove_header)
11
11
  end
12
12
 
13
- def update_canvas_lesson(readme, filepath, branch, name, type, dry_run, fis_links)
13
+ def update_canvas_lesson(readme, filepath, branch, name, type, dry_run, fis_links, remove_header)
14
14
  GithubInterface.get_updated_repo(filepath, branch)
15
- new_readme = RepositoryConverter.convert(filepath, readme, branch)
15
+ new_readme = RepositoryConverter.convert(filepath, readme, branch, remove_header)
16
16
  if fis_links
17
17
  new_readme = RepositoryConverter.add_fis_links(filepath, new_readme)
18
18
  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.22
4
+ version: 0.0.23
5
5
  platform: ruby
6
6
  authors:
7
7
  - maxwellbenton