learn-submit 1.1.7 → 1.2.0

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
  SHA1:
3
- metadata.gz: 9517ce44fc87974bc5910af238aa67b5c34d63d9
4
- data.tar.gz: 24165e50ea22b2b9e20bf2a12bbe206da60035c0
3
+ metadata.gz: 4525349457cadc91740d2369a91f63b874ebbd2a
4
+ data.tar.gz: 14730ab215f77ff68be6fd241119d72a2c4d8e80
5
5
  SHA512:
6
- metadata.gz: df221ac7311ef21e3a15794c064f122cd501a341c185704c33d9acffe75396c788e962d84bb0029e79f562276d911ddfe81ea788723525eb4cffbdd7bd8a1c08
7
- data.tar.gz: 0a82d3c1f00feabc468254c8473c528c590be838dcbb9cefa060d9d193c675212379f19fc02dcd11fc252616add9ce80680e284e4ae92e67b0b952fd3973eb99
6
+ metadata.gz: db069a6647bad5ca8f68d66f0bd4a86b8e835cbc94a9833f1fe3a98cf323d2eee1d7f372067c1defdf1184efaa0042382bde5423731cbe7fd01b75d0f8f3a5f1
7
+ data.tar.gz: 778d96308cafa33a07974549390458a0b4ead388f8df4e1140729a5ab7c7e4138bb2075f62cdc71676006ef2f41cdb70556824550789890b729b1f9629b37cde
data/learn-submit.gemspec CHANGED
@@ -22,5 +22,5 @@ Gem::Specification.new do |spec|
22
22
 
23
23
  spec.add_runtime_dependency "netrc"
24
24
  spec.add_runtime_dependency "git", "~> 1.2"
25
- spec.add_runtime_dependency "learn-web", ">= 1.4.2"
25
+ spec.add_runtime_dependency "learn-web", ">= 1.5.0"
26
26
  end
@@ -23,11 +23,21 @@ module LearnSubmit
23
23
  push!
24
24
  end
25
25
 
26
- def repo_name
27
- url = git.remote(remote_name).url
26
+ def commit
27
+ add_changes
28
+ commit_changes
29
+ end
30
+
31
+ def repo_name(remote: remote_name)
32
+ url = git.remote(remote).url
28
33
  url.match(/^.+\w+\/(.*?)(?:\.git)?$/)[1]
29
34
  end
30
35
 
36
+ def org_name(remote: remote_name)
37
+ url = git.remote(remote).url
38
+ url.match(/^.+github\.com(?::|\/)(.+)\/.*?(?:\.git)?$/)[1]
39
+ end
40
+
31
41
  def branch_name
32
42
  git.branch.name
33
43
  end
@@ -1,19 +1,22 @@
1
+ require 'yaml'
2
+
1
3
  module LearnSubmit
2
4
  class Submission
3
- attr_reader :git, :client, :file_path, :message, :save
5
+ attr_reader :git, :client, :file_path, :message, :save, :token, :dot_learn
4
6
 
5
7
  def self.create(message: nil, save: false)
6
8
  new(message: message, save: save).create
7
9
  end
8
10
 
9
11
  def initialize(message:, save:)
10
- _login, token = Netrc.read['learn-config']
12
+ _login, @token = Netrc.read['learn-config']
11
13
 
12
- @client = LearnWeb::Client.new(token: token)
14
+ @client = LearnWeb::Client.new(token: @token)
13
15
  @git = LearnSubmit::Submission::GitInteractor.new(username: user.username, message: message)
14
16
  @file_path = File.expand_path('~/.learn-submit-tmp')
15
17
  @message = message
16
18
  @save = save
19
+ @dot_learn = YAML.load(File.read("#{FileUtils.pwd}/.learn")) if File.exist?("#{FileUtils.pwd}/.learn")
17
20
  end
18
21
 
19
22
  def create
@@ -41,62 +44,131 @@ module LearnSubmit
41
44
 
42
45
  private
43
46
 
47
+ def simulate_submission!(retries=3)
48
+ begin
49
+ repo_name = git.repo_name(remote: 'origin')
50
+ org_name = git.org_name(remote: 'origin')
51
+
52
+ if retries == 3
53
+ puts 'Pushing changes to GitHub...'
54
+ sleep(1)
55
+ puts 'Submitting lesson...'
56
+ end
57
+
58
+ Timeout::timeout(15) do
59
+ client.submit_event(
60
+ event: 'pull_request',
61
+ action: 'opened',
62
+ learn_oauth_token: token,
63
+ repo_name: repo_name,
64
+ base_org_name: org_name,
65
+ forkee: { full_name: nil },
66
+ pull_request: {
67
+ head: {
68
+ repo: {
69
+ full_name: "#{org_name}/#{repo_name}",
70
+ name: repo_name
71
+ }
72
+ }
73
+ },
74
+ summary: {
75
+ action: 'opened'
76
+ }
77
+ )
78
+ end
79
+
80
+ after_ide_submission(repo_name)
81
+ rescue Timeout::Error
82
+ if retries > 0
83
+ puts "There was a problem submitting this lab. Retrying..."
84
+ simulate_submission!(retries-1)
85
+ else
86
+ puts "There is an issue connecting to Learn. Please try again."
87
+ File.write(file_path, 'ERROR: Error connecting to Learn')
88
+ exit
89
+ end
90
+ end
91
+ end
92
+
44
93
  def commit_and_push!
