canals 0.8.4 → 0.8.5

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.
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