github-to-canvas 0.0.22 → 0.0.27

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 30ee9448d74c258ca7d0a142e4b2fa4bfa708b227014fd3ef9cd5daf483b0da7
4
- data.tar.gz: 84d2710f793fcf93beea70c5693554920b14890c0260e7d20bb28dbf1d3723c3
3
+ metadata.gz: eb0933e7879b19ca26982288527eb62ce59da160e7483109b9703dbe5103a4cb
4
+ data.tar.gz: 235afe75dcb268ef87a21e720af630c46fc3dee071e38b827ce7b925e82f022f
5
5
  SHA512:
6
- metadata.gz: 75c3662d1354d1c5ed0e83ec625eed59010dc254ec9fa5663a060d7f32e58cf937ead936dabf8debd1e3f3f2d07f26747c17945b3a99fc3054244fea9be518b2
7
- data.tar.gz: cbc3df60cb990b5c7fffd58b04a0a575c1ec2e4b513f68f7d080b724ee6da94726e14e4d405b77a38389ad1fe470b7c7b2fb03b8f40f00835bdbfebefe52c795
6
+ metadata.gz: 92ade0732354bbd82bd8b457e1ec17b192626c3fda9b39af1ea96585d75122fbd4907fae9bfdaa56d735f10ba88d4ff0291bdbbe2bcc95f4a00975cb1c017265
7
+ data.tar.gz: 7676ae7d369a5a98467525b8d8883bb8856771d8ac705dd3ef8a69eab53c931aeb9f342a8203027b55a8b5632a06c91fef9f098ac16e0d2754d5bfea24bead50
data/README.md CHANGED
@@ -1,5 +1,10 @@
1
1
  # GitHub to Canvas Gem
2
2
 
3
+ ## Objectives
4
+
5
+ 1. test
6
+ 2. test 2
7
+
3
8
  ## Introduction
4
9
 
5
10
  The `github-to-canvas` gem is designed to enable GitHub to Canvas LMS
@@ -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-and-footer]
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-and-footer -> 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-and-footer",
83
+ "Removes top lesson header and any Learn.co specific footer links before converting to HTML") do |r|
84
+ options[:remove_header_and_footer] = 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_and_footer: !!options[:remove_header_and_footer])
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_and_footer: !!options[:remove_header_and_footer])
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_and_footer: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_and_footer)
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_and_footer)
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_and_footer)
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_and_footer)
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_and_footer)
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_and_footer)
16
16
  if fis_links
17
17
  new_readme = RepositoryConverter.add_fis_links(filepath, new_readme)
18
18
  end
@@ -1,4 +1,3 @@
1
- require 'byebug'
2
1
  class GithubInterface
3
2
 
4
3
  def self.cd_into_and(filepath, command)
@@ -19,7 +18,7 @@ class GithubInterface
19
18
  def self.git_co_branch(filepath, branch)
20
19
  self.cd_into_and(filepath, "git checkout #{branch}")
21
20
  current_branch = self.get_current_branch(filepath)
22
-
21
+ puts "Current branch #{current_branch.strip}"
23
22
  if !current_branch.match(branch)
24
23
  puts "#{branch} branch not found. Exiting..."
25
24
  abort
@@ -1,11 +1,23 @@
1
1
  require 'redcarpet'
2
2
  class RepositoryConverter
3
3
 
4
- def self.convert(filepath, readme, branch)
4
+ def self.convert(filepath, readme, branch, remove_header_and_footer)
5
+ if remove_header_and_footer
6
+ readme = self.remove_header(readme)
7
+ readme = self.remove_footer(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
+
17
+ def self.remove_footer(readme)
18
+ readme.gsub(/<p (.+?)<\/p>/,"")
19
+ end
20
+
9
21
  def self.fix_local_images(filepath, readme, branch)
10
22
  raw_remote_url = self.set_raw_image_remote_url(filepath)
11
23
  self.adjust_local_markdown_images(readme, raw_remote_url, branch)
@@ -61,12 +73,14 @@ class RepositoryConverter
61
73
 
62
74
  def self.add_fis_links(filepath, readme)
63
75
  repo = self.get_repo_url(filepath)
64
- github_repo_link = "<a style='text-decoration: none;' href='#{repo}' target='_blank' rel='noopener'><img style='width: 40px; height: 40px; margin: 2px;' title='Open GitHub Repo' src='https://curriculum-content.s3.amazonaws.com/git-logo-gray.png' alt='Link to GitHub Repo' /></a>"
65
- github_issue_link = "<a style='text-decoration: none;' href='#{repo}/issues/new' target='_blank' rel='noopener'><img style='width: 40px; height: 40px; margin: 2px;' title='Create New Issue' src='https://curriculum-content.s3.amazonaws.com/flag-icon-gray.png' alt='Link to GitHub Repo Issue Form' /></a>"
66
-
67
- html = "<p style='margin: 0; padding: 0; position: absolute; right: 5px; top: 5px; margin: 0; padding: 0;'>#{github_repo_link}#{github_issue_link}</p>"
68
-
69
- readme + html
76
+ github_repo_link = "<a class='fis-git-link' href='#{repo}' target='_blank' rel='noopener'><img id='repo-img' title='Open GitHub Repo' alt='GitHub Repo' /></a>"
77
+ github_issue_link = "<a class='fis-git-link' href='#{repo}/issues/new' target='_blank' rel='noopener'><img id='issue-img' title='Create New Issue' alt='Create New Issue' /></a>"
78
+ thumbs_up_link = "<a id='thumbs-up' data-repository='#{repo.split('/')[-1]}'><img title='Thumbs up!' alt='thumbs up' /></a>"
79
+ thumbs_down_link = "<a id='thumbs-down' data-repository='#{repo.split('/')[-1]}'><img title='Thumbs down!' alt='thumbs down' /></a>"
80
+ feedback_link = "<h5>Have specific feedback? <a href='#{repo}/issues/new'>Tell us here!</a></h5>"
81
+ header = "<header class='fis-header' style='visibility: hidden;'>#{github_repo_link}#{github_issue_link}</header>"
82
+ footer = "<footer class='fis-footer' style='visibility: hidden;'><div class='fis-feedback'><h5>How do you feel about this lesson?</h5>#{thumbs_up_link}#{thumbs_down_link}</div>#{feedback_link}</footer>"
83
+ header + readme + footer
70
84
  end
71
85
 
72
86
  end
@@ -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_and_footer)
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_and_footer)
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_and_footer)
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_and_footer)
16
16
  if fis_links
17
17
  new_readme = RepositoryConverter.add_fis_links(filepath, new_readme)
18
18
  end
@@ -1,3 +1,3 @@
1
1
  class GithubToCanvas
2
- VERSION = "0.0.22"
2
+ VERSION = "0.0.27"
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.22
4
+ version: 0.0.27
5
5
  platform: ruby
6
6
  authors:
7
7
  - maxwellbenton