45
94
  File.write(file_path, 'Pushing your code to GitHub...')
46
- git.commit_and_push
95
+
96
+ if dot_learn && dot_learn['github'] == false
97
+ git.commit
98
+ else
99
+ git.commit_and_push
100
+ end
47
101
 
48
102
  # Just to give GitHub a second to register the repo changes
49
103
  sleep(1)
50
104
  end
51
105
 
52
106
  def submit!(retries=3)
53
- if retries >= 2
54
- puts 'Submitting lesson...'
55
- File.write(file_path, 'Opening a Pull Request...')
56
- end
57
- repo_name = git.repo_name
58
- branch_name = git.branch_name
59
- sleep(1)
107
+ if dot_learn && dot_learn['github'] == false
108
+ simulate_submission!
109
+ else
110
+ if retries >= 2
111
+ puts 'Submitting lesson...'
112
+ File.write(file_path, 'Opening a Pull Request...')
113
+ end
114
+ repo_name = git.repo_name
115
+ branch_name = git.branch_name
116
+ sleep(1)
60
117
 
61
- begin
62
- pr_response = Timeout::timeout(15) do
63
- client.issue_pull_request(repo_name: repo_name, branch_name: branch_name, message: message)
118
+ begin
119
+ pr_response = Timeout::timeout(15) do
120
+ client.issue_pull_request(repo_name: repo_name, branch_name: branch_name, message: message)
121
+ end
122
+ rescue Timeout::Error
123
+ if retries > 0
124
+ puts "It seems like there's a problem connecting to Learn. Trying again..."
125
+ submit!(retries-1)
126
+ else
127
+ puts "Sorry, there's a problem reaching Learn right now. Please try again."
128
+ File.write(file_path, 'ERROR: Error connecting to learn.')
129
+ exit 1
130
+ end
64
131
  end
65
- rescue Timeout::Error
66
- if retries > 0
67
- puts "It seems like there's a problem connecting to Learn. Trying again..."
68
- submit!(retries-1)
69
- else
70
- puts "Sorry, there's a problem reaching Learn right now. Please try again."
132
+
133
+ case pr_response.status
134
+ when 200
135
+ puts "Done."
136
+ after_ide_submission(repo_name)
137
+ File.write(file_path, 'Done.')
138
+ exit
139
+ when 404
140
+ puts 'Sorry, it seems like there was a problem connecting with Learn. Please try again.'
71
141
  File.write(file_path, 'ERROR: Error connecting to learn.')
72
142
  exit 1
143
+ else
144
+ if retries > 0
145
+ sleep(2)
146
+ submit!(0)
147
+ else
148
+ puts pr_response.message
149
+
150
+ if pr_response.message.match(/looks the same/)
151
+ File.write(file_path, 'ERROR: Nothing to submit')
152
+ else
153
+ File.write(file_path, 'Done.')
154
+ end
155
+
156
+ exit 1
157
+ end
73
158
  end
74
159
  end
160
+ end
75
161
 
76
- case pr_response.status
77
- when 200
78
- puts "Done."
79
- File.write(file_path, 'Done.')
80
- exit
81
- when 404
82
- puts 'Sorry, it seems like there was a problem connecting with Learn. Please try again.'
83
- File.write(file_path, 'ERROR: Error connecting to learn.')
84
- exit 1
85
- else
86
- if retries > 0
87
- sleep(2)
88
- submit!(0)
89
- else
90
- puts pr_response.message
162
+ def after_ide_submission(repo_name)
163
+ return unless dot_learn && dot_learn['after_ide_submission']
164
+ return unless Socket.gethostname.end_with? '.students.learn.co'
91
165
 
92
- if pr_response.message.match(/looks the same/)
93
- File.write(file_path, 'ERROR: Nothing to submit')
94
- else
95
- File.write(file_path, 'Done.')
96
- end
166
+ ide_user_home = "/home/#{ENV['USER']}"
167
+ path = "#{ide_user_home}/code/labs/#{repo_name}/"
168
+ url = dot_learn['after_ide_submission']
97
169
 
98
- exit 1
99
- end
170
+ File.open("#{ide_user_home}/.fs_changes.log", 'a') do |f|
171
+ f.puts "#{path} LEARN_SUBMIT #{url}"
100
172
  end
101
173
  end
102
174
  end
@@ -1,3 +1,3 @@
1
1
  module LearnSubmit
2
- VERSION = '1.1.7'
2
+ VERSION = '1.2.0'
3
3
  end
data/lib/learn_submit.rb CHANGED
@@ -3,6 +3,7 @@ require 'netrc'
3
3
  require 'git'
4
4
  require 'learn_web'
5
5
  require 'fileutils'
6
+ require 'socket'
6
7
 
7
8
  require 'learn_submit/version'
8
9
  require 'learn_submit/submission'
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: learn-submit
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.1.7
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Flatiron School
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-26 00:00:00.000000000 Z
11
+ date: 2016-07-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -72,14 +72,14 @@ dependencies:
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 1.4.2
75
+ version: 1.5.0
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - ">="
81
81
  - !ruby/object:Gem::Version
82
- version: 1.4.2
82
+ version: 1.5.0
83
83
  description:
84
84
  email:
85
85
  - learn@flatironschool.com