ft_42 0.1.1 → 0.1.2

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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/lib/ft_42.rb +60 -8
  3. metadata +9 -21
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a259012e40b9e432ddaaa73e0db69fffcc6721f3
4
- data.tar.gz: 5c1019513fe3ca611fe2ae7629496758758b0e41
3
+ metadata.gz: 71640937d6e3a0f74345abea7b28ada0a807adf6
4
+ data.tar.gz: c854c7d10eeeaa4bff0f971edda7c38d5a8f3742
5
5
  SHA512:
6
- metadata.gz: f7002ab5696aec19f4583022026277b1841fb350ce231097f41105928f583a56cf4933d2fab396c80255d5417e11b38df35eaaa952a441108bfbf96ddb50f1ac
7
- data.tar.gz: 26abbd0e36f4ad3dd184620541154d7d293d5ef1e61b7017379fc990d03ab0cff4cde95179f8c708a8d0e3f43fa4d643417c59a9eb9f789492cb59298e28708a
6
+ metadata.gz: bd37dce0bdf0b793d0a0cf8dbd12365cd604463ecb1791877bbff4d801b6d1a5169279ad687595c65e57fda68d0873b5bf06dfbd17aa3fc1f845183d4cbd9d98
7
+ data.tar.gz: 4136ccac33a424ad45c635e07378204eb8c2ea83d8ac6f1f24a792197ad223af784d3ae492252e96f2a93bf295b0e383b6c19c1e8f3a526f8c22f7b500813d3f
data/lib/ft_42.rb CHANGED
@@ -11,19 +11,22 @@ module Constants
11
11
  HOURS_NEEDED = 38
12
12
  end
13
13
 
14
- class FT_42
15
14
 
15
+ class FT_42
16
16
  def initialize(*args)
17
17
  ft_42 = Client.new(args.first)
18
18
  user = User.new(ft_42.user)
19
19
  user_sessions = UserSessions.new(ft_42.user_sessions)
20
20
  user_print = UserPrinter.new(user)
21
21
  user_sessions_print = UserSessionsPrinter.new(user_sessions)
22
- user_print.all
23
- user_sessions_print.all
22
+ if args.size == 1
23
+ user_print.all
24
+ user_sessions_print.all
25
+ end
24
26
  end
25
27
  end
26
28
 
29
+
27
30
  class Client
28
31
  attr_reader :username, :token
29
32
 
@@ -53,6 +56,7 @@ class Client
53
56
  end
54
57
  end
55
58
 
59
+
56
60
  class Token
57
61
  include Constants
58
62
 
@@ -64,6 +68,8 @@ class Token
64
68
  end
65
69
  end
66
70
 
71
+
72
+
67
73
  class User
68
74
  attr_reader :user
69
75
 
@@ -128,6 +134,8 @@ class User
128
134
  end
129
135
  end
130
136
 
137
+
138
+
131
139
  class Session
132
140
  attr_reader :session
133
141
 
@@ -156,6 +164,8 @@ class Session
156
164
  end
157
165
  end
158
166
 
167
+
168
+
159
169
  class UserSessions
160
170
  attr_reader :user_sessions
161
171
 
@@ -176,6 +186,8 @@ class UserSessions
176
186
  end
177
187
  end
178
188
 
189
+
190
+
179
191
  class UserPrinter
180
192
  attr_reader :pastel, :user
181
193
 
@@ -224,6 +236,8 @@ class UserPrinter
224
236
  end
225
237
  end
226
238
 
239
+
240
+
227
241
  class UserSessionsPrinter
228
242
  include Constants
229
243
 
@@ -235,6 +249,11 @@ class UserSessionsPrinter
235
249
  end
236
250
 
237
251
  def all
252
+ active_or_last_active
253
+ hours_this_week
254
+ end
255
+
256
+ def active_or_last_active
238
257
  unless user_sessions.sessions.empty?
239
258
  active = false
240
259
  user_sessions.sessions.each do |session|
@@ -243,22 +262,31 @@ class UserSessionsPrinter
243
262
  puts "Is #{highlight('active')} at " + highlight("#{cluster(session.host)}") + " computer #{session.host}."
244
263
  end
245
264
  unless session.primary?
246
- puts pastel.red.bold("Warning: Logged in on more than one computer. Please logout from #{session.host} ASAP.")
265
+ puts warning("Warning: Logged in on more than one computer. Please logout from #{session.host} ASAP.")
247
266
  end
