learn-config 0.0.32 → 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/learn-config +2 -1
- data/learn-config.gemspec +1 -1
- data/lib/learn_config/cli.rb +15 -3
- data/lib/learn_config/setup.rb +146 -11
- data/lib/learn_config/version.rb +1 -1
- data/lib/learn_config.rb +4 -0
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: cb03acc57001c37cbe478f0643a06dd3dfaa382a
|
4
|
+
data.tar.gz: d2c7e51ab9b44078230c00dc6b6d824b47be9ca7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a4466289fdd1415b918f20646745589e5cd36b8f9fa3bb3bcdf1335faabfd6fd81b06d2cb4ccaefed4d242346f6e45776664b63293a1dfe70e6df4973334bbb8
|
7
|
+
data.tar.gz: 73c820c29bd1a684bf6c119f29e93e17d75f8e761684035a857cc22ea34abd6bd54c5fb8c1217d943377f5d9168baa64bed1b0d5bcaba1a23749ac4da6648d80
|
data/bin/learn-config
CHANGED
data/learn-config.gemspec
CHANGED
data/lib/learn_config/cli.rb
CHANGED
@@ -11,7 +11,7 @@ module LearnConfig
|
|
11
11
|
if !short_text
|
12
12
|
puts <<-LONG
|
13
13
|
To connect with the Learn web application, you will need to configure
|
14
|
-
the Learn gem with an OAuth token. You can find yours
|
14
|
+
the Learn gem with an OAuth token. You can find yours at the bottom of your profile
|
15
15
|
page at: https://learn.co/#{github_username ? github_username : 'your-github-username'}.
|
16
16
|
|
17
17
|
LONG
|
@@ -39,9 +39,21 @@ page at: https://learn.co/#{github_username ? github_username : 'your-github-use
|
|
39
39
|
end
|
40
40
|
end
|
41
41
|
|
42
|
-
def token_valid?
|
42
|
+
def token_valid?(retries=3)
|
43
43
|
learn = LearnWeb::Client.new(token: token, silent_output: true)
|
44
|
-
|
44
|
+
begin
|
45
|
+
Timeout::timeout(15) do
|
46
|
+
learn.valid_token?
|
47
|
+
end
|
48
|
+
rescue Timeout::Error
|
49
|
+
if retries > 0
|
50
|
+
puts "There was an error validating your token. Retrying..."
|
51
|
+
token_valid?(retries-1)
|
52
|
+
else
|
53
|
+
puts "There was a problem connecting to Learn. Please try again."
|
54
|
+
exit
|
55
|
+
end
|
56
|
+
end
|
45
57
|
end
|
46
58
|
end
|
47
59
|
end
|
data/lib/learn_config/setup.rb
CHANGED
@@ -1,16 +1,17 @@
|
|
1
1
|
module LearnConfig
|
2
2
|
class Setup
|
3
|
-
attr_reader :netrc, :args, :reset, :whoami
|
3
|
+
attr_reader :netrc, :args, :reset, :whoami, :set_dir
|
4
4
|
|
5
5
|
def self.run(args)
|
6
6
|
new(args).run
|
7
7
|
end
|
8
8
|
|
9
9
|
def initialize(args)
|
10
|
-
@args
|
11
|
-
@netrc
|
12
|
-
@reset
|
13
|
-
@whoami
|
10
|
+
@args = args
|
11
|
+
@netrc = LearnConfig::NetrcInteractor.new
|
12
|
+
@reset = !!args.include?('--reset')
|
13
|
+
@whoami = !!args.include?('--whoami')
|
14
|
+
@set_dir = !!args.include?('--set-directory')
|
14
15
|
end
|
15
16
|
|
16
17
|
def run
|
@@ -19,24 +20,101 @@ module LearnConfig
|
|
19
20
|
confirm_and_reset!
|
20
21
|
elsif whoami
|
21
22
|
args.delete('--whoami')
|
23
|
+
check_config
|
22
24
|
whoami?
|
25
|
+
elsif set_dir
|
26
|
+
args.delete('--set-directory')
|
27
|
+
check_config
|
28
|
+
set_directory!
|
23
29
|
else
|
24
|
-
|
30
|
+
check_config
|
25
31
|
end
|
26
32
|
end
|
27
33
|
|
28
34
|
private
|
29
35
|
|
30
|
-
def
|
36
|
+
def check_config
|
37
|
+
setup_netrc
|
38
|
+
setup_learn_directory
|
39
|
+
setup_editor
|
40
|
+
end
|
41
|
+
|
42
|
+
def whoami?(retries=3)
|
31
43
|
_learn, token = netrc.read
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
44
|
+
begin
|
45
|
+
me = Timeout::timeout(15) do
|
46
|
+
LearnWeb::Client.new(token: token).me
|
47
|
+
end
|
48
|
+
rescue Timeout::Error
|
49
|
+
if retries > 0
|
50
|
+
puts "There was an error connecting to Learn. Retrying..."
|
51
|
+
whoami?(retries-1)
|
52
|
+
else
|
53
|
+
puts "Could not connect to Learn. Please try again."
|
54
|
+
exit
|
55
|
+
end
|
56
|
+
end
|
57
|
+
puts "Name: #{me.full_name}"
|
58
|
+
puts "Username: #{me.username}"
|
59
|
+
puts "Email: #{me.email}"
|
60
|
+
puts "Learn Dir: #{learn_directory}"
|
36
61
|
|
37
62
|
exit
|
38
63
|
end
|
39
64
|
|
65
|
+
def learn_directory
|
66
|
+
config_data = File.read(File.expand_path('~/.learn-config'))
|
67
|
+
YAML.load(config_data)[:learn_directory]
|
68
|
+
end
|
69
|
+
|
70
|
+
def set_directory!
|
71
|
+
path = ''
|
72
|
+
|
73
|
+
while !path.start_with?('/')
|
74
|
+
print "Enter the directory in which to store Learn lessons (/Users/#{ENV['USER']}/Development/code): "
|
75
|
+
path = gets.chomp
|
76
|
+
|
77
|
+
if path.start_with?('~')
|
78
|
+
path = File.expand_path(path)
|
79
|
+
elsif path == ''
|
80
|
+
path = "/Users/#{ENV['USER']}/Development/code"
|
81
|
+
elsif !path.start_with?('/')
|
82
|
+
puts "Absolute paths only, please!"
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
write_new_directory_data!(path)
|
87
|
+
end
|
88
|
+
|
89
|
+
def write_new_directory_data!(path)
|
90
|
+
create_dir = true
|
91
|
+
|
92
|
+
if !new_directory_exists?(path)
|
93
|
+
print "#{path} doesn't exist. Create it? [Yn]: "
|
94
|
+
response = gets.chomp.downcase
|
95
|
+
|
96
|
+
if !['yes', 'y', ''].include?(response)
|
97
|
+
create_dir = false
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
101
|
+
if create_dir
|
102
|
+
FileUtils.mkdir_p(path)
|
103
|
+
|
104
|
+
config_path = File.expand_path('~/.learn-config')
|
105
|
+
existing_editor = YAML.load(File.read(config_path))[:editor]
|
106
|
+
data = YAML.dump({ learn_directory: path, editor: existing_editor })
|
107
|
+
|
108
|
+
File.write(config_path, data)
|
109
|
+
else
|
110
|
+
set_directory!
|
111
|
+
end
|
112
|
+
end
|
113
|
+
|
114
|
+
def new_directory_exists?(path)
|
115
|
+
File.exists?(path)
|
116
|
+
end
|
117
|
+
|
40
118
|
def confirm_and_reset!
|
41
119
|
if confirm_reset?
|
42
120
|
netrc.delete!(machine: 'learn-config')
|
@@ -62,6 +140,63 @@ module LearnConfig
|
|
62
140
|
setup_flatiron_push_config_machine
|
63
141
|
end
|
64
142
|
|
143
|
+
def setup_learn_directory
|
144
|
+
if !config_file?
|
145
|
+
write_default_config!
|
146
|
+
end
|
147
|
+
end
|
148
|
+
|
149
|
+
def setup_editor
|
150
|
+
if !config_file?
|
151
|
+
write_defalt_config!
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
def config_file?
|
156
|
+
path = File.expand_path('~/.learn-config')
|
157
|
+
File.exists?(path) && has_yaml?(path)
|
158
|
+
end
|
159
|
+
|
160
|
+
def has_yaml?(file_path)
|
161
|
+
!!YAML.load(File.read(file_path)) && valid_config_yaml?(file_path)
|
162
|
+
end
|
163
|
+
|
164
|
+
def valid_config_yaml?(path)
|
165
|
+
yaml = YAML.load(File.read(path))
|
166
|
+
dir = !!yaml[:learn_directory]
|
167
|
+
dir_path = yaml[:learn_directory]
|
168
|
+
dir_exists = dir && File.exists?(dir_path)
|
169
|
+
editor = !!yaml[:editor]
|
170
|
+
|
171
|
+
if !dir_exists
|
172
|
+
puts "It seems like your Learn directory isn't quite right. Let's fix that."
|
173
|
+
set_directory!
|
174
|
+
dir_exists = true
|
175
|
+
end
|
176
|
+
|
177
|
+
dir && dir_exists && editor
|
178
|
+
end
|
179
|
+
|
180
|
+
def write_default_config!
|
181
|
+
learn_dir = File.expand_path('~/Development/code')
|
182
|
+
config_path = File.expand_path('~/.learn-config')
|
183
|
+
|
184
|
+
ensure_default_dir_exists!(learn_dir)
|
185
|
+
ensure_config_file_exists!(config_path)
|
186
|
+
|
187
|
+
data = YAML.dump({ learn_directory: learn_dir, editor: "subl" })
|
188
|
+
|
189
|
+
File.write(config_path, data)
|
190
|
+
end
|
191
|
+
|
192
|
+
def ensure_default_dir_exists!(learn_dir)
|
193
|
+
FileUtils.mkdir_p(learn_dir)
|
194
|
+
end
|
195
|
+
|
196
|
+
def ensure_config_file_exists!(config_path)
|
197
|
+
FileUtils.touch(config_path)
|
198
|
+
end
|
199
|
+
|
65
200
|
def setup_learn_config_machine
|
66
201
|
login, password = netrc.read
|
67
202
|
|
data/lib/learn_config/version.rb
CHANGED
data/lib/learn_config.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: learn-config
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 1.0.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-05-
|
11
|
+
date: 2015-05-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -58,14 +58,14 @@ dependencies:
|
|
58
58
|
requirements:
|
59
59
|
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 1.0.0
|
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:
|
68
|
+
version: 1.0.0
|
69
69
|
description:
|
70
70
|
email:
|
71
71
|
- learn@flatironschool.com
|