canals 0.8.4 → 0.8.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
  SHA1:
3
- metadata.gz: a051bf7606f3bf20a6727995d041bd4f255a0c72
4
- data.tar.gz: d6f1405b54aa0fc4fe2c4b148d2adb30e325f9d0
3
+ metadata.gz: 3107607c509286a1c20f22603fb6f255e5dd7efc
4
+ data.tar.gz: ddecefb0c57a4603b045d57b9e72dcfc2be84d8c
5
5
  SHA512:
6
- metadata.gz: 869dc7b20185f5836205c62ad2e7fa7a4093e21d6a94cc7bd8c9794906ede0a2d19625109c0d8ed2f07c100b2d52ec6ddfca2c0bb551d2a89e038d3e136a26f8
7
- data.tar.gz: cb6560d16949056b16e085b48a890af7645312be6915d72ce13664a73c053ba743a377c348532690d1a324949b0e7a81fcf96c5c6fbcd98389d93d6b86c8bdaf
6
+ metadata.gz: a81dfea378befa22549c703250dd975fc63d6b47b8dcf02535189b29799d7ecd8799467f8f6c56075c9eac3ce43ca15213694f05d8b6b7784ff91b8279bc27f5
7
+ data.tar.gz: 556a129076478c4886c3225155b94eb85d983ec9c8821afa4f795495b098b490f5290b3010b139e98bc3648befc878ca40d87692af88f6bb1a86b5c986579155
@@ -35,6 +35,11 @@ module Canals
35
35
  end
36
36
  end
37
37
  end
38
+
39
+ # transform boolean into ✓ / ✗
40
+ def checkmark(bool)
41
+ bool ? "\u2713".encode('utf-8') : "\u2717".encode('utf-8')
42
+ end
38
43
  end
39
44
  end
40
45
  end
@@ -1,5 +1,6 @@
1
1
  require 'canals'
2
2
  require 'canals/cli/helpers'
3
+ require 'canals/core_ext/shell_colors'
3
4
  require 'thor'
4
5
 
5
6
 
@@ -14,9 +15,11 @@ module Canals
14
15
  return if session_empty?
15
16
  require 'terminal-table'
16
17
  require 'canals/core_ext/string'
17
- columns = ["pid", "name", "local_port", "socket"]
18
- rows = Canals.session.map{ |s| columns.map{ |c| s[c.to_sym] || get_session_col_val(s, c) } }
19
- table = Terminal::Table.new :headings => columns.map{|c| c.sub("_"," ").titleize }, :rows => rows
18
+ columns = ["up", "pid", "name", "local_port", "socket"]
19
+ rows = Canals.session.sort{ |a,b| a[:name] <=> b[:name] }
20
+ .map { |s| columns.map{ |c| session_col_val(s, c) } }
21
+ table = Terminal::Table.new :headings => columns.map{|c| session_col_title(c) }, :rows => rows
22
+ table.align_column(3, :right)
20
23
  say table
21
24
  end
22
25
 
@@ -57,13 +60,41 @@ module Canals
57
60
  say "#{command} done.", :green
58
61
  end
59
62
 
60
- def get_session_col_val(session, key)
61
- case key
62
- when "local_port"
63
- entry = Canals.repository.get(session[:name])
64
- return entry.local_port if entry
63
+ def session_color(session)
64
+ if session_alive(session)
65
+ :white
66
+ else
67
+ [:dark_gray, :dim]
65
68
  end
66
- nil
69
+ end
70
+
71
+ def session_alive(session)
72
+ @alive ||= {}
73
+ pid = session[:pid]
74
+ @alive[pid] ||= Canals.session.alive? pid
75
+ end
76
+
77
+ def session_col_title(col)
78
+ case col
79
+ when "pid"
80
+ "PID"
81
+ else
82
+ col.sub("_", " ").titleize
83
+ end
84
+ end
85
+
86
+ def session_col_val(session, key)
87
+ c = session_color(session)
88
+ val = case key
89
+ when "local_port"
90
+ entry = Canals.repository.get(session[:name])
91
+ entry.local_port if entry
92
+ when "up"
93
+ checkmark(session_alive(session))
94
+ else
95
+ session[key.to_sym]
96
+ end
97
+ set_color(val, *c)
67
98
  end
68
99
 
69
100
  def session_empty?
@@ -40,6 +40,11 @@ module Canals
40
40
  end
41
41
  end
42
42
 
43
+ def alive?(session_id)
44
+ sess = get(session_id)
45
+ File.exist?(sess[:socket])
46
+ end
47
+
43
48
  def save!
44
49
  FileUtils.mkdir_p(session_file.dirname)
45
50
  File.open(session_file, 'w') do |file|
@@ -1,6 +1,6 @@
1
1
  module Canals
2
2
 
3
3
  # Canals gem current version
4
- VERSION = "0.8.4"
4
+ VERSION = "0.8.5"
5
5
 
6
6
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: canals
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.4
4
+ version: 0.8.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ido Abramovich
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2016-03-06 00:00:00.000000000 Z
11
+ date: 2016-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: thor