248
267
  active = true
249
268
  end
250
269
  end
251
270
 
252
271
  unless active
253
- puts "Was last active " + highlight("#{ActionView::Base.new.time_ago_in_words(user_sessions.sessions.first.end_at)} ago") + " at #{highlight(cluster(user_sessions.sessions.first.host))}."
272
+ last_active
254
273
  end
255
- end
274
+ end
275
+ end
256
276
 
257
- puts "Has " + highlight("#{hours} #{hours == 1 ? 'hour' : 'hours'}") + " in the clusters this week, starting #{Time.current.beginning_of_week.strftime("%A, %B #{Time.current.beginning_of_week.day.ordinalize}")}. #{'Go to sleep.' if hours > 60}"
277
+ def last_active
278
+ puts "Was last active " + last_active_time_ago + " at #{last_active_computer}."
279
+ end
280
+
281
+ def hours_this_week
282
+ puts "Has " + highlight("#{hours} #{hours_pluralize}") + " in the clusters this week, starting #{last_monday}. #{'Go to sleep.' if hours > 60}"
283
+ hours_progress_bar
284
+ end
258
285
 
286
+ def hours_progress_bar
259
287
  percent_complete = ((hours.to_f / HOURS_NEEDED.to_f) * 100).round
260
288
  if (percent_complete <= 100)
261
- progressbar_needed = ProgressBar.create(progress_mark: "█", length: 60, format: "%t: |" + pastel.red("%B") + "| #{hours}/38 hours")
289
+ progressbar_needed = ProgressBar.create(progress_mark: "█", length: 60, format: "%t: |" + warning("%B") + "| #{hours}/38 hours")
262
290
  percent_complete.times { progressbar_needed.increment }
263
291
  puts progressbar_needed
264
292
  end
@@ -278,10 +306,22 @@ class UserSessionsPrinter
278
306
  user_sessions.total_hours_this_week
279
307
  end
280
308
 
309
+ def hours_pluralize
310
+ if hours == 1
311
+ "hour"
312
+ else
313
+ "hours"
314
+ end
315
+ end
316
+
281
317
  def highlight(string)
282
318
  pastel.bright_green.bold(string)
283
319
  end
284
320
 
321
+ def warning(string)
322
+ pastel.red(string)
323
+ end
324
+
285
325
  def cluster(host)
286
326
  case true
287
327
  when host.include?("z1") then "Cluster 1"
@@ -291,4 +331,16 @@ class UserSessionsPrinter
291
331
  else host
292
332
  end
293
333
  end
334
+
335
+ def last_active_time_ago
336
+ highlight("#{ActionView::Base.new.time_ago_in_words(user_sessions.sessions.first.end_at)} ago")
337
+ end
338
+
339
+ def last_active_computer
340
+ highlight(cluster(user_sessions.sessions.first.host))
341
+ end
342
+
343
+ def last_monday
344
+ Time.current.beginning_of_week.strftime("%A, %B #{Time.current.beginning_of_week.day.ordinalize}")
345
+ end
294
346
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ft_42
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matias Fernandez
@@ -14,42 +14,30 @@ dependencies:
14
14
  name: activesupport
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
- - - "~>"
18
- - !ruby/object:Gem::Version
19
- version: '4.2'
20
- - - ">="
17
+ - - '='
21
18
  - !ruby/object:Gem::Version
22
- version: 4.2.7.1
19
+ version: 4.2.2
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
- - - "~>"
28
- - !ruby/object:Gem::Version
29
- version: '4.2'
30
- - - ">="
24
+ - - '='
31
25
  - !ruby/object:Gem::Version
32
- version: 4.2.7.1
26
+ version: 4.2.2
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: actionview
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '4.2'
40
- - - ">="
31
+ - - '='
41
32
  - !ruby/object:Gem::Version
42
- version: 4.2.7.1
33
+ version: 4.2.2
43
34
  type: :runtime
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
46
37
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '4.2'
50
- - - ">="
38
+ - - '='
51
39
  - !ruby/object:Gem::Version
52
- version: 4.2.7.1
40
+ version: 4.2.2
53
41
  - !ruby/object:Gem::Dependency
54
42
  name: pastel
55
43
  requirement: !ruby/object:Gem::Requirement