rpw 0.0.4 → 0.0.5

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
  SHA256:
3
- metadata.gz: 205e752e88029cd06e1c2607e139d65981d676833b5bd5c164e67660bc5aad00
4
- data.tar.gz: 756763f53c8284c6e580b65c11a0ebbca90a1f0b8e60da5ec45861afe3551af9
3
+ metadata.gz: d147256fce52a088acb2caa0043222c16dfc73e09292006929e1b9d40372d70a
4
+ data.tar.gz: 211b34b2aff01a30220d65ad12120a240042634c2f815d91e2e4e72023a9fbf7
5
5
  SHA512:
6
- metadata.gz: f40dfd8fd934dc4b6c37702d7e31897651f4f4c8fc172a30cce668408b09d161bf60d9172d9d68a556bf84b7d20c5d92b669ea88bd77ec40490ea7ec4d0b37ec
7
- data.tar.gz: 286dcb10eda24b9d9b0c4410317e2a85c10a19d55526682143f28a86f09e96ea64aaf0072fd37704435b2024b04d5f3594c98e5db00e77acfa98240ca281f2bf
6
+ metadata.gz: d2985f855f66246dd289959e287985011ae11e828a2daeb90c4f3e49a45e99b5ee05ba9b0fa67596c9067ec492cf40f548ecc5649e2c6769c6e366d74f402fb8
7
+ data.tar.gz: ef3be513985a20e01a16249fd2b71e2a026875327fcfe101a83e8da0d05751b7ccd594fd7f984b046f669fa7b49552969967d922d48d00f29767add9906f7d01
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- rpw (0.0.4)
4
+ rpw (0.0.5)
5
5
  thor
6
6
  thor-hollaback
7
7
  typhoeus
data/HISTORY.md CHANGED
@@ -1,3 +1,7 @@
1
+ ## 0.0.5
2
+
3
+ * more bugfixes from beta testers
4
+
1
5
  ## 0.0.4
2
6
 
3
7
  * bugfixes
data/exe/rpw CHANGED
@@ -18,6 +18,18 @@ module RPW
18
18
  def client
19
19
  @client ||= RPW::Client.new
20
20
  end
21
+
22
+ def exit_with_no_key
23
+ unless client.setup?
24
+ say "You have not yet set up the client. Run $ rpw start"
25
+ exit(1)
26
+ end
27
+ unless client.directories_ready?
28
+ say "You are not in your workshop scratch directory, or you have not yet"
29
+ say "set up the client. Change directory or run $ rpw start"
30
+ exit(1)
31
+ end
32
+ end
21
33
  end
22
34
  end
23
35
 
@@ -66,12 +78,6 @@ module RPW
66
78
  def show(content = :current)
67
79
  client.show(content, options[:open])
68
80
  end
69
-
70
- private
71
-
72
- def exit_with_no_key
73
- exit(1) unless client.setup?
74
- end
75
81
  end
76
82
 
77
83
  class Progress < SubCommandBase
@@ -104,10 +110,6 @@ module RPW
104
110
 
105
111
  private
106
112
 
107
- def exit_with_no_key
108
- exit(1) unless client.setup?
109
- end
110
-
111
113
  default_task :show
112
114
  end
113
115
 
@@ -129,6 +131,8 @@ module RPW
129
131
  desc "start", "Tutorial and onboarding"
130
132
 
131
133
  def start
134
+ warn_if_already_started
135
+
132
136
  print_banner
133
137
  say "Welcome to the Rails Performance Workshop."
134
138
  say ""
@@ -138,42 +142,24 @@ module RPW
138
142
  say "working directory, so it's best to run this client from a new directory"
139
143
  say "that you'll use as your 'scratch space' for working on the Workshop."
140
144
  say ""
141
- return unless yes? "Are you in a directory that we can safely add new folders and files to? (y/N)"
145
+ say "We will create a handful of new files and folders in the current directory."
146
+ return unless yes? "Is this OK? (y/N) (N will quit)"
142
147
  puts ""
143
- say "We'll create a .rpw_info file at #{File.expand_path("~/.rpw")} to save your purchase key."
148
+ say "We'll also create a .rpw_info file at #{File.expand_path("~/.rpw")} to save your purchase key."
144
149
  home_dir_ok = yes?("Is this OK? (y/N) (N will create it in the current directory)")
150
+ client.directory_setup(home_dir_ok)
145
151
 
146
152
  key = ask("Your Purchase Key: ")
147
153
 
148
154
  client.setup(key)
149
-
150
155
  puts ""
