github-to-canvas 0.0.28 → 0.0.33

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: a2d55d83e956d2f1437ef00fced0e5908ed5e5c4db1b09450a5bc993544a040f
4
- data.tar.gz: 78a2d3cef6c5814d9bf18b68dd63561e5c79f4d342272229689fc03f411cae44
3
+ metadata.gz: b2c341073812e571a855d05baf5758d83b0bd7cbb606e451db71d7cfe2150c6c
4
+ data.tar.gz: 613b6db5c7f1eadbbfb35c958992b2e40cae31d7945d45749622105ab5dbcf0d
5
5
  SHA512:
6
- metadata.gz: cb37cb15e34de3981106ea56343e310542a3032e9a82eb529e0d3c52d741bf396771cff2e78feeeffce5374a0602141693d673e0187d5d77dbcd0523bc43c55a
7
- data.tar.gz: 5615ccc3805322be5170f508cfe4726377a12dd2d0e12690b2f7d622ae5cb43b8977f30e7229fd5523ded91645e96b67f91bc8024bcddf605da582c7e0088dca
6
+ metadata.gz: f1ad254f9eaba7717b17f2b0d3fe97d5ef02c02e7cde65043da8d094bb82b11b8aefae1d4d01db70573f32b4c0408008976755e2120e7bcf64a8591a6b007aed
7
+ data.tar.gz: 2d09b99e514ea0896bd819ed1d93835bfa43e45c020d2c1f504ddedcc9daecf2164c81bded178c56b52de3478b26d56555ea94796ec436b1b8cb4becc43ee85f
@@ -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
@@ -103,17 +106,23 @@ if !options[:branch]
103
106
  end
104
107
 
105
108
  if !options[:name]
106
- options[:name] = File.basename(Dir.getwd)
109
+ if options[:file_to_convert]
110
+ options[:name] = options[:file_to_convert]
111
+ else
112
+ options[:name] = File.basename(Dir.getwd)
113
+ options[:file_to_convert] = "README.md"
114
+ end
107
115
  end
108
116
 
109
- if options[:create]
117
+ if options[:create_lesson]
110
118
  GithubToCanvas.new(mode: "create",
111
119
  course: options[:course],
112
120
  filepath: Dir.pwd,
121
+ file_to_convert: options[:file_to_convert],
113
122
  branch: options[:branch],
114
123
  name: options[:name],
115
124
  type: options[:type],
116
- dry: !!options[:dry],
125
+ save_to_github: !!options[:save_to_github],
117
126
  fis_links: !!options[:fis],
118
127
  remove_header_and_footer: !!options[:remove_header_and_footer])
119
128
  end
@@ -121,11 +130,12 @@ end
121
130
  if options[:align]
122
131
  GithubToCanvas.new(mode: "align",
123
132
  course: nil,
124
- filepath: Dir.pwd,
125
- branch: options[:branch],
126
- name: options[:name],
127
- type: options[:type],
128
- dry: !!options[:dry],
133
+ filepath: Dir.pwd,
134
+ file_to_convert: options[:file_to_convert],
135
+ branch: options[:branch],
136
+ name: options[:name],
137
+ type: options[:type],
138
+ save_to_github: !!options[:save_to_github],
129
139
  fis_links: !!options[:fis],
130
140
  remove_header_and_footer: !!options[:remove_header_and_footer])
131
141
  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
 
@@ -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, dry_run = false)
6
- if dry_run
7
- puts 'DRY RUN: Skipping push to Canvas'
8
- else
9
- response = self.push_to_canvas(course_id, type, name, readme)
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, 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, file_to_convert, 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
@@ -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, file_to_convert, 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], lesson[: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.28"
2
+ VERSION = "0.0.33"
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.28
4
+ version: 0.0.33
5
5
  platform: ruby
6
6
  authors:
7
7
  - maxwellbenton