cwlog_tail 0.0.2 → 0.0.3

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
- SHA1:
3
- metadata.gz: 87861cb65c0da5a96f72e0f1614ce9d408a0abfc
4
- data.tar.gz: f91dc8400b75c35a9c809837eea0fb5fee6a4d02
2
+ SHA256:
3
+ metadata.gz: 2e652e0a3346768b3f3662bb12b56bf13408f24624ea474a7ebf9c4cf3782827
4
+ data.tar.gz: 5b12f0c395c3b83bb9992e60c2d18790a62f8d2db9db5e95dfa9267c0f975b33
5
5
  SHA512:
6
- metadata.gz: 1d1afa411826702a316093662b577b8372d9210d6fb32c05111c2d21cc7ac259d7b35e7eeb96d2756fadaf156ab72ff48811e5f8a7b3c63fd2b098badefc5356
7
- data.tar.gz: c9b6fb271af2d8c28ec84a6789970570fe788ce75a335981adc067bd931333f44646f7c71510b3f7bace2f99b6ee7f6ffac5a0b80e863c7f06f197dc89ce7a8e
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.2)
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 (10.5.0)
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 (~> 1.12)
48
+ bundler (>= 2.2.33)
49
49
  cwlog_tail!
50
50
  pry
51
- rake (~> 10.0)
51
+ rake (>= 12.3.3)
52
52
  rspec (~> 3.0)
53
53
 
54
54
  BUNDLED WITH
55
- 1.13.7
55
+ 2.2.33
data/README.md CHANGED
@@ -1,8 +1,14 @@
1
- cwlog_tail
1
+ cwlog_tail [![Gem Version](https://badge.fury.io/rb/cwlog_tail.svg)](https://badge.fury.io/rb/cwlog_tail) [![CircleCI](https://circleci.com/gh/tomorrowkey/cwlog_tail/tree/master.svg?style=svg)](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
@@ -0,0 +1,12 @@
1
+ machine:
2
+ timezone:
3
+ Asia/Tokyo
4
+ ruby:
5
+ version: 2.2.6
6
+ dependencies:
7
+ override:
8
+ - gem update bundler
9
+ - bundle install --path vendor/bundle --jobs=4 --retry=3
10
+ test:
11
+ override:
12
+ - bundle exec rspec spec --format progress
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', '~> 1.12'
24
- spec.add_development_dependency 'rake', '~> 10.0'
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
@@ -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 = DEFAULT_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[:lines].nil?
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[:lines]
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[:follow]
54
- sleep TAIL_INTERVAL
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
@@ -1,3 +1,3 @@
1
1
  module CwlogTail
2
- VERSION = '0.0.2'
2
+ VERSION = '0.0.3'
3
3
  end
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.2
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: 2017-03-10 00:00:00.000000000 Z
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: '1.12'
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: '1.12'
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: '10.0'
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: '10.0'
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
- rubyforge_project:
136
- rubygems_version: 2.6.8
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: []