papertrail 0.9.12 → 0.9.13

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA1:
3
+ metadata.gz: 5327015cf4d283298b30e7b29ff67a3adfffe55b
4
+ data.tar.gz: 03f354db49d33b5b0aca4b6e32dc0ae1b31259fe
5
+ SHA512:
6
+ metadata.gz: 155917c02088843bb3c9cc86f84f8496393260cefd1330f857a4ab585577b39c0a973ea63c49c42f85c6e8ea47fbe10e05b748e0769a6e543e99365a04dd6c0e
7
+ data.tar.gz: 83c6bdb35966d3600964911c7591b8a9fb9f278c41f4a96adcf81b20127aa5747b78185bea4a01cd1348ba04197e345e2608036252dd0af7350d4e87d0b532e5
data/Gemfile CHANGED
@@ -1,3 +1,4 @@
1
1
  source 'https://rubygems.org'
2
2
 
3
3
  gemspec
4
+
data/README.md CHANGED
@@ -9,15 +9,15 @@ Supports optional Boolean search queries and polling for new events
9
9
  $ papertrail -f "(www OR db) (nginx OR pgsql) -accepted"
10
10
 
11
11
  Output is line-buffered so it can be fed into a pipe, like for grep.
12
- ANSI color codes are rendered in color on suitable terminals; see below for
12
+ ANSI color codes are rendered in color on suitable terminals; see below for
13
13
  additional colorization options.
14
14
 
15
15
  The [Connection] class can be used by other apps to perform one-off
16
16
  API searches or follow (tail) events matching a given query. Interface
17
17
  may change.
18
18
 
19
- Also includes `papertrail-add-system`, `papertrail-remove-system`,
20
- `papertrail-add-group`, and `papertrail-join-group` binaries, which
19
+ Also includes `papertrail-add-system`, `papertrail-remove-system`,
20
+ `papertrail-add-group`, and `papertrail-join-group` binaries, which
21
21
  invoke the corresponding Papertrail [HTTP API] call.
22
22
 
23
23
 
@@ -70,12 +70,13 @@ You may want to alias "pt" to "papertrail", like:
70
70
  -c, --configfile PATH Path to config (~/.papertrail.yml)
71
71
  -s, --system SYSTEM System to search
72
72
  -g, --group GROUP Group to search
73
+ -S, --search SEARCH Saved search to search
73
74
  -j, --json Output raw json data
74
75
  --min-time MIN Earliest time to search from.
75
76
  --max-time MAX Latest time to search from.
76
77
 
77
78
 
78
- Usage:
79
+ Usage:
79
80
  papertrail [-f] [-s system] [-g group] [-d seconds] [-c papertrail.yml] [-j] [--min-time mintime] [--max-time maxtime] [query]
80
81
 
81
82
  Examples:
@@ -85,34 +86,58 @@ You may want to alias "pt" to "papertrail", like:
85
86
  papertrail -s ns1 "connection refused"
86
87
  papertrail -f "(www OR db) (nginx OR pgsql) -accepted"
87
88
  papertrail -f -g Production "(nginx OR pgsql) -accepted"
89
+ papertrail -S "Critical errors"
88
90
  papertrail -g Production --min-time 'yesterday at noon' --max-time 'today at 4am'
89
91
 
90
92
  Includes 4 binaries to change Papertrail settings: papertrail-add-system, papertrail-remove-system,
91
93
  papertrail-add-group, papertrail-leave-group. Run with --help or see README.
92
94
 
93
95
  More: http://papertrailapp.com/
94
-
95
96
 
96
- ### Colors
97
97
 
98
- ANSI color codes are retained, so log messages which are already colorized
99
- will automatically render in color on ANSI-capable terminals.
98
+ ### Count, pivot, and summarize
99
+
100
+ To count the number of matches, pipe to `wc -l`. For example, count how
101
+ many logs contained `Failure` in the last minute:
102
+
103
+ $ papertrail --min-time '1 minute ago' Failure | wc -l
104
+ 42
105
+
106
+ Output only the program/file name (which is output as field 5):
107
+
108
+ $ papertrail --min-time '1 minute ago' | cut -f 5 -d ' '
109
+ passenger.log:
110
+ sshd:
111
+ app/web.2:
100
112
 
101
- To manually colorize monochrome logs, pipe through [colortail] or
102
- [MultiTail]. We recommend `colortail``:
113
+ Count by source/system name (field 4):
103
114
 
104
- $ sudo gem install colortail
115
+ $ papertrail --min-time '1 minute ago' | cut -f 4 -d ' ' | sort | uniq -c
116
+ 98 www42
117
+ 39 acmedb-core01
118
+ 2 fastly
119
+
120
+ For sum, mean, and statistics, see
121
+ [datamash](http://www.gnu.org/software/datamash/).
122
+
123
+ ### Colors
124
+
125
+ ANSI color codes are retained, so log messages which are already colorized
126
+ will automatically render in color on ANSI-capable terminals.
105
127
 
106
- Save [colortailrc] as `~/.colortailrc` and edit it to enable:
128
+ To colorize monochrome logs, pipe through [lnav]. Install `lnav` from your
129
+ preferred package repository, such as `brew install lnav` or
130
+ `apt-get install lnav`, then:
107
131
 
108
- $ papertrail -f -d 5 | colortail -g papertrail
132
+ $ papertrail -f | lnav
133
+ $ papertrail --min-time "1 hour ago" error | lnav
109
134
 
110
135
  ### Shorthand
111
136
 
112
137
  If you're using bash, create a function that accepts arguments, then
113
138
  invoke `pt` with optional search operators:
114
139
 
115
- $ function pt() { papertrail -f -d 5 $* | colortail -g papertrail; }
140
+ $ function pt() { papertrail -f -d 5 $* | lnav; }
116
141
  $ pt 1.2.3 Failure
117
142
 
118
143
  Add the function line to your `~/.bashrc`.
@@ -131,22 +156,22 @@ and can be any ANSI [escape characters].
131
156
 
132
157
  ### UTF-8 (non-English searches)
133
158
 
134
- When searching in a language other than English, if you get no matches, you
135
- may need to explicitly tell Ruby to use UTF-8. Ruby 1.9 honors the `LANG`
159
+ When searching in a language other than English, if you get no matches, you
160
+ may need to explicitly tell Ruby to use UTF-8. Ruby 1.9 honors the `LANG`
136
161
  shell environment variable, and your shell may not set it to `UTF-8`.
137
162
 
138
163
  To test, try:
139
164
 
140
165
  ruby -E:UTF-8 -S papertrail your_search
141
166
 
142
- If that works, add `-E:UTF-8` to the `RUBYOPT` variable to set the encoding
167
+ If that works, add `-E:UTF-8` to the `RUBYOPT` variable to set the encoding
143
168
  at invocation. For example, to persist that in a `.bashrc`:
144
169
 
145
170
  export RUBYOPT="-E:UTF-8"
146
171
 
147
172
  ### Negation-only queries
148
173
 
149
- Unix shells handle arguments beginning with hyphens (`-`) differently
174
+ Unix shells handle arguments beginning with hyphens (`-`) differently
150
175
  ([why](http://unix.stackexchange.com/questions/11376/what-does-double-dash-mean)).
151
176
  Usually this is moot because most searches start with a positive match.
152
177
  To search only for log messages without a given string, use `--`. For
@@ -190,13 +215,13 @@ even though one is for 4 words (AND) while the other is for a phrase:
190
215
 
191
216
  ## Add/Remove Systems, Create Group, Join Group
192
217
 
193
- In addition to tail and search with the `papertrail` binary, the gem includes
194
- 4 other binaries which wrap other parts of Papertrail's [HTTP API] to explicitly
218
+ In addition to tail and search with the `papertrail` binary, the gem includes
219
+ 4 other binaries which wrap other parts of Papertrail's [HTTP API] to explicitly
195
220
  add or remove a system, to create a new group, and to join a system to a group.
196
221
 
197
222
  In most cases, configuration is automatic and these are not not necessary.
198
223
 
199
- To see usage, run any of these commands with `--help`: `papertrail-add-system`,
224
+ To see usage, run any of these commands with `--help`: `papertrail-add-system`,
200
225
  `papertrail-remove-system`, `papertrail-add-group`, `papertrail-join-group`.
201
226
 
202
227
 
@@ -223,7 +248,5 @@ to your enhancement.
223
248
  [HTTP API]: http://help.papertrailapp.com/kb/how-it-works/http-api
224
249
  [User Profile]: https://papertrailapp.com/user/edit
225
250
  [RubyGems]: https://rubygems.org/gems/papertrail-cli
226
- [colortail]: http://rubydoc.info/gems/colortail
227
- [colortailrc]: https://github.com/papertrail/papertrail-cli/wiki/colortailrc
228
- [MultiTail]: http://www.vanheusden.com/multitail/index.html
251
+ [lnav]: http://lnav.org/
229
252
  [escape characters]: http://en.wikipedia.org/wiki/ANSI_escape_code#Colors
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+ require 'papertrail/cli_leave_group'
3
+
4
+ begin
5
+ Papertrail::CliLeaveGroup.new.run
6
+ rescue Interrupt
7
+ exit(0)
8
+ end
@@ -1,5 +1,5 @@
1
1
  module Papertrail
2
- VERSION = "0.9.12"
2
+ VERSION = "0.9.13"
3
3
  end
4
4
 
5
5
  require 'papertrail/connection'
@@ -1,6 +1,7 @@
1
1
  require 'optparse'
2
2
  require 'yaml'
3
3
  require 'chronic'
4
+ require 'ansi/core'
4
5
 
5
6
  require 'papertrail/connection'
6
7
  require 'papertrail/cli_helpers'
@@ -17,7 +18,9 @@ module Papertrail
17
18
  :configfile => nil,
18
19
  :delay => 2,
19
20
  :follow => false,
20
- :token => ENV['PAPERTRAIL_API_TOKEN']
21
+ :token => ENV['PAPERTRAIL_API_TOKEN'],
22
+ :color => :program,
23
+ :force_color => false,
21
24
  }
22
25
 
23
26
  @query_options = {}
@@ -37,32 +40,40 @@ module Papertrail
37
40
  puts opts
38
41
  exit
39
42
  end
40
- opts.on("-f", "--follow", "Continue running and print new events (off)") do |v|
43
+ opts.on("-f", "--follow", "Continue running and printing new events (off)") do |v|
41
44
  options[:follow] = true
42
45
  end
46
+ opts.on("--min-time MIN", "Earliest time to search from") do |v|
47
+ options[:min_time] = v
48
+ end
49
+ opts.on("--max-time MAX", "Latest time to search from") do |v|
50
+ options[:max_time] = v
51
+ end
43
52
  opts.on("-d", "--delay SECONDS", "Delay between refresh (2)") do |v|
44
53
  options[:delay] = v.to_i
45
54
  end
46
55
  opts.on("-c", "--configfile PATH", "Path to config (~/.papertrail.yml)") do |v|
47
56
  options[:configfile] = File.expand_path(v)
48
57
  end
49
- opts.on("-s", "--system SYSTEM", "System to search") do |v|
50
- options[:system] = v
51
- end
52
58
  opts.on("-g", "--group GROUP", "Group to search") do |v|
53
59
  options[:group] = v
54
60
  end
55
61
  opts.on("-S", "--search SEARCH", "Saved search to search") do |v|
56
62
  options[:search] = v
57
63
  end
58
- opts.on("-j", "--json", "Output raw json data") do |v|
64
+ opts.on("-s", "--system SYSTEM", "System to search") do |v|
65
+ options[:system] = v
66
+ end
67
+ opts.on("-j", "--json", "Output raw JSON data (off)") do |v|
59
68
  options[:json] = true
60
69
  end
61
- opts.on("--min-time MIN", "Earliest time to search from.") do |v|
62
- options[:min_time] = v
70
+ opts.on("--color [program|sender|all|off] (program)",
71
+ [:program, :sender, :all, :off],
72
+ "Attribute(s) to colorize based on") do |v|
73
+ options[:color] = v
63
74
  end
64
- opts.on("--max-time MAX", "Latest time to search from.") do |v|
65
- options[:max_time] = v
75
+ opts.on("--force-color", "Force use of ANSI color characters even on non-tty outputs (off)") do |v|
76
+ options[:force_color] = true
66
77
  end
67
78
 
68
79
  opts.separator usage
@@ -72,7 +83,7 @@ module Papertrail
72
83
  configfile_options = load_configfile(options[:configfile])
73
84
  options.merge!(configfile_options)
74
85
  end
75
-
86
+
76
87
  unless options[:token]
77
88
  abort 'Authentication token not found. Set config file "token" attribute or PAPERTRAIL_API_TOKEN.'
78
89
  end
@@ -132,30 +143,58 @@ module Papertrail
132
143
  if options[:json]
133
144
  $stdout.puts Papertrail::OkJson.encode(event.data)
134
145
  else
135
- $stdout.puts event
146
+ display_result(event)
136
147
  end
137
148
  end
138
149
  end
139
150
 
151
+ COLORS = [:cyan, :yellow, :green, :magenta, :red]
152
+
153
+ def colorize(event)
154
+ attribs = ""
155
+ if options[:color] == :sender || options[:color] == :all
156
+ attribs += event.data["hostname"]
157
+ end
158
+ if options[:color] == :program || options[:color] == :all
159
+ attribs += event.data["program"]
160
+ end
161
+
162
+ idx = attribs.hash % 5
163
+ color = COLORS[idx]
164
+ pre = "#{event.received_at.strftime('%b %e %X')} #{event.data['hostname']} #{event.data['program']}:"
165
+ post = " #{event.data['message']}"
166
+ pre.ansi(color) + post
167
+ end
168
+
169
+ def display_colors?
170
+ options[:color] != :off &&
171
+ (options[:force_color] || (STDOUT.isatty && ENV.has_key?("TERM")))
172
+ end
173
+
174
+ def display_result(event)
175
+ event_str = display_colors? ? colorize(event) : event.to_s
176
+ $stdout.puts event_str
177
+ end
178
+
140
179
  def display_results(results)
141
180
  if options[:json]
142
181
  $stdout.puts Papertrail::OkJson.encode(results.data)
143
182
  else
144
183
  results.events.each do |event|
145
- $stdout.puts event
184
+ display_result(event)
146
185
  end
147
186
  end
148
187
 
149
188
  $stdout.flush
150
189
  end
151
190
 
152
-
153
191
  def usage
154
192
  <<-EOF
155
193
 
156
194
  Usage:
157
- papertrail [-f] [-s system] [-g group] [-S search] [-d seconds] \
158
- [-c papertrail.yml] [-j] [--min-time time] [--max-time time] [query]
195
+ papertrail [-f] [--min-time time] [--max-time time] [-g group] [-S search]
196
+ [-s system] [-d seconds] [-c papertrail.yml] [-j] [--color attributes]
197
+ [--force-color] [query]
159
198
 
160
199
  Examples:
161
200
  papertrail -f
@@ -163,11 +202,11 @@ module Papertrail
163
202
  papertrail 1.2.3 Failure
164
203
  papertrail -s ns1 "connection refused"
165
204
  papertrail -f "(www OR db) (nginx OR pgsql) -accepted"
166
- papertrail -f -g Production "(nginx OR pgsql) -accepted"
167
- papertrail -g Production --min-time 'yesterday at noon' --max-time 'today at 4am'
168
-
169
- More: https://papertrailapp.com/
205
+ papertrail -f -g Production --color all "(nginx OR pgsql) -accepted"
206
+ papertrail --min-time 'yesterday at noon' --max-time 'today at 4am' -g Production
170
207
 
208
+ More: https://github.com/papertrail/papertrail-cli
209
+ https://papertrailapp.com/
171
210
  EOF
172
211
  end
173
212
  end
@@ -0,0 +1,78 @@
1
+ require 'optparse'
2
+ require 'yaml'
3
+
4
+ require 'papertrail/cli_helpers'
5
+ require 'papertrail/connection'
6
+
7
+ module Papertrail
8
+ class CliLeaveGroup
9
+ include Papertrail::CliHelpers
10
+
11
+ def run
12
+ options = {
13
+ :configfile => nil,
14
+ :token => ENV['PAPERTRAIL_API_TOKEN'],
15
+ }
16
+
17
+ if configfile = find_configfile
18
+ configfile_options = load_configfile(configfile)
19
+ options.merge!(configfile_options)
20
+ end
21
+
22
+ OptionParser.new do |opts|
23
+ opts.banner = "papertrail-leave-group"
24
+
25
+ opts.on("-h", "--help", "Show usage") do |v|
26
+ puts opts
27
+ exit
28
+ end
29
+ opts.on("-c", "--configfile PATH", "Path to config (~/.papertrail.yml)") do |v|
30
+ options[:configfile] = File.expand_path(v)
31
+ end
32
+ opts.on("-s", "--system SYSTEM", "Name of system to add to group") do |v|
33
+ options[:system] = v
34
+ end
35
+ opts.on("-g", "--group GROUP", "Name of group to leave") do |v|
36
+ options[:group] = v
37
+ end
38
+
39
+ opts.separator usage
40
+ end.parse!
41
+
42
+ if options[:configfile]
43
+ configfile_options = load_configfile(options[:configfile])
44
+ options.merge!(configfile_options)
45
+ end
46
+
47
+ raise OptionParser::MissingArgument, 'system' if options[:system].nil?
48
+ raise OptionParser::MissingArgument, 'group' if options[:group].nil?
49
+
50
+ connection = Papertrail::Connection.new(options)
51
+
52
+ if connection.leave_group(options[:system], options[:group])
53
+ exit 0
54
+ end
55
+
56
+ exit 1
57
+ rescue OptionParser::ParseError => e
58
+ puts "Error: #{e}"
59
+ puts usage
60
+ exit 1
61
+ rescue Net::HTTPServerException => e
62
+ output_http_error(e)
63
+ exit 1
64
+ end
65
+
66
+ def usage
67
+ <<-EOF
68
+
69
+ Usage:
70
+ papertrail-leave-group [-s system] [-g group] [-c papertrail.yml]
71
+
72
+ Example:
73
+ papertrail-leave-group -s mymachine -g mygroup
74
+
75
+ EOF
76
+ end
77
+ end
78
+ end
@@ -119,6 +119,14 @@ module Papertrail
119
119
  end
120
120
  end
121
121
 
122
+ def leave_group(source_name, group_name)
123
+ source_id = find_id_for_source(source_name)
124
+ group_id = find_id_for_group(group_name)
125
+ if source_id && group_id
126
+ @connection.post("systems/#{source_id}/leave.json", :group_id => group_id)
127
+ end
128
+ end
129
+
122
130
  def register_source(name, *args)
123
131
  options = args.last.is_a?(Hash) ? args.pop.dup : {}
124
132
 
@@ -42,19 +42,48 @@ module Papertrail
42
42
  if params.size > 0
43
43
  path = "#{path}?#{build_nested_query(params)}"
44
44
  end
45
- on_complete(https.get(request_uri(path), @headers))
45
+ attempts = 0
46
+ begin
47
+ on_complete(https.get(request_uri(path), @headers))
48
+ rescue SystemCallError, Net::HTTPFatalError => e
49
+ sleep 5.0
50
+ attempts += 1
51
+ retry if (attempts < 3)
52
+ raise e
53
+ end
46
54
  end
47
55
 
48
56
  def put(path, params)
49
- on_complete(https.put(request_uri(path), build_nested_query(params), @headers))
57
+ attempts = 0
58
+ begin
59
+ on_complete(https.put(request_uri(path), build_nested_query(params), @headers))
60
+ rescue SystemCallError, Net::HTTPFatalError => e
61
+ attempts += 1
62
+ retry if (attempts < 3)
63
+ raise e
64
+ end
50
65
  end
51
66
 
52
67
  def post(path, params)
53
- on_complete(https.post(request_uri(path), build_nested_query(params), @headers))
68
+ attempts = 0
69
+ begin
70
+ on_complete(https.post(request_uri(path), build_nested_query(params), @headers))
71
+ rescue SystemCallError, Net::HTTPFatalError => e
72
+ attempts += 1
73
+ retry if (attempts < 3)
74
+ raise e
75
+ end
54
76
  end
55
77
 
56
78
  def delete(path)
57
- on_complete(https.delete(request_uri(path), @headers))
79
+ attempts = 0
80
+ begin
81
+ on_complete(https.delete(request_uri(path), @headers))
82
+ rescue SystemCallError, Net::HTTPFatalError => e
83
+ attempts += 1
84
+ retry if (attempts < 3)
85
+ raise e
86
+ end
58
87
  end
59
88
 
60
89
  private
@@ -13,8 +13,8 @@ Gem::Specification.new do |s|
13
13
  ## If your rubyforge_project name is different, then edit it and comment out
14
14
  ## the sub! line in the Rakefile
15
15
  s.name = 'papertrail'
16
- s.version = '0.9.12'
17
- s.date = '2015-01-23'
16
+ s.version = '0.9.13'
17
+ s.date = '2015-12-09'
18
18
  s.rubyforge_project = 'papertrail'
19
19
 
20
20
  ## Make sure your summary is short. The description may be as long
@@ -28,6 +28,7 @@ Gem::Specification.new do |s|
28
28
  s.authors = ['Papertrail']
29
29
  s.email = 'troy@sevenscale.com'
30
30
  s.homepage = 'http://github.com/papertrail/papertrail-cli'
31
+ s.license = 'MIT'
31
32
 
32
33
  ## This gets added to the $LOAD_PATH so that 'lib/NAME.rb' can be required as
33
34
  ## require 'NAME.rb' or'/lib/NAME/file.rb' can be as require 'NAME/file.rb'
@@ -38,7 +39,7 @@ Gem::Specification.new do |s|
38
39
  # s.extensions = %w[ext/extconf.rb]
39
40
 
40
41
  ## If your gem includes any executables, list them here.
41
- s.executables = ["papertrail", "papertrail-add-system", "papertrail-remove-system", "papertrail-add-group", "papertrail-join-group"]
42
+ s.executables = ["papertrail", "papertrail-add-system", "papertrail-remove-system", "papertrail-add-group", "papertrail-join-group", "papertrail-leave-group"]
42
43
  s.default_executable = 'papertrail'
43
44
 
44
45
  ## Specify any RDoc options here. You'll want to add your README and
@@ -49,11 +50,12 @@ Gem::Specification.new do |s|
49
50
 
50
51
  ## List your runtime dependencies here. Runtime dependencies are those
51
52
  ## that are needed for an end user to actually USE your code.
52
- s.add_dependency('chronic')
53
+ s.add_dependency('chronic', '~> 0.10')
54
+ s.add_dependency('ansi', '~> 1.5')
53
55
 
54
56
  ## List your development dependencies here. Development dependencies are
55
57
  ## those that are only needed during development
56
- s.add_development_dependency('rake')
58
+ s.add_development_dependency('rake', '~> 10.4')
57
59
 
58
60
  ## Leave this section as-is. It will be automatically generated from the
59
61
  ## contents of your Git repository via the gemspec task. DO NOT REMOVE
@@ -68,6 +70,7 @@ Gem::Specification.new do |s|
68
70
  bin/papertrail-add-group
69
71
  bin/papertrail-add-system
70
72
  bin/papertrail-join-group
73
+ bin/papertrail-leave-group
71
74
  bin/papertrail-remove-system
72
75
  examples/papertrail.yml.example
73
76
  lib/papertrail.rb
@@ -76,6 +79,7 @@ Gem::Specification.new do |s|
76
79
  lib/papertrail/cli_add_system.rb
77
80
  lib/papertrail/cli_helpers.rb
78
81
  lib/papertrail/cli_join_group.rb
82
+ lib/papertrail/cli_leave_group.rb
79
83
  lib/papertrail/cli_remove_system.rb
80
84
  lib/papertrail/connection.rb
81
85
  lib/papertrail/event.rb
metadata CHANGED
@@ -1,63 +1,71 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: papertrail
3
- version: !ruby/object:Gem::Version
4
- hash: 35
5
- prerelease:
6
- segments:
7
- - 0
8
- - 9
9
- - 12
10
- version: 0.9.12
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.9.13
11
5
  platform: ruby
12
- authors:
6
+ authors:
13
7
  - Papertrail
14
8
  autorequire:
15
9
  bindir: bin
16
10
  cert_chain: []
17
-
18
- date: 2015-01-23 00:00:00 Z
19
- dependencies:
20
- - !ruby/object:Gem::Dependency
11
+ date: 2015-12-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
21
14
  name: chronic
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '0.10'
20
+ type: :runtime
22
21
  prerelease: false
23
- requirement: &id001 !ruby/object:Gem::Requirement
24
- none: false
25
- requirements:
26
- - - ">="
27
- - !ruby/object:Gem::Version
28
- hash: 3
29
- segments:
30
- - 0
31
- version: "0"
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '0.10'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ansi
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.5'
32
34
  type: :runtime
33
- version_requirements: *id001
34
- - !ruby/object:Gem::Dependency
35
- name: rake
36
35
  prerelease: false
37
- requirement: &id002 !ruby/object:Gem::Requirement
38
- none: false
39
- requirements:
40
- - - ">="
41
- - !ruby/object:Gem::Version
42
- hash: 3
43
- segments:
44
- - 0
45
- version: "0"
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.5'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rake
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '10.4'
46
48
  type: :development
47
- version_requirements: *id002
48
- description: Command-line client for Papertrail hosted log management service. Tails and searches app server logs and system syslog. Supports Boolean search and works with grep and pipe output (Unix).
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '10.4'
55
+ description: Command-line client for Papertrail hosted log management service. Tails
56
+ and searches app server logs and system syslog. Supports Boolean search and works
57
+ with grep and pipe output (Unix).
49
58
  email: troy@sevenscale.com
50
- executables:
59
+ executables:
51
60
  - papertrail
52
61
  - papertrail-add-system
53
62
  - papertrail-remove-system
54
63
  - papertrail-add-group
55
64
  - papertrail-join-group
65
+ - papertrail-leave-group
56
66
  extensions: []
57
-
58
67
  extra_rdoc_files: []
59
-
60
- files:
68
+ files:
61
69
  - Gemfile
62
70
  - LICENSE
63
71
  - README.md
@@ -66,6 +74,7 @@ files:
66
74
  - bin/papertrail-add-group
67
75
  - bin/papertrail-add-system
68
76
  - bin/papertrail-join-group
77
+ - bin/papertrail-leave-group
69
78
  - bin/papertrail-remove-system
70
79
  - examples/papertrail.yml.example
71
80
  - lib/papertrail.rb
@@ -74,6 +83,7 @@ files:
74
83
  - lib/papertrail/cli_add_system.rb
75
84
  - lib/papertrail/cli_helpers.rb
76
85
  - lib/papertrail/cli_join_group.rb
86
+ - lib/papertrail/cli_leave_group.rb
77
87
  - lib/papertrail/cli_remove_system.rb
78
88
  - lib/papertrail/connection.rb
79
89
  - lib/papertrail/event.rb
@@ -83,37 +93,28 @@ files:
83
93
  - lib/papertrail/search_result.rb
84
94
  - papertrail.gemspec
85
95
  homepage: http://github.com/papertrail/papertrail-cli
86
- licenses: []
87
-
96
+ licenses:
97
+ - MIT
98
+ metadata: {}
88
99
  post_install_message:
89
- rdoc_options:
90
- - --charset=UTF-8
91
- require_paths:
100
+ rdoc_options:
101
+ - "--charset=UTF-8"
102
+ require_paths:
92
103
  - lib
93
- required_ruby_version: !ruby/object:Gem::Requirement
94
- none: false
95
- requirements:
104
+ required_ruby_version: !ruby/object:Gem::Requirement
105
+ requirements:
96
106
  - - ">="
97
- - !ruby/object:Gem::Version
98
- hash: 3
99
- segments:
100
- - 0
101
- version: "0"
102
- required_rubygems_version: !ruby/object:Gem::Requirement
103
- none: false
104
- requirements:
107
+ - !ruby/object:Gem::Version
108
+ version: '0'
109
+ required_rubygems_version: !ruby/object:Gem::Requirement
110
+ requirements:
105
111
  - - ">="
106
- - !ruby/object:Gem::Version
107
- hash: 3
108
- segments:
109
- - 0
110
- version: "0"
112
+ - !ruby/object:Gem::Version
113
+ version: '0'
111
114
  requirements: []
112
-
113
115
  rubyforge_project: papertrail
114
- rubygems_version: 1.8.24
116
+ rubygems_version: 2.4.5.1
115
117
  signing_key:
116
118
  specification_version: 2
117
119
  summary: Command-line client for Papertrail hosted log management service.
118
120
  test_files: []
119
-