learn-co 2.1.12 → 2.2.0

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
  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