github-to-canvas 0.0.28 → 0.0.29

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: 277ca5f225d7b666fd529a1914309ce575622645455b0b073bd37a8ab19145cf
4
+ data.tar.gz: 8849918914e4201e73f6a6143e847ce2f30ea6d7bfcb8a6aa48f3adb8c6b88e3
5
5
  SHA512:
6
- metadata.gz: cb37cb15e34de3981106ea56343e310542a3032e9a82eb529e0d3c52d741bf396771cff2e78feeeffce5374a0602141693d673e0187d5d77dbcd0523bc43c55a
7
- data.tar.gz: 5615ccc3805322be5170f508cfe4726377a12dd2d0e12690b2f7d622ae5cb43b8977f30e7229fd5523ded91645e96b67f91bc8024bcddf605da582c7e0088dca
6
+ metadata.gz: 04adb2efc3fe4b57e358de6974ecbd0097cd67a26c5a72bbbf1de1bd49dbd48dad44af6828a67c9ab8f0ef97bbe73b58d911be49637c3f24992ecd14bbe20ab8
7
+ data.tar.gz: bdf9b9f2fa0bf3a0bba2b5816d89f3461081f81a5ad92262b0a3a0599f1da21ba1b041f445ca1c13e6766333d2197d90dab17a0481b091345efb68c157c26d3b
@@ -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 [--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]
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[:create] = true
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("-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",
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
- if options[:create]
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
- dry: !!options[:dry],
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
- dry: !!options[:dry],
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
@@ -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, 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, 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.29"
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.29
5
5
  platform: ruby
6
6
  authors:
7
7
  - maxwellbenton