ecl 1.2.1 → 3.0.0.pre.alpha1
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 +5 -5
- data/.gitignore +0 -1
- data/Gemfile +1 -0
- data/Gemfile.lock +48 -0
- data/README.md +112 -89
- data/Rakefile +1 -0
- data/eclair.gemspec +7 -4
- data/exe/ecl +62 -4
- data/lib/eclair.rb +21 -18
- data/lib/eclair/color.rb +3 -0
- data/lib/eclair/config.rb +68 -21
- data/lib/eclair/grid.rb +242 -274
- data/lib/eclair/group_item.rb +33 -0
- data/lib/eclair/item.rb +42 -0
- data/lib/eclair/less_viewer.rb +2 -1
- data/lib/eclair/provider.rb +15 -0
- data/lib/eclair/providers/ec2.rb +2 -0
- data/lib/eclair/providers/ec2/ec2_group_item.rb +16 -0
- data/lib/eclair/providers/ec2/ec2_item.rb +136 -0
- data/lib/eclair/providers/ec2/ec2_provider.rb +118 -0
- data/lib/eclair/providers/gce.rb +2 -0
- data/lib/eclair/providers/gce/gce_group_item.rb +15 -0
- data/lib/eclair/providers/gce/gce_item.rb +117 -0
- data/lib/eclair/providers/gce/gce_provider.rb +34 -0
- data/lib/eclair/providers/k8s.rb +2 -0
- data/lib/eclair/providers/k8s/k8s_group_item.rb +15 -0
- data/lib/eclair/providers/k8s/k8s_item.rb +92 -0
- data/lib/eclair/providers/k8s/k8s_provider.rb +34 -0
- data/lib/eclair/version.rb +2 -1
- data/out.gif +0 -0
- data/templates/eclrc.template +81 -35
- metadata +60 -27
- data/bin/console +0 -10
- data/lib/eclair/cell.rb +0 -101
- data/lib/eclair/column.rb +0 -52
- data/lib/eclair/console.rb +0 -56
- data/lib/eclair/group.rb +0 -55
- data/lib/eclair/helpers/aws_helper.rb +0 -157
- data/lib/eclair/helpers/benchmark_helper.rb +0 -19
- data/lib/eclair/helpers/common_helper.rb +0 -24
- data/lib/eclair/instance.rb +0 -165
- data/lib/eclair/matcher.rb +0 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 26b729fe35fb071861abc7905ad29bb47b7ef3cbf0c41154f88dcb79bfdb7206
|
4
|
+
data.tar.gz: 00416e67138a83c0ab4775da8d64ca9ddfb361d9a1ef5ad38783799985ff1d45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 303f74e1a7d1b664c7e60fab94c1632fb22ab392e2efd3b6feed74b63b85707ee79c51916742cbee7637a451c981edb44f8e17de6866672a5a827ea6deb33fe1
|
7
|
+
data.tar.gz: 1712067f06e506d7f89a927bdef263a9c65a7035916d239c0e834e9d2de0fc081e44989eca1cdd1a9c2404c7cce3d62262ed594fe33475ca98f1b8683582e4ce
|
data/.gitignore
CHANGED
data/Gemfile
CHANGED
data/Gemfile.lock
ADDED
@@ -0,0 +1,48 @@
|
|
1
|
+
PATH
|
2
|
+
remote: .
|
3
|
+
specs:
|
4
|
+
ecl (3.0.0.pre.alpha1)
|
5
|
+
aws-sdk-ec2 (~> 1.18)
|
6
|
+
curses (~> 1.0)
|
7
|
+
json (~> 2.1)
|
8
|
+
oj (~> 3.3)
|
9
|
+
pry (~> 0.10)
|
10
|
+
ruby-string-match-scorer (~> 0.1)
|
11
|
+
|
12
|
+
GEM
|
13
|
+
remote: https://rubygems.org/
|
14
|
+
specs:
|
15
|
+
aws-eventstream (1.0.3)
|
16
|
+
aws-partitions (1.167.0)
|
17
|
+
aws-sdk-core (3.53.1)
|
18
|
+
aws-eventstream (~> 1.0, >= 1.0.2)
|
19
|
+
aws-partitions (~> 1.0)
|
20
|
+
aws-sigv4 (~> 1.1)
|
21
|
+
jmespath (~> 1.0)
|
22
|
+
aws-sdk-ec2 (1.87.0)
|
23
|
+
aws-sdk-core (~> 3, >= 3.53.0)
|
24
|
+
aws-sigv4 (~> 1.1)
|
25
|
+
aws-sigv4 (1.1.0)
|
26
|
+
aws-eventstream (~> 1.0, >= 1.0.2)
|
27
|
+
coderay (1.1.2)
|
28
|
+
curses (1.3.1)
|
29
|
+
jmespath (1.4.0)
|
30
|
+
json (2.2.0)
|
31
|
+
method_source (0.9.2)
|
32
|
+
oj (3.7.12)
|
33
|
+
pry (0.12.2)
|
34
|
+
coderay (~> 1.1.0)
|
35
|
+
method_source (~> 0.9.0)
|
36
|
+
rake (12.3.2)
|
37
|
+
ruby-string-match-scorer (0.1.0)
|
38
|
+
|
39
|
+
PLATFORMS
|
40
|
+
ruby
|
41
|
+
|
42
|
+
DEPENDENCIES
|
43
|
+
bundler (~> 2.0)
|
44
|
+
ecl!
|
45
|
+
rake (~> 12.3)
|
46
|
+
|
47
|
+
BUNDLED WITH
|
48
|
+
2.0.1
|
data/README.md
CHANGED
@@ -1,114 +1,137 @@
|
|
1
|
-
|
1
|
+
eclair [![RubyGems total downloads]][RubyGems]
|
2
|
+
========
|
3
|
+
![A video showing how Eclair works]
|
2
4
|
|
3
5
|
Simple ssh helper for Amazon EC2
|
4
6
|
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
Requirements
|
8
|
+
--------
|
9
|
+
- tmux > 2.0
|
10
|
+
- Properly configured `~/.aws/credentials`
|
9
11
|
|
10
|
-
|
12
|
+
Installation
|
13
|
+
--------
|
14
|
+
```console
|
15
|
+
$ gem install ecl
|
16
|
+
```
|
11
17
|
|
12
|
-
|
18
|
+
### Install from Source
|
19
|
+
If you want to use the latest functionalities, install Eclair from the source.
|
20
|
+
```bash
|
21
|
+
# Headers of ncursesw is required to build Eclair in GNU/Linux
|
22
|
+
sudo apt-get install libncursesw5-dev # Debian, Ubuntu, etc
|
23
|
+
sudo yum install libncursesw5-devel # CentOS, etc
|
13
24
|
|
14
|
-
|
15
|
-
|
16
|
-
$ ecl
|
25
|
+
# Build latest eclair gem
|
26
|
+
gem build eclair.gemspec
|
17
27
|
|
18
|
-
|
28
|
+
# Install eclair into your system
|
29
|
+
gem install ecl-3.0.0.pre.alpha1.gem
|
30
|
+
```
|
19
31
|
|
20
|
-
##
|
32
|
+
## Usage
|
33
|
+
```console
|
34
|
+
$ ecl
|
35
|
+
```
|
36
|
+
First execution will create `~/.ecl/config.rb` file. Edit this file and run again.
|
21
37
|
|
38
|
+
Configurations
|
39
|
+
--------
|
22
40
|
### aws_region
|
23
|
-
|
24
41
|
AWS region to connect.
|
25
|
-
|
26
|
-
|
42
|
+
```ruby
|
43
|
+
config.aws_region = "ap-northeast-1"
|
44
|
+
```
|
27
45
|
|
28
46
|
### columns
|
29
|
-
|
30
47
|
Max number of columns displayed in eclair.
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
Function to find username from image.
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
+
```ruby
|
49
|
+
config.columns = 4
|
50
|
+
```
|
51
|
+
|
52
|
+
### ssh_username
|
53
|
+
Function to find username from image. Returns username of given image. Uses
|
54
|
+
image data from [EC2::Client#describe_images] API call.
|
55
|
+
|
56
|
+
```ruby
|
57
|
+
config.ssh_username = lambda do |image|
|
58
|
+
case image.name
|
59
|
+
when /ubuntu/
|
60
|
+
"ubuntu"
|
61
|
+
else
|
62
|
+
"ec2-user"
|
63
|
+
end
|
64
|
+
end
|
65
|
+
```
|
48
66
|
|
49
67
|
### group_by
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
config.group_by = nil
|
82
|
-
|
68
|
+
Function to find group name from instance. Returns group name from instance
|
69
|
+
data. Uses instance data from [EC2::Client#describe_instances] API call.
|
70
|
+
|
71
|
+
You can group instances by security groups with this config:
|
72
|
+
```ruby
|
73
|
+
config.group_by = lambda do |instance|
|
74
|
+
if instance.security_groups.first
|
75
|
+
instance.security_groups.first.group_name
|
76
|
+
else
|
77
|
+
"no_group"
|
78
|
+
end
|
79
|
+
end
|
80
|
+
```
|
81
|
+
|
82
|
+
Grouping by instance name is also possible:
|
83
|
+
```ruby
|
84
|
+
config.group_by = lambda do |instance|
|
85
|
+
case instance.name
|
86
|
+
when /^production/
|
87
|
+
"production servers"
|
88
|
+
when /^test/
|
89
|
+
"test servers"
|
90
|
+
end
|
91
|
+
end
|
92
|
+
```
|
93
|
+
|
94
|
+
You can disable grouping by assigning nil:
|
95
|
+
```ruby
|
96
|
+
config.group_by = nil
|
97
|
+
```
|
83
98
|
|
84
99
|
### ssh_ports
|
85
|
-
Port numbers to try ssh.
|
86
|
-
|
87
|
-
|
88
|
-
|
100
|
+
Port numbers to try ssh.
|
101
|
+
```ruby
|
102
|
+
config.ssh_ports = [1234, 22]
|
103
|
+
```
|
89
104
|
|
90
105
|
### ssh_options
|
91
106
|
Extra options passed to ssh.
|
92
|
-
|
93
|
-
|
107
|
+
```ruby
|
108
|
+
config.ssh_options = "-o ConnectTimeout=1 -o StrictHostKeyChecking=no"
|
109
|
+
```
|
94
110
|
|
95
111
|
### ssh_hostname
|
96
|
-
Hostname to use in ssh.
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
112
|
+
Hostname to use in ssh. Choose from `:public_dns_name`, `:public_ip_address`,
|
113
|
+
`:private_dns_name`, `:private_ip_address`
|
114
|
+
```ruby
|
115
|
+
config.ssh_hostname = :public_ip_address
|
116
|
+
```
|
101
117
|
|
102
118
|
### ssh_keys
|
103
|
-
Hash of EC2 keypair name => key_path in local.
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
119
|
+
Hash of EC2 keypair name => key_path in local. If your key has been already
|
120
|
+
registered in ssh-agent, you don't have to configure this.
|
121
|
+
```ruby
|
122
|
+
config.ssh_keys = {
|
123
|
+
"keypair1" => "/path/to/key1",
|
124
|
+
"keypair2" => "/path/to/key2",
|
125
|
+
}
|
126
|
+
```
|
127
|
+
|
128
|
+
License
|
129
|
+
--------
|
130
|
+
The gem is available as open source under the terms of the [MIT License].
|
131
|
+
|
132
|
+
[RubyGems]: https://rubygems.org/gems/ecl
|
133
|
+
[RubyGems total downloads]: https://badgen.net/rubygems/dt/ecl
|
134
|
+
[A video showing how Eclair works]: out.gif
|
135
|
+
[EC2::Client#describe_images]: https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client.html#describe_images-instance_method
|
136
|
+
[EC2::Client#describe_instances]: https://docs.aws.amazon.com/AWSRubySDK/latest/AWS/EC2/Client.html#describe_instances-instance_method
|
137
|
+
[MIT License]: http://opensource.org/licenses/MIT
|
data/Rakefile
CHANGED
data/eclair.gemspec
CHANGED
@@ -1,3 +1,4 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
# coding: utf-8
|
2
3
|
lib = File.expand_path('../lib', __FILE__)
|
3
4
|
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
@@ -19,11 +20,13 @@ Gem::Specification.new do |spec|
|
|
19
20
|
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
20
21
|
spec.require_paths = ["lib"]
|
21
22
|
|
22
|
-
spec.add_development_dependency "bundler", "~>
|
23
|
-
spec.add_development_dependency "rake", "~>
|
23
|
+
spec.add_development_dependency "bundler", "~> 2.0"
|
24
|
+
spec.add_development_dependency "rake", "~> 12.3"
|
24
25
|
|
25
|
-
spec.add_runtime_dependency "aws-sdk", "~>
|
26
|
+
spec.add_runtime_dependency "aws-sdk-ec2", "~> 1.18"
|
26
27
|
spec.add_runtime_dependency "curses", "~> 1.0"
|
27
|
-
spec.add_runtime_dependency "pry", "~> 0.10"
|
28
28
|
spec.add_runtime_dependency "ruby-string-match-scorer", "~> 0.1"
|
29
|
+
spec.add_runtime_dependency "pry", "~> 0.10"
|
30
|
+
spec.add_runtime_dependency "json", "~> 2.1"
|
31
|
+
spec.add_runtime_dependency "oj", "~> 3.3"
|
29
32
|
end
|
data/exe/ecl
CHANGED
@@ -1,6 +1,64 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
-
|
2
|
+
# frozen_string_literal: true
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
require "eclair"
|
5
|
+
require "eclair/grid"
|
6
|
+
|
7
|
+
Eclair.init_config
|
8
|
+
Curses.init_screen
|
9
|
+
Curses.stdscr.timeout = 100
|
10
|
+
Curses.stdscr.keypad = true
|
11
|
+
Curses.start_color
|
12
|
+
Curses.use_default_colors
|
13
|
+
Curses.crmode
|
14
|
+
Curses.noecho
|
15
|
+
Curses.ESCDELAY = 25
|
16
|
+
trap("INT") { exit }
|
17
|
+
|
18
|
+
if ARGV.empty?
|
19
|
+
grid = Eclair::Grid.new
|
20
|
+
else
|
21
|
+
grid = Eclair::Grid.new(ARGV[0])
|
22
|
+
end
|
23
|
+
|
24
|
+
loop do
|
25
|
+
case grid.mode
|
26
|
+
when :nav, :sel
|
27
|
+
Curses.curs_set(0)
|
28
|
+
case k = Curses.stdscr.getch
|
29
|
+
when Curses::KEY_RESIZE
|
30
|
+
grid.resize
|
31
|
+
when Curses::KEY_LEFT, Curses::KEY_RIGHT, Curses::KEY_UP, Curses::KEY_DOWN, ?h, ?j, ?k, ?l
|
32
|
+
grid.move(k)
|
33
|
+
when " "
|
34
|
+
grid.space
|
35
|
+
when 10 # enter
|
36
|
+
grid.action
|
37
|
+
when "/"
|
38
|
+
grid.start_search
|
39
|
+
grid.clear_search
|
40
|
+
when "!"
|
41
|
+
Curses.close_screen
|
42
|
+
require 'pry'
|
43
|
+
binding.pry
|
44
|
+
exit
|
45
|
+
when ?q
|
46
|
+
exit
|
47
|
+
when 27 # escape
|
48
|
+
grid.clear_search
|
49
|
+
end
|
50
|
+
when :search
|
51
|
+
Curses.curs_set(1)
|
52
|
+
case k = Curses.stdscr.getch
|
53
|
+
when Curses::KEY_RESIZE
|
54
|
+
grid.resize
|
55
|
+
when 10 # enter
|
56
|
+
grid.end_search
|
57
|
+
when 27 # escape
|
58
|
+
grid.clear_search
|
59
|
+
grid.end_search
|
60
|
+
else
|
61
|
+
grid.append_search(k)
|
62
|
+
end
|
63
|
+
end
|
64
|
+
end
|
data/lib/eclair.rb
CHANGED
@@ -1,22 +1,25 @@
|
|
1
|
+
# frozen_string_literal: true
|
1
2
|
module Eclair
|
2
3
|
end
|
3
4
|
|
4
|
-
require "
|
5
|
-
require "aws-sdk"
|
6
|
-
require "string_scorer"
|
7
|
-
require "pry"
|
8
|
-
|
9
|
-
require "eclair/helpers/benchmark_helper"
|
10
|
-
require "eclair/helpers/common_helper"
|
11
|
-
require "eclair/helpers/aws_helper"
|
12
|
-
require "eclair/config"
|
13
|
-
require "eclair/version"
|
14
|
-
require "eclair/less_viewer"
|
15
|
-
require "eclair/grid"
|
16
|
-
require "eclair/column"
|
17
|
-
require "eclair/cell"
|
18
|
-
require "eclair/group"
|
19
|
-
require "eclair/instance"
|
20
|
-
require "eclair/console"
|
21
|
-
require "eclair/color"
|
5
|
+
require "eclair/providers/ec2"
|
22
6
|
|
7
|
+
# require "curses"
|
8
|
+
# require "zlib"
|
9
|
+
# require "aws-sdk"
|
10
|
+
# require "string_scorer"
|
11
|
+
# require "pry"
|
12
|
+
# require "eclair/item"
|
13
|
+
# require "eclair/helpers/benchmark_helper"
|
14
|
+
# require "eclair/helpers/common_helper"
|
15
|
+
# require "eclair/helpers/aws_helper"
|
16
|
+
# require "eclair/config"
|
17
|
+
# require "eclair/version"
|
18
|
+
# require "eclair/less_viewer"
|
19
|
+
# require "eclair/grid"
|
20
|
+
# require "eclair/column"
|
21
|
+
# require "eclair/cell"
|
22
|
+
# require "eclair/group"
|
23
|
+
# require "eclair/instance"
|
24
|
+
# require "eclair/console"
|
25
|
+
# require "eclair/color"
|