whoopsy 0.0.1 → 0.1.0
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.
- data/README.md +51 -2
- data/bin/whoopsy +5 -0
- data/bin/whoopsy.rb +5 -0
- data/lib/whoopsy/config.rb +74 -0
- data/lib/whoopsy/version.rb +9 -2
- data/lib/whoopsy.rb +68 -9
- data/spec/cli_spec.rb +23 -6
- metadata +40 -4
- data/LICENSE +0 -20
data/README.md
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
# Whoopsy
|
2
2
|
|
3
|
-
|
3
|
+
Whoppsy provides an awesome CLI Interface to Whoops Logger (http://www.whoopsapp.com/whoops-logger/).
|
4
|
+
|
5
|
+
Consult the whoopsy_logger gem http://www.whoopsapp.com/whoops-logger/) for more detailed information. This Gem is a simple wrapper for that library.
|
4
6
|
|
5
7
|
## Installation
|
6
8
|
|
@@ -18,8 +20,55 @@ Or install it yourself as:
|
|
18
20
|
|
19
21
|
## Usage
|
20
22
|
|
21
|
-
|
23
|
+
Make sure you have installed your whoops_server first! http://www.whoopsapp.com/whoops-server/
|
24
|
+
|
25
|
+
Once installed the minimum options to connect to the whoops_server are:
|
26
|
+
|
27
|
+
* --host fqdn
|
28
|
+
* --port 80
|
29
|
+
|
30
|
+
These options can be specified in a configuration file or on the command line. The configuration files supported in order of priority are:
|
31
|
+
|
32
|
+
* /etc/whoopsy.yml
|
33
|
+
* $HOME/.whoopsy.yml
|
34
|
+
* $WHOOPSY_CONFIG (full path to file)
|
35
|
+
|
36
|
+
The following connection parameters are supported:
|
37
|
+
|
38
|
+
* --host
|
39
|
+
* --http_open_timeout
|
40
|
+
* --http_read_timeout
|
41
|
+
* --port
|
42
|
+
* --protocol
|
43
|
+
* --proxy_host
|
44
|
+
* --proxy_pass
|
45
|
+
* --proxy_port
|
46
|
+
* --proxy_user
|
47
|
+
* --secure
|
48
|
+
|
49
|
+
(These options come directly from the whoopsy_logger gem http://www.whoopsapp.com/whoops-logger/)
|
50
|
+
|
51
|
+
A sample config file might look like:
|
52
|
+
```yaml
|
53
|
+
:host: localhost
|
54
|
+
:port: 3000
|
55
|
+
```
|
56
|
+
|
57
|
+
Note that the command line options will override any options specified in the configuration files.
|
58
|
+
|
59
|
+
You must specify the additional required paramters to send a message to the whoops_server:
|
60
|
+
|
61
|
+
* --event-type
|
62
|
+
* --service
|
63
|
+
* --environment
|
64
|
+
* --message
|
65
|
+
* --event-group-identifier
|
66
|
+
|
67
|
+
Here is an example command line:
|
22
68
|
|
69
|
+
```bash
|
70
|
+
whoopsy --host whoops.example.com --port 80 --event-type "warning" --service "my script" --environment "development" --message "working ok today" --event-group-identifier "group7"
|
71
|
+
```
|
23
72
|
## Contributing
|
24
73
|
|
25
74
|
1. Fork it
|
data/bin/whoopsy
ADDED
data/bin/whoopsy.rb
ADDED
@@ -0,0 +1,74 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'logger'
|
3
|
+
|
4
|
+
module Whoopsy
|
5
|
+
CONFIG_OPTIONS = [:host,
|
6
|
+
:http_open_timeout,
|
7
|
+
:http_read_timeout,
|
8
|
+
:port,
|
9
|
+
:protocol,
|
10
|
+
:proxy_host,
|
11
|
+
:proxy_pass,
|
12
|
+
:proxy_port,
|
13
|
+
:proxy_user,
|
14
|
+
:secure,
|
15
|
+
:event_type,
|
16
|
+
:service,
|
17
|
+
:environment,
|
18
|
+
:message,
|
19
|
+
:event_group_identifier,
|
20
|
+
:details]
|
21
|
+
|
22
|
+
class Config
|
23
|
+
|
24
|
+
CONFIG_OPTIONS.each do |var|
|
25
|
+
class_eval { attr_accessor var }
|
26
|
+
end
|
27
|
+
|
28
|
+
def initialize
|
29
|
+
|
30
|
+
@config = {}
|
31
|
+
|
32
|
+
@file_name = 'whoopsy.yml'
|
33
|
+
@global_config_file = "/etc/#{@file_name}"
|
34
|
+
@local_config_file = "#{File.join(ENV['HOME'], ".#{@file_name}")}"
|
35
|
+
@environment_file = ENV['WHOOPSY_CONFIG']
|
36
|
+
|
37
|
+
# Load in order of priority
|
38
|
+
load_file @global_config_file
|
39
|
+
load_file @local_config_file
|
40
|
+
load_file @environment_file if @environment_file
|
41
|
+
|
42
|
+
CONFIG_OPTIONS.each do |var|
|
43
|
+
eval("self.#{var} = \"#{@config[var]}\"")
|
44
|
+
end
|
45
|
+
|
46
|
+
end
|
47
|
+
|
48
|
+
# Return a hash of config options for the whoops_logger, making sure the "type" is correct
|
49
|
+
def config_hash
|
50
|
+
h = {}
|
51
|
+
|
52
|
+
[:host, :protocol, :proxy_host, :proxy_pass, :proxy_port, :proxy_user, :secure].each do |var|
|
53
|
+
eval("h[:#{var}] = @#{var} unless @#{var}.empty?")
|
54
|
+
end
|
55
|
+
|
56
|
+
[:http_open_timeout, :http_read_timeout, :port].each do |var|
|
57
|
+
eval("h[:#{var}] = @#{var}.to_i if @#{var}.to_i > 0")
|
58
|
+
end
|
59
|
+
|
60
|
+
h
|
61
|
+
end
|
62
|
+
|
63
|
+
private
|
64
|
+
|
65
|
+
def load_file(file_name)
|
66
|
+
begin
|
67
|
+
@config.merge! YAML::load_file(file_name)
|
68
|
+
rescue Errno::ENOENT
|
69
|
+
$stderr.puts "WARNING: #{file_name} does not exist"
|
70
|
+
end
|
71
|
+
end
|
72
|
+
|
73
|
+
end
|
74
|
+
end
|
data/lib/whoopsy/version.rb
CHANGED
@@ -1,3 +1,10 @@
|
|
1
1
|
module Whoopsy
|
2
|
-
VERSION =
|
3
|
-
|
2
|
+
VERSION = '0.1.0'
|
3
|
+
AUTHORS = ['Jon Gillies']
|
4
|
+
EMAIL = %w(supercoder@gmail.com)
|
5
|
+
DESCRIPTION = %q{Log to Whoops Logger in your scripts'}
|
6
|
+
SUMMARY = %q{Awesome CLI Interface to Whoops Logger (http://www.whoopsapp.com/whoops-logger/)}
|
7
|
+
HOMEPAGE = 'https://github.com/jongillies/whoopsy'
|
8
|
+
VERSION_BANNER = "#{self.name} #{self::VERSION} #{self::SUMMARY} (c) 2013 #{self::AUTHORS.join(', ')}"
|
9
|
+
HELP_TEXT = "Use this program to send messages to your Whoops logger.\n\nUsage:"
|
10
|
+
end
|
data/lib/whoopsy.rb
CHANGED
@@ -1,21 +1,80 @@
|
|
1
1
|
require 'whoopsy/version'
|
2
|
+
require 'whoopsy/config'
|
2
3
|
require 'trollop'
|
3
|
-
require '
|
4
|
+
require 'whoops_logger'
|
4
5
|
|
5
6
|
module Whoopsy
|
6
|
-
|
7
|
-
|
8
|
-
|
7
|
+
|
8
|
+
REQUIRED_ARGS = [:host, :port, :event_type, :service, :environment, :event_group_identifier]
|
9
|
+
|
10
|
+
class Logger
|
11
|
+
|
12
|
+
def initialize(args={})
|
13
|
+
|
9
14
|
opts = Trollop::options(args) do
|
10
|
-
|
11
|
-
|
15
|
+
|
16
|
+
banner "#{Whoopsy::VERSION_BANNER}\n\n#{Whoopsy::HELP_TEXT}"
|
17
|
+
version Whoopsy::VERSION_BANNER
|
12
18
|
opt :verbose, 'Verbose output.', short: 'v'
|
13
19
|
opt :debug, 'Display additional debugging information.'
|
20
|
+
|
21
|
+
opt :host, 'Whoops Logger hostname', type: String
|
22
|
+
opt :http_open_timeout, 'HTTP open timeout', type: Integer
|
23
|
+
opt :http_read_timeout, 'HTTP read timeout', type: Integer
|
24
|
+
opt :port, 'Whoops Logger port', type: Integer
|
25
|
+
opt :protocol, 'Whoops Logger Protocol', type: String
|
26
|
+
opt :proxy_host, 'Proxy Host', type: String
|
27
|
+
opt :proxy_pass, 'Proxy Password', type: String
|
28
|
+
opt :proxy_port, 'Proxy Port', type: Integer
|
29
|
+
opt :proxy_user, 'Proxy Username', type: String
|
30
|
+
opt :secure, 'Secure?'
|
31
|
+
|
32
|
+
opt :event_type, 'your_event_type', type: String
|
33
|
+
opt :service, 'my_service_name', type: String
|
34
|
+
opt :environment, 'development', type: String
|
35
|
+
opt :message, 'String to Show in Whoops Event List', type: String
|
36
|
+
opt :event_group_identifier, 'String used to assign related events to a group', type: String
|
37
|
+
opt :details, 'A string, hash, or array of arbitrary data', type: String
|
38
|
+
|
39
|
+
end
|
40
|
+
|
41
|
+
@config = Whoopsy::Config.new
|
42
|
+
|
43
|
+
# Set the @config attributes based on the opts hash
|
44
|
+
Whoopsy::CONFIG_OPTIONS.each do |option|
|
45
|
+
eval("@config.#{option} = \"#{opts[option]}\"") if opts["#{option}_given".to_sym]
|
14
46
|
end
|
15
|
-
|
16
|
-
|
47
|
+
|
48
|
+
check_required_args
|
49
|
+
|
50
|
+
send_message
|
51
|
+
end
|
52
|
+
|
53
|
+
private
|
54
|
+
|
55
|
+
def send_message
|
56
|
+
|
57
|
+
WhoopsLogger.config.set(@config.config_hash)
|
58
|
+
|
59
|
+
WhoopsLogger.log('default::basic', {
|
60
|
+
event_type: @config.event_type,
|
61
|
+
service: @config.service,
|
62
|
+
environment: @config.environment,
|
63
|
+
message: @config.message,
|
64
|
+
event_group_identifier: @config.message,
|
65
|
+
details: @config.details
|
66
|
+
})
|
67
|
+
|
68
|
+
end
|
69
|
+
|
70
|
+
def check_required_args
|
71
|
+
Whoopsy::REQUIRED_ARGS.each do |arg|
|
72
|
+
value = eval("@config.#{arg}.to_s.empty?") # This will render a string, if value nil will render ""
|
73
|
+
Trollop::die "Must have the following parameters: [#{Whoopsy::REQUIRED_ARGS.join(', ')}], #{arg} is missing." if value
|
17
74
|
end
|
18
|
-
opts
|
19
75
|
end
|
76
|
+
|
20
77
|
end
|
21
78
|
end
|
79
|
+
|
80
|
+
|
data/spec/cli_spec.rb
CHANGED
@@ -4,12 +4,29 @@ require 'shellwords'
|
|
4
4
|
require 'yaml'
|
5
5
|
|
6
6
|
describe 'Different Command Line Options' do
|
7
|
+
|
7
8
|
it 'should fail with no options' do
|
8
|
-
expect { Whoopsy::
|
9
|
+
expect { Whoopsy::Logger.new({}) }.to raise_error
|
9
10
|
end
|
10
|
-
|
11
|
-
it 'should succeed with
|
12
|
-
args = 'my-
|
13
|
-
expect { Whoopsy::
|
11
|
+
|
12
|
+
it 'should succeed with required arguments' do
|
13
|
+
args = "--event-type 'warning' --service 'my script' --environment 'development' --message 'working ok today' --event-group-identifier 'whats this'"
|
14
|
+
expect { Whoopsy::Logger.new(args.shellsplit) }.not_to raise_error
|
14
15
|
end
|
15
|
-
|
16
|
+
|
17
|
+
it 'should fail missing --environment' do
|
18
|
+
args = "--event-type 'warning' --service 'my script' --message 'working ok today' --event-group-identifier 'whats this'"
|
19
|
+
expect { Whoopsy::Logger.new(args.shellsplit) }.to raise_error
|
20
|
+
end
|
21
|
+
|
22
|
+
it 'should spit out help' do
|
23
|
+
args = '--help'
|
24
|
+
expect { Whoopsy::Logger.new(args.shellsplit) }.to raise_error
|
25
|
+
end
|
26
|
+
|
27
|
+
it 'should spit out version' do
|
28
|
+
args = '--version'
|
29
|
+
expect { Whoopsy::Logger.new(args.shellsplit) }.to raise_error
|
30
|
+
end
|
31
|
+
|
32
|
+
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: whoopsy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2013-07-
|
12
|
+
date: 2013-07-31 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
@@ -27,6 +27,22 @@ dependencies:
|
|
27
27
|
- - ! '>='
|
28
28
|
- !ruby/object:Gem::Version
|
29
29
|
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: ruby-lint
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :development
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: trollop
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -43,21 +59,41 @@ dependencies:
|
|
43
59
|
- - ! '>='
|
44
60
|
- !ruby/object:Gem::Version
|
45
61
|
version: '0'
|
62
|
+
- !ruby/object:Gem::Dependency
|
63
|
+
name: whoops_logger
|
64
|
+
requirement: !ruby/object:Gem::Requirement
|
65
|
+
none: false
|
66
|
+
requirements:
|
67
|
+
- - ! '>='
|
68
|
+
- !ruby/object:Gem::Version
|
69
|
+
version: '0'
|
70
|
+
type: :runtime
|
71
|
+
prerelease: false
|
72
|
+
version_requirements: !ruby/object:Gem::Requirement
|
73
|
+
none: false
|
74
|
+
requirements:
|
75
|
+
- - ! '>='
|
76
|
+
- !ruby/object:Gem::Version
|
77
|
+
version: '0'
|
46
78
|
description: Log to Whoops Logger in your scripts'
|
47
79
|
email:
|
48
80
|
- supercoder@gmail.com
|
49
|
-
executables:
|
81
|
+
executables:
|
82
|
+
- whoopsy
|
83
|
+
- whoopsy.rb
|
50
84
|
extensions: []
|
51
85
|
extra_rdoc_files: []
|
52
86
|
files:
|
53
87
|
- Rakefile
|
54
88
|
- Gemfile
|
89
|
+
- bin/whoopsy
|
90
|
+
- bin/whoopsy.rb
|
91
|
+
- lib/whoopsy/config.rb
|
55
92
|
- lib/whoopsy/version.rb
|
56
93
|
- lib/whoopsy.rb
|
57
94
|
- spec/cli_spec.rb
|
58
95
|
- spec/spec_helper.rb
|
59
96
|
- README.md
|
60
|
-
- LICENSE
|
61
97
|
- LICENSE.txt
|
62
98
|
homepage: https://github.com/jongillies/whoopsy
|
63
99
|
licenses: []
|
data/LICENSE
DELETED
@@ -1,20 +0,0 @@
|
|
1
|
-
The MIT License (MIT)
|
2
|
-
|
3
|
-
Copyright (c) 2013 jongillies
|
4
|
-
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
6
|
-
this software and associated documentation files (the "Software"), to deal in
|
7
|
-
the Software without restriction, including without limitation the rights to
|
8
|
-
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
9
|
-
the Software, and to permit persons to whom the Software is furnished to do so,
|
10
|
-
subject to the following conditions:
|
11
|
-
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
13
|
-
copies or substantial portions of the Software.
|
14
|
-
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
17
|
-
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
18
|
-
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
19
|
-
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
20
|
-
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|