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 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: []