ft_42 0.0.5 → 0.0.6

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/bin/ft_42 +37 -7
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5776c47618b5745702d18a9d9c665d6058a294f7
4
- data.tar.gz: 5684793369b572b2915d8f974c6ad1511fb4891d
3
+ metadata.gz: b97751e8896fa2ede78cbd7dd940a0e447170ad2
4
+ data.tar.gz: 353737f501a46b2c39e42b4c05026d8c91c16152
5
5
  SHA512:
6
- metadata.gz: 3d2cfaee7e91767588d093a03b840ec45341fe770ffa58038d374241b1aa3c042df6b893bb8208e7df43d05069774513bb9130e366090717cc7832b09d2b40fe
7
- data.tar.gz: d041535a5225e12cd1df682bb17b91cc55e1ca5d941f865c237e903d5990b2247df706cd130fdd4e5043940b2e47cf8ddbcce1e7eccb2f5c1d1e4370d3f5b090
6
+ metadata.gz: fb8fb4d2e2e5511a10a270ba6dee26337be42dfc4cc7c1465af4fac562584cd34f00095adc63ecff31d117e98211a7adf90a661b7c29f22977d072309d16d397
7
+ data.tar.gz: 68d26cf4a6e66c426d0be019149835fb1f03a91d72ffda8374a52bbfb0e83eff1c3566dcb7179acf30b69e58b3116800ddb1d78142adbf81f3d45438fc2f7fcb
data/bin/ft_42 CHANGED
@@ -1,5 +1,4 @@
1
1
  #!/usr/bin/env ruby
2
-
3
2
  require "active_support/all"
4
3
  require "action_view"
5
4
  require "pastel"
@@ -7,10 +6,20 @@ require "oauth2"
7
6
  require "ruby-progressbar"
8
7
 
9
8
  HOURS_NEEDED = 38
10
- USERNAME = ARGV[0];
9
+ USERNAME = ARGV[0]
11
10
  UID = ENV.fetch("FT42_UID")
12
11
  SECRET = ENV.fetch("FT42_SECRET")
13
12
 
13
+ def cluster(host)
14
+ case true
15
+ when host.include?("z1") then "Cluster 1"
16
+ when host.include?("z2") then "Cluster 2"
17
+ when host.include?("z3") then "Cluster 3"
18
+ when host.include?("z3") then "Cluster 4"
19
+ else host
20
+ end
21
+ end
22
+
14
23
  # get token
15
24
  client = OAuth2::Client.new(UID, SECRET, site: "https://api.intra.42.fr")
16
25
  token = client.client_credentials.get_token
@@ -22,7 +31,7 @@ right_now = Time.current.to_s.split(" ")[0...-1].join("T")
22
31
  # Make requests
23
32
  user = token.get("/v2/users/#{USERNAME}", params: { per_page: 100 }).parsed
24
33
  sessions = token.get("/v2/users/#{USERNAME}/locations?range[begin_at]=#{time_ago},#{right_now}", params: { per_page: 100 }).parsed
25
- phone = %x( ldapsearch -Q uid=#{USERNAME} | grep mobile ).split.last
34
+ phone = %x(ldapsearch -Q uid=#{USERNAME} | grep mobile).split.last
26
35
 
27
36
  # calculate hours
28
37
  duration = 0
@@ -35,17 +44,38 @@ hours = (duration / 60 / 60).round
35
44
 
36
45
  # currently working on
37
46
  in_progress = user["projects_users"].select { |project| project["status"] == "in_progress" }.map { |in_prog| in_prog["project"]["name"] }
47
+ in_progress = ["something, maybe.."] if in_progress.empty?
38
48
 
39
49
  # printer
40
50
  pastel = Pastel.new
41
- puts pastel.bright_green.bold("#{user['first_name'].titleize} #{user['last_name'].titleize}") + " has " + pastel.bright_green.bold("#{hours} #{hours == 1 ? 'hour' : 'hours'}") + " in the clusters this week."
51
+
52
+ puts pastel.bright_green.bold("#{user['first_name']} #{user['last_name']}")
53
+
54
+ # is active?
55
+ active = false
56
+ sessions.each do |session|
57
+ if session["begin_at"].to_time - session["end_at"].to_time == -600.0
58
+ puts "Is #{pastel.bright_green.bold('active')} at " + pastel.bright_green.bold("#{cluster(session['host'])}") + "."
59
+ if active
60
+ puts pastel.red.bold("Warning: Logged in on more than one computer. Please logout from #{session['host']} ASAP.")
61
+ end
62
+ active = true
63
+ end
64
+ end
65
+
66
+ unless active
67
+ puts "Was last active " + pastel.bright_green.bold("#{ActionView::Base.new.time_ago_in_words(sessions.first['end_at'].to_time)} ago") + " at #{pastel.bright_green.bold(cluster(sessions.first['host']))}."
68
+ end
69
+
70
+ puts "Has " + pastel.bright_green.bold("#{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}"
42
71
 
43
72
  percent_complete = ((hours.to_f / HOURS_NEEDED.to_f) * 100).round
44
73
  if (percent_complete <= 100)
45
- progressbar_needed = ProgressBar.create(progress_mark: "█", length: 60, format: "%t: |" + pastel.bright_green("%B") + "| #{hours}/38 hours")
46
- percent_complete.times { progressbar_needed.increment }
47
- puts progressbar_needed
74
+ progressbar_needed = ProgressBar.create(progress_mark: "█", length: 60, format: "%t: |" + pastel.red("%B") + "| #{hours}/38 hours")
75
+ percent_complete.times { progressbar_needed.increment }
76
+ puts progressbar_needed
48
77
  end
49
78
 
50
79
  puts "Currently working on #{pastel.bright_green.bold(in_progress.to_sentence)}."
51
80
  puts "You may contact #{user['first_name'].titleize} at #{pastel.bright_green.bold(ActiveSupport::NumberHelper.number_to_phone(phone))}."
81
+ puts "Currently level: #{pastel.bright_green.bold(ActiveSupport::NumberHelper.number_to_rounded(user['cursus_users'].select { |cursus| cursus['cursus']['name'] == "42" }.first['level'], precision: 2))}"
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ft_42
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.5
4
+ version: 0.0.6
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matias Fernandez
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-11-06 00:00:00.000000000 Z
11
+ date: 2016-11-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rails