awful 0.0.135 → 0.0.136

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: 58d83a279090cf5d30c21d57fddd942bd56d8124
4
- data.tar.gz: cbd9a07005eaafde070e069c7f1d4d7a03f58c6c
3
+ metadata.gz: afe9345863882bca15eb3e075919d190b50de773
4
+ data.tar.gz: e9bafe169cbc400fd85676bcfd375281a155a2e0
5
5
  SHA512:
6
- metadata.gz: 6b99430490b98b315df24ce39c217a51b9a608ef9c48491e0f8fd50ddb52191e4e627e33d555d5f79ab4ca51da4c8f24662c80cef49cceef6dc6643b1f45f4a7
7
- data.tar.gz: 9675cd3d6bcbac08755cd6fef86356ceb7690cca55d9b3de6c2e55b392c7f8aafdb1fe7971f1f3a768de3a42c914b4f56ea45bc65fd1e701baa1eaf3ea544621
6
+ metadata.gz: 327e6d510c2adc410dc2fbf93d4700bc9d1e2d589ebf333fa2857d8a76bd926098a18c85fe8ece14c0efb6eae9e43f322bbe05654d05b0cd6399482f73c32341
7
+ data.tar.gz: f6915c25c9f5084c6cb77eed91de95266055d58461ab5782a6e6e523e912769488224388479a1f94e4ec7b31c0ef38fbaec52841c4e2a4768769b2a0aaa9152f
@@ -25,7 +25,7 @@ module Awful
25
25
  end
26
26
 
27
27
  ## return and output groups
28
- log_groups.tap do |groups|
28
+ log_groups.output do |groups|
29
29
  if options[:long]
30
30
  print_table groups.map { |group|
31
31
  [
@@ -72,9 +72,11 @@ module Awful
72
72
  break if next_token.nil?
73
73
  break if log_streams.count >= options[:limit].to_i
74
74
  end
75
- log_streams.tap do |streams|
75
+ log_streams.output do |streams|
76
76
  if options[:long]
77
- print_table streams.map { |s| [s.log_stream_name, Time.at(s.last_event_timestamp.to_i/1000)] }
77
+ print_table streams.map { |s|
78
+ [ s.log_stream_name, Time.at(s.creation_time.to_i/1000), Time.at(s.last_event_timestamp.to_i/1000) ]
79
+ }
78
80
  else
79
81
  puts streams.map(&:log_stream_name)
80
82
  end
@@ -82,44 +84,66 @@ module Awful
82
84
  end
83
85
 
84
86
  no_commands do
85
- def latest_stream(group)
87
+ ## return n-th latest stream for group
88
+ def latest_stream(group, n = 0)
89
+ n = n.to_i.abs # convert string and -ves
86
90
  logs.describe_log_streams(
87
91
  log_group_name: group,
88
- order_by: 'LastEventTime',
89
- descending: true,
90
- limit: 1
91
- ).log_streams.first
92
+ order_by: 'LastEventTime',
93
+ descending: true,
94
+ limit: n + 1
95
+ ).log_streams[n]
92
96
  end
93
97
  end
94
98
 
95
99
  desc 'latest GROUP', 'get name of latest stream for GROUP'
96
- def latest(group)
97
- latest_stream(group).tap do |stream|
100
+ def latest(group, n = 0)
101
+ latest_stream(group, n).output do |stream|
98
102
  puts stream.log_stream_name
99
103
  end
100
104
  end
101
105
 
102
106
  desc 'events GROUP [STREAM]', 'get log events from given, or latest, stream'
103
- method_option :long, aliases: '-l', default: false, desc: 'Long listing'
104
- method_option :limit, aliases: '-n', default: 50, desc: 'Count to limit returned results'
105
- def events(group, stream = nil)
107
+ method_option :long, aliases: '-l', type: :boolean, default: false, desc: 'long listing including timestamps'
108
+ method_option :stream, aliases: '-s', type: :string, default: nil, desc: 'specific stream to read instead of latest'
109
+ method_option :limit, aliases: '-n', type: :numeric, default: nil, desc: 'limit results returned per page'
110
+ method_option :pages, aliases: '-p', type: :numeric, default: Float::INFINITY, desc: 'limit number of pages to output'
111
+ method_option :head, aliases: '-H', type: :boolean, default: true, desc: 'start from head, ie first page'
112
+ method_option :tail, aliases: '-t', type: :numeric, default: nil, desc: 'show given small number of most recent events'
113
+ def events(group, nth = 0)
114
+ opt = options.dup
115
+ opt[:stream] ||= latest_stream(group, nth).log_stream_name # use latest stream if none requested
116
+
117
+ ## magical tail option returns up to requested number of last events
118
+ if opt[:tail]
119
+ opt[:head] = false
120
+ opt[:pages] = 1
121
+ opt[:limit] = opt[:tail]
122
+ end
123
+
106
124
  next_token = nil
107
125
  events = []
126
+ pages = 0
108
127
  loop do
109
128
  response = logs.get_log_events(
110
- log_group_name: group,
111
- log_stream_name: stream || latest_stream(group).log_stream_name,
112
- start_from_head: true,
113
- limit: options[:limit],
114
- next_token: next_token
129
+ log_group_name: group,
130
+ log_stream_name: opt[:stream],
131
+ start_from_head: opt[:head],
132
+ limit: opt[:limit],
133
+ next_token: next_token,
115
134
  )
135
+
116
136
  break if response.events.count == 0 # break on no results as token does not get to nil
117
137
  events = events + response.events
138
+
139
+ pages += 1
140
+ break if pages >= opt[:pages]
141
+
118
142
  next_token = response.next_backward_token
119
- break if events.count >= options[:limit].to_i
120
143
  break if next_token.nil? # not sure if this is ever set to nil
121
144
  end
122
- events.tap do |ev|
145
+
146
+ events.output do |ev|
123
147
  if options[:long]
124
148
  print_table ev.map { |e| [Time.at(e.timestamp.to_i/1000), e.message] }
125
149
  else
data/lib/awful/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Awful
2
- VERSION = '0.0.135'
2
+ VERSION = '0.0.136'
3
3
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: awful
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.135
4
+ version: 0.0.136
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ric Lister