learn-co 2.1.12 → 2.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: 1d95c0767c89df9afacf6d8fc4f3a589c28d89cf
4
- data.tar.gz: e39dc2688ea5b9d4c9994b1aa8c8d45b61e73d6c
3
+ metadata.gz: 7bed0cb072d84e0cfc9eb37353b5647ddf9f5047
4
+ data.tar.gz: 123a5ca41f0a0a3dcf5299706eff4eec9c733aaa
5
5
  SHA512:
6
- metadata.gz: e7236e46d44230a334ca9a36d5bbedd64a31e9e7a488e6d66fc937fa49b9af07d24616d572f54ad91495a977d489632f41a5d912da21d6d3cad2849c01b19f10
7
- data.tar.gz: 59f7ac09039269538eaea8a12c72bdffe9ddeed59e5993a25519d5969795b156e079f38aa245c92255b6864c3b8ceae37dd246ddb3eb353c1bce94e9e751978f
6
+ metadata.gz: 18335aa82a63b7ec7d819f7740cae992237ccbfe5c21f234267e199bfcd8b135d5091ab6bd44bb7ecb9b1e75dd4e67564bbce121fbb57af0393d69bcc5034864
7
+ data.tar.gz: 008f741d41824df09d8f92ef188d4f4fe350edee8bbfe3e329d16e520bd6694c998b96155b461e0d14871e5f4e31536cc824b16081e58d8ee6b416fdda7935c4
data/bin/learn CHANGED
@@ -3,7 +3,11 @@
3
3
  require 'learn'
4
4
 
5
5
  NON_PRE_CONFIG_COMMANDS = [
6
- 'reset', 'whoami', 'directory', 'help', 'version', '--version', '-v'
6
+ 'reset', 'whoami', 'directory', 'help', 'version', '--version', '-v', 'doctor'
7
+ ]
8
+
9
+ INTERNET_REQUIRED_COMMANDS = [
10
+ 'whoami', 'doctor', 'directory', 'reset'
7
11
  ]
8
12
 
9
13
  if ['-v', '--version'].include?(ARGV.first)
@@ -14,7 +18,11 @@ end
14
18
  Learn::OptionsSanitizer.new(ARGV).sanitize!
15
19
 
16
20
  if !(NON_PRE_CONFIG_COMMANDS.include?(ARGV[0]))
17
- system('learn-config')
21
+ system('learn-config') unless Learn::InternetConnection.no_internet_connection?
22
+ end
23
+
24
+ if INTERNET_REQUIRED_COMMANDS.include?(ARGV[0])
25
+ Learn::InternetConnection.test_connection
18
26
  end
19
27
 
20
28
  Learn::CLI.start(ARGV)
@@ -21,9 +21,10 @@ Gem::Specification.new do |spec|
21
21
  spec.add_development_dependency "rake", "~> 10.0"
22
22
  spec.add_development_dependency "pry"
23
23
 
24
- spec.add_runtime_dependency "learn-test", ">= 1.2.21"
25
- spec.add_runtime_dependency "learn-config", ">= 1.0.71"
26
- spec.add_runtime_dependency "learn-open", ">= 1.1.5"
27
- spec.add_runtime_dependency "learn-submit", ">= 1.0.11"
24
+ spec.add_runtime_dependency "learn-test", ">= 1.2.22"
25
+ spec.add_runtime_dependency "learn-config", ">= 1.0.73"
26
+ spec.add_runtime_dependency "learn-open", ">= 1.1.51"
27
+ spec.add_runtime_dependency "learn-submit", ">= 1.0.12"
28
+ spec.add_runtime_dependency "learn-doctor", ">= 1.0.2"
28
29
  spec.add_runtime_dependency "thor"
29
30
  end
@@ -1,6 +1,7 @@
1
1
  require 'thor'
2
2
 
3
3
  require 'learn/version'
4
+ require 'learn/internet_connection'
4
5
  require 'learn/cli'
5
6
  require 'learn/options_sanitizer'
6
7
  require 'learn/lab/parser'
@@ -74,5 +74,10 @@ module Learn
74
74
  def directory
75
75
  system('learn-config --set-directory')
76
76
  end
77
+
78
+ desc 'doctor', 'Check your local environment setup'
79
+ def doctor
80
+ system('learn-doctor')
81
+ end
77
82
  end
78
83
  end
@@ -0,0 +1,53 @@
1
+ require 'net/http'
2
+ require 'timeout'
3
+
4
+ module Learn
5
+ class InternetConnection
6
+ attr_accessor :connection
7
+
8
+ STATUS_URI = URI('https://learn.co/p/gem_status')
9
+ SUCCESS_STATUS = 'this is a boring message to prove you can connect to the internet'
10
+ NO_INTERNET_MESSAGE = "It seems like you aren't connected to the internet. All features of the Learn gem may not work properly. Trying anyway..."
11
+
12
+ def self.no_internet_connection?
13
+ new.no_connection?
14
+ end
15
+
16
+ def self.test_connection
17
+ new
18
+ end
19
+
20
+ def initialize
21
+ @connection = false
22
+
23
+ test_connection
24
+ end
25
+
26
+ def test_connection
27
+ begin
28
+ Timeout::timeout(5) do
29
+ resp = Net::HTTP.get(STATUS_URI)
30
+
31
+ if resp.match(/#{SUCCESS_STATUS}/)
32
+ self.connection = true
33
+ else
34
+ self.connection = false
35
+ puts NO_INTERNET_MESSAGE
36
+ end
37
+ end
38
+ rescue Timeout::Error
39
+ self.connection = false
40
+ puts NO_INTERNET_MESSAGE
41
+ rescue SocketError => e
42
+ if e.message.match(/getaddrinfo: nodename nor servname provided/)
43
+ self.connection = false
44
+ puts NO_INTERNET_MESSAGE
45
+ end
46
+ end
47
+ end
48
+
49
+ def no_connection?
50
+ !connection
51
+ end
52
+ end
53
+ end
@@ -17,7 +17,8 @@ module Learn
17
17
  'reset',
18
18
  'whoami',
19
19
  'directory',
20
- 'next'
20
+ 'next',
21
+ 'doctor'
21
22
  ]
22
23
 
23
24
  KNOWN_TEST_FLAGS = [
@@ -1,3 +1,3 @@
1
1
  module Learn
2
- VERSION = '2.1.12'
2
+ VERSION = '2.2.0'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: learn-co
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.1.12
4
+ version: 2.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-06-10 00:00:00.000000000 Z
11
+ date: 2015-06-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -58,56 +58,70 @@ dependencies:
58
58
  requirements:
59
59
  - - ">="
60
60
  - !ruby/object:Gem::Version
61
- version: 1.2.21
61
+ version: 1.2.22
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - ">="
67
67
  - !ruby/object:Gem::Version
68
- version: 1.2.21
68
+ version: 1.2.22
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: learn-config
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - ">="
74
74
  - !ruby/object:Gem::Version
75
- version: 1.0.71
75
+ version: 1.0.73
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.0.71
82
+ version: 1.0.73
83
83
  - !ruby/object:Gem::Dependency
84
84
  name: learn-open
85
85
  requirement: !ruby/object:Gem::Requirement
86
86
  requirements:
87
87
  - - ">="
88
88
  - !ruby/object:Gem::Version
89
- version: 1.1.5
89
+ version: 1.1.51
90
90
  type: :runtime
91
91
  prerelease: false
92
92
  version_requirements: !ruby/object:Gem::Requirement
93
93
  requirements:
94
94
  - - ">="
95
95
  - !ruby/object:Gem::Version
96
- version: 1.1.5
96
+ version: 1.1.51
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: learn-submit
99
99
  requirement: !ruby/object:Gem::Requirement
100
100
  requirements:
101
101
  - - ">="
102
102
  - !ruby/object:Gem::Version
103
- version: 1.0.11
103
+ version: 1.0.12
104
104
  type: :runtime
105
105
  prerelease: false
106
106
  version_requirements: !ruby/object:Gem::Requirement
107
107
  requirements:
108
108
  - - ">="
109
109
  - !ruby/object:Gem::Version
110
- version: 1.0.11
110
+ version: 1.0.12
111
+ - !ruby/object:Gem::Dependency
112
+ name: learn-doctor
113
+ requirement: !ruby/object:Gem::Requirement
114
+ requirements:
115
+ - - ">="
116
+ - !ruby/object:Gem::Version
117
+ version: 1.0.2
118
+ type: :runtime
119
+ prerelease: false
120
+ version_requirements: !ruby/object:Gem::Requirement
121
+ requirements:
122
+ - - ">="
123
+ - !ruby/object:Gem::Version
124
+ version: 1.0.2
111
125
  - !ruby/object:Gem::Dependency
112
126
  name: thor
113
127
  requirement: !ruby/object:Gem::Requirement
@@ -139,6 +153,7 @@ files:
139
153
  - learn-co.gemspec
140
154
  - lib/learn.rb
141
155
  - lib/learn/cli.rb
156
+ - lib/learn/internet_connection.rb
142
157
  - lib/learn/lab/parser.rb
143
158
  - lib/learn/options_sanitizer.rb
144
159
  - lib/learn/version.rb