151
-
152
156
  say "Successfully authenticated with the RPW server and saved your key."
153
-
154
- puts ""
155
-
156
- say "rpw works by downloading files into the current working directory."
157
- say "We're going to (idempotently!) create a few directories in the current working directory."
158
157
  puts ""
159
- return unless yes? "Is that OK? (y/N)"
160
-
161
- client.directory_setup
162
-
163
158
  say "Setup complete!"
164
159
  puts ""
165
- say "Here are some important commands for you to know:"
166
- say "$ rpw lesson next | Proceed to the next part of the workshop."
167
- say "$ rpw lesson complete | Mark current lesson as complete."
168
- say "$ rpw lesson list | List all workshop lessons. Note each lesson is preceded with an ID."
169
- say "$ rpw lesson download | Download any or all lessons."
170
- say "$ rpw lesson show | Show any particular workshop lesson."
171
- say "$ rpw progress | Show where you're currently at in the workshop."
172
- say "$ rpw help | Help! You can also ask in Slack."
173
- puts ""
174
- say "Generally, you'll just be doing a lot of $ rpw lesson next"
160
+ say "To learn how to use this command-line client, consult README.md."
175
161
  say "Remember to ask on Slack for help if you get stuck or encounter bugs."
176
- say "Let's get going! $ rpw lesson next"
162
+ say "Once you're ready to get going: $ rpw lesson next"
177
163
  end
178
164
 
179
165
  no_commands do
@@ -194,6 +180,11 @@ module RPW
194
180
  @client ||= RPW::Client.new
195
181
  end
196
182
 
183
+ def warn_if_already_started
184
+ return unless client.setup?
185
+ exit(0) unless yes? "You have already started the workshop. Continuing this command will wipe all of your current progress. Continue? (y/N)"
186
+ end
187
+
197
188
  def check_version
198
189
  unless client.latest_version?
199
190
  say "#{r}WARNING: You are running an old version of rpw."
@@ -0,0 +1,11 @@
1
+ Here are some important commands for you to know:
2
+
3
+ $ rpw lesson next | Proceed to the next part of the workshop.
4
+ $ rpw lesson complete | Mark current lesson as complete.
5
+ $ rpw lesson list | List all workshop lessons. Note each lesson is preceded with an ID.
6
+ $ rpw lesson download | Download any or all lessons.
7
+ $ rpw lesson show | Show any particular workshop lesson.
8
+ $ rpw progress | Show where you're currently at in the workshop.
9
+ $ rpw help | Help! You can also ask in Slack.
10
+
11
+ Generally, you'll just be doing a lot of $ rpw lesson next
data/lib/rpw.rb CHANGED
@@ -74,12 +74,16 @@ module RPW
74
74
  gateway.register_email(email)
75
75
  end
76
76
 
77
- def directory_setup
77
+ def directory_setup(home_dir_ok = true)
78
78
  ["video", "quiz", "lab", "text", "cgrp"].each do |path|
79
79
  FileUtils.mkdir_p(path) unless File.directory?(path)
80
80
  end
81
81
 
82
- client_data["completed"] = [] # just to write the file
82
+ if home_dir_ok
83
+ ClientData.create_in_home!
84
+ else
85
+ ClientData.create_in_pwd!
86
+ end
83
87
 
84
88
  unless File.exist?(".gitignore") && File.read(".gitignore").match(/rpw_key/)
85
89
  File.open(".gitignore", "a") do |f|
@@ -93,6 +97,10 @@ module RPW
93
97
  f.puts "cgrp\n"
94
98
  end
95
99
  end
100
+
101
+ File.open("README.md", "w+") do |f|
102
+ f.puts File.read(File.join(File.dirname(__FILE__), "README.md"))
103
+ end
96
104
  end
97
105
 
98
106
  def next(open_after = false)
@@ -172,6 +180,8 @@ module RPW
172
180
  end
173
181
 
174
182
  def latest_version?
183
+ return true unless ClientData.exists?
184
+
175
185
  if client_data["last_version_check"]
176
186
  return true if client_data["last_version_check"] >= Time.now - (60 * 60 * 24)
177
187
  return false if client_data["last_version_check"] == false
@@ -191,9 +201,16 @@ module RPW
191
201
  end
192
202
 
193
203
  def setup?
204
+ return false unless ClientData.exists?
194
205
  client_data["key"]
195
206
  end
196
207
 
208
+ def directories_ready?
209
+ ["video", "quiz", "lab", "text", "cgrp"].all? do |path|
210
+ File.directory?(path)
211
+ end
212
+ end
213
+
197
214
  private
198
215
 
199
216
  def finished_workshop
@@ -243,23 +260,27 @@ module RPW
243
260
 
244
261
  def display_content(content, open_after)
245
262
  puts "\nCurrent Lesson: #{content["title"]}"
263
+ openable = false
246
264
  case content["style"]
247
265
  when "video"
248
266
  location = "video/#{content["s3_key"]}"
267
+ openable = true
249
268
  when "quiz"
250
269
  Quiz.start(["give_quiz", "quiz/" + content["s3_key"]])
251
270
  when "lab"
252
- location = "lab/#{content["s3_key"]}"
271
+ location = "lab/#{content["s3_key"][0..-8]}"
253
272
  when "text"
254
273
  location = "lab/#{content["s3_key"]}"
274
+ openable = true
255
275
  when "cgrp"
256
276
  puts "The Complete Guide to Rails Performance has been downloaded and extracted to the ./cgrp directory."
257
277
  puts "All source code for the CGRP is in the src directory, PDF and other compiled formats are in the release directory."
258
278
  end
259
279
  if location
280
+ puts "This file can be opened automatically if you add the --open flag." if openable && !open_after
260
281
  puts "Downloaded to:"
261
282
  puts location.to_s
262
- if open_after
283
+ if open_after && openable
263
284
  exec "#{open_command} #{location}"
264
285
  end
265
286
  end
@@ -286,7 +307,6 @@ module RPW
286
307
  DOTFILE_NAME = ".rpw_info"
287
308
 
288
309
  def initialize
289
- make_sure_dotfile_exists
290
310
  data # access file to load
291
311
  end
292
312
 
@@ -306,16 +326,29 @@ module RPW
306
326
  end
307
327
  end
308
328
 
329
+ def self.create_in_pwd!
330
+ FileUtils.touch(File.expand_path("./" + DOTFILE_NAME))
331
+ end
332
+
333
+ def self.create_in_home!
334
+ FileUtils.mkdir_p("~/.rpw/") unless File.directory?("~/.rpw/")
335
+ FileUtils.touch(File.expand_path("~/.rpw/" + DOTFILE_NAME))
336
+ end
337
+
309
338
  def self.delete_filestore
310
339
  return unless File.exist?(filestore_location)
311
340
  FileUtils.remove(filestore_location)
312
341
  end
313
342
 
343
+ def self.exists?
344
+ File.exist? filestore_location
345
+ end
346
+
314
347
  def self.filestore_location
315
- if File.exist?(File.expand_path("./" + self::DOTFILE_NAME))
316
- File.expand_path("./" + + self::DOTFILE_NAME)
348
+ if File.exist?(File.expand_path("./" + DOTFILE_NAME))
349
+ File.expand_path("./" + DOTFILE_NAME)
317
350
  else
318
- File.expand_path("~/.rpw/" + self::DOTFILE_NAME)
351
+ File.expand_path("~/.rpw/" + DOTFILE_NAME)
319
352
  end
320
353
  end
321
354
 
@@ -325,28 +358,12 @@ module RPW
325
358
  self.class.filestore_location
326
359
  end
327
360
 
328
- def create_client_data_directory(path)
329
- dirname = File.dirname(path)
330
- FileUtils.mkdir_p(dirname) unless File.directory?(dirname)
331
- end
332
-
333
361
  def data
334
362
  @data ||= begin
335
363
  yaml = YAML.safe_load(File.read(filestore_location), permitted_classes: [Time])
336
364
  yaml || {}
337
365
  end
338
366
  end
339
-
340
- def make_sure_dotfile_exists
341
- return true if File.exist?(filestore_location)
342
- create_client_data_directory(filestore_location)
343
- begin
344
- FileUtils.touch(filestore_location)
345
- rescue
346
- raise Error, "Could not create the RPW data file at ~/.rpw/ \
347
- Check your file permissions."
348
- end
349
- end
350
367
  end
351
368
 
352
369
  require "digest"
@@ -1,3 +1,3 @@
1
1
  module RPW
2
- VERSION = "0.0.4"
2
+ VERSION = "0.0.5"
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: rpw
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.4
4
+ version: 0.0.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nate Berkopec
@@ -70,6 +70,7 @@ files:
70
70
  - README.md
71
71
  - Rakefile
72
72
  - exe/rpw
73
+ - lib/README.md
73
74
  - lib/rpw.rb
74
75
  - lib/rpw/version.rb
75
76
  - rpw.gemspec