cwlog_tail 0.0.2 → 0.0.3
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/Gemfile.lock +5 -5
- data/README.md +7 -1
- data/circle.yml +12 -0
- data/cwlog_tail.gemspec +2 -2
- data/lib/cwlog_tail/cw_client.rb +6 -8
- data/lib/cwlog_tail/options.rb +58 -0
- data/lib/cwlog_tail/version.rb +1 -1
- data/lib/cwlog_tail.rb +4 -21
- metadata +16 -15
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 2e652e0a3346768b3f3662bb12b56bf13408f24624ea474a7ebf9c4cf3782827
|
4
|
+
data.tar.gz: 5b12f0c395c3b83bb9992e60c2d18790a62f8d2db9db5e95dfa9267c0f975b33
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2e77081ea0ca1d76e2c8d0dbb88dbe5befb3e87bbdd5d8785cf4e9e91f438993a1781ceee0d099075a426757d54005b45fc6f9071a2e4e50b5334e384389dbb9
|
7
|
+
data.tar.gz: f10d05a1cea20a7701fe400940b2cb4d15ae448a32c2af2f5b9554640b3cd317f2cd091a7f1106914bed7ba20adad3d29f54796047a4bdb6560fa7e78939e407
|
data/Gemfile.lock
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
cwlog_tail (0.0.
|
4
|
+
cwlog_tail (0.0.3)
|
5
5
|
aws-sdk (~> 2.8)
|
6
6
|
peco_selector (~> 1.0)
|
7
7
|
|
@@ -25,7 +25,7 @@ GEM
|
|
25
25
|
coderay (~> 1.1.0)
|
26
26
|
method_source (~> 0.8.1)
|
27
27
|
slop (~> 3.4)
|
28
|
-
rake (
|
28
|
+
rake (13.0.6)
|
29
29
|
rspec (3.5.0)
|
30
30
|
rspec-core (~> 3.5.0)
|
31
31
|
rspec-expectations (~> 3.5.0)
|
@@ -45,11 +45,11 @@ PLATFORMS
|
|
45
45
|
ruby
|
46
46
|
|
47
47
|
DEPENDENCIES
|
48
|
-
bundler (
|
48
|
+
bundler (>= 2.2.33)
|
49
49
|
cwlog_tail!
|
50
50
|
pry
|
51
|
-
rake (
|
51
|
+
rake (>= 12.3.3)
|
52
52
|
rspec (~> 3.0)
|
53
53
|
|
54
54
|
BUNDLED WITH
|
55
|
-
|
55
|
+
2.2.33
|
data/README.md
CHANGED
@@ -1,8 +1,14 @@
|
|
1
|
-
cwlog_tail
|
1
|
+
cwlog_tail [](https://badge.fury.io/rb/cwlog_tail) [](https://circleci.com/gh/tomorrowkey/cwlog_tail/tree/master)
|
2
2
|
===============
|
3
3
|
|
4
4
|
tail AWS CloudWatch logs on terminal
|
5
5
|
|
6
|
+
# Installation
|
7
|
+
|
8
|
+
```
|
9
|
+
$ gem install cwlog_tail
|
10
|
+
```
|
11
|
+
|
6
12
|
# License
|
7
13
|
|
8
14
|
```
|
data/circle.yml
ADDED
data/cwlog_tail.gemspec
CHANGED
@@ -20,8 +20,8 @@ Gem::Specification.new do |spec|
|
|
20
20
|
|
21
21
|
spec.add_dependency 'aws-sdk', '~> 2.8'
|
22
22
|
spec.add_dependency 'peco_selector', '~> 1.0'
|
23
|
-
spec.add_development_dependency 'bundler', '
|
24
|
-
spec.add_development_dependency 'rake', '
|
23
|
+
spec.add_development_dependency 'bundler', '>= 2.2.33'
|
24
|
+
spec.add_development_dependency 'rake', '>= 12.3.3'
|
25
25
|
spec.add_development_dependency 'rspec', '~> 3.0'
|
26
26
|
spec.add_development_dependency 'pry'
|
27
27
|
end
|
data/lib/cwlog_tail/cw_client.rb
CHANGED
@@ -2,23 +2,21 @@ require 'aws-sdk'
|
|
2
2
|
|
3
3
|
module CwlogTail
|
4
4
|
class CwClient
|
5
|
-
TAIL_INTERVAL = 5
|
6
5
|
DEFAULT_LINES = 100
|
7
|
-
DEFAULT_PAGE_COUNT = 3
|
8
6
|
|
9
7
|
def client
|
10
8
|
@cloudwatch ||= Aws::CloudWatchLogs::Client.new
|
11
9
|
end
|
12
10
|
|
13
11
|
def log_groups
|
14
|
-
client.describe_log_groups.log_groups
|
12
|
+
client.describe_log_groups.each_page.to_a.map(&:log_groups).flatten
|
15
13
|
end
|
16
14
|
|
17
15
|
def log_group_names
|
18
16
|
log_groups.map(&:log_group_name)
|
19
17
|
end
|
20
18
|
|
21
|
-
def log_streams(log_group_name, page_count
|
19
|
+
def log_streams(log_group_name, page_count)
|
22
20
|
next_token = nil
|
23
21
|
@log_streams ||= page_count.times.each.with_object([]) { |_, results|
|
24
22
|
log_streams = client.describe_log_streams(
|
@@ -39,19 +37,19 @@ module CwlogTail
|
|
39
37
|
log_stream_name: log_stream_name,
|
40
38
|
next_token: last_token
|
41
39
|
}
|
42
|
-
if options
|
40
|
+
if options.lines.nil?
|
43
41
|
log_options[:start_from_head] = true
|
44
42
|
log_options[:limit] = DEFAULT_LINES
|
45
43
|
else
|
46
44
|
log_options[:start_from_head] = false
|
47
|
-
log_options[:limit] = options
|
45
|
+
log_options[:limit] = options.lines
|
48
46
|
end
|
49
47
|
pages = client.get_log_events(log_options)
|
50
48
|
pages.events.each { |event| yield(event) }
|
51
49
|
|
52
50
|
if last_token == pages.next_forward_token
|
53
|
-
if options
|
54
|
-
sleep
|
51
|
+
if options.follow?
|
52
|
+
sleep options.interval
|
55
53
|
else
|
56
54
|
break
|
57
55
|
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
module CwlogTail
|
2
|
+
class Options
|
3
|
+
DEFAULT_INTERVAL = 5
|
4
|
+
DEFAULT_PAGE_COUNT = 3
|
5
|
+
|
6
|
+
def initialize(argv)
|
7
|
+
@argv = argv
|
8
|
+
end
|
9
|
+
|
10
|
+
def follow?
|
11
|
+
@argv.member?('-f') || @argv.member?('--follow')
|
12
|
+
end
|
13
|
+
|
14
|
+
def lines
|
15
|
+
idx = @argv.index('-n') || @argv.index('--lines')
|
16
|
+
return nil unless idx
|
17
|
+
|
18
|
+
lines = @argv[idx + 1].to_i
|
19
|
+
return nil if lines <= 0
|
20
|
+
|
21
|
+
lines
|
22
|
+
end
|
23
|
+
|
24
|
+
def interval
|
25
|
+
idx = @argv.index('--interval')
|
26
|
+
return DEFAULT_INTERVAL unless idx
|
27
|
+
|
28
|
+
interval = @argv[idx + 1].to_i
|
29
|
+
return DEFAULT_INTERVAL if interval <= 0
|
30
|
+
|
31
|
+
interval
|
32
|
+
end
|
33
|
+
|
34
|
+
def page_count
|
35
|
+
idx = @argv.index('--page_count')
|
36
|
+
return DEFAULT_PAGE_COUNT unless idx
|
37
|
+
|
38
|
+
page_count = @argv[idx + 1].to_i
|
39
|
+
return DEFAULT_PAGE_COUNT if page_count <= 0
|
40
|
+
|
41
|
+
page_count
|
42
|
+
end
|
43
|
+
|
44
|
+
def log_group
|
45
|
+
idx = @argv.index('--log_group')
|
46
|
+
return nil unless idx
|
47
|
+
|
48
|
+
@argv[idx + 1]
|
49
|
+
end
|
50
|
+
|
51
|
+
def log_stream
|
52
|
+
idx = @argv.index('--log_stream')
|
53
|
+
return nil unless idx
|
54
|
+
|
55
|
+
@argv[idx + 1]
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
data/lib/cwlog_tail/version.rb
CHANGED
data/lib/cwlog_tail.rb
CHANGED
@@ -1,33 +1,16 @@
|
|
1
1
|
require 'cwlog_tail/version'
|
2
2
|
require 'cwlog_tail/cw_client'
|
3
|
+
require 'cwlog_tail/options'
|
3
4
|
require 'peco_selector'
|
4
5
|
|
5
6
|
module CwlogTail
|
6
|
-
def self.follow?
|
7
|
-
ARGV.member?('-f')
|
8
|
-
end
|
9
|
-
|
10
|
-
def self.lines
|
11
|
-
idx = ARGV.index('-n') || ARGV.index('--lines')
|
12
|
-
if idx.nil?
|
13
|
-
nil
|
14
|
-
else
|
15
|
-
ARGV[idx + 1].to_i
|
16
|
-
end
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.options
|
20
|
-
{ follow: follow?,
|
21
|
-
lines: lines,
|
22
|
-
}
|
23
|
-
end
|
24
|
-
|
25
7
|
client = CwClient.new
|
8
|
+
options = Options.new(ARGV)
|
26
9
|
|
27
|
-
log_group_name = PecoSelector.select_from(client.log_group_names).first
|
10
|
+
log_group_name = options.log_group || PecoSelector.select_from(client.log_group_names).first
|
28
11
|
exit 0 unless log_group_name
|
29
12
|
|
30
|
-
log_stream_name = PecoSelector.select_from(client.log_streams(log_group_name).map{|log_stream|
|
13
|
+
log_stream_name = options.log_stream || PecoSelector.select_from(client.log_streams(log_group_name, options.page_count).map{|log_stream|
|
31
14
|
["#{Time.at(log_stream.last_event_timestamp / 1000)} #{log_stream.log_stream_name}", log_stream]
|
32
15
|
}).first&.log_stream_name
|
33
16
|
exit 0 unless log_stream_name
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cwlog_tail
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tomoki Yamashita
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2022-02-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aws-sdk
|
@@ -42,30 +42,30 @@ dependencies:
|
|
42
42
|
name: bundler
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- - "
|
45
|
+
- - ">="
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 2.2.33
|
48
48
|
type: :development
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- - "
|
52
|
+
- - ">="
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 2.2.33
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- - "
|
59
|
+
- - ">="
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 12.3.3
|
62
62
|
type: :development
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- - "
|
66
|
+
- - ">="
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
68
|
+
version: 12.3.3
|
69
69
|
- !ruby/object:Gem::Dependency
|
70
70
|
name: rspec
|
71
71
|
requirement: !ruby/object:Gem::Requirement
|
@@ -108,16 +108,18 @@ files:
|
|
108
108
|
- README.md
|
109
109
|
- Rakefile
|
110
110
|
- bin/console
|
111
|
+
- circle.yml
|
111
112
|
- cwlog_tail.gemspec
|
112
113
|
- exe/cwlog_tail
|
113
114
|
- lib/cwlog_tail.rb
|
114
115
|
- lib/cwlog_tail/cw_client.rb
|
116
|
+
- lib/cwlog_tail/options.rb
|
115
117
|
- lib/cwlog_tail/version.rb
|
116
118
|
homepage: http://github.com/tomorrowkey/cwlog_tail
|
117
119
|
licenses:
|
118
120
|
- Apache License 2.0
|
119
121
|
metadata: {}
|
120
|
-
post_install_message:
|
122
|
+
post_install_message:
|
121
123
|
rdoc_options: []
|
122
124
|
require_paths:
|
123
125
|
- lib
|
@@ -132,9 +134,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
132
134
|
- !ruby/object:Gem::Version
|
133
135
|
version: '0'
|
134
136
|
requirements: []
|
135
|
-
|
136
|
-
|
137
|
-
signing_key:
|
137
|
+
rubygems_version: 3.1.6
|
138
|
+
signing_key:
|
138
139
|
specification_version: 4
|
139
140
|
summary: Tail CloudWatch log
|
140
141
|
test_files: []
|