lita-coffee 0.0.1
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 +7 -0
- data/.gitignore +17 -0
- data/Gemfile +3 -0
- data/LICENSE +19 -0
- data/README.md +44 -0
- data/Rakefile +6 -0
- data/lib/lita-coffee.rb +12 -0
- data/lib/lita/handlers/coffee.rb +206 -0
- data/lita-coffee.gemspec +25 -0
- data/locales/en.yml +4 -0
- data/spec/lita/handlers/coffee_spec.rb +73 -0
- data/spec/spec_helper.rb +14 -0
- data/templates/.gitkeep +0 -0
- metadata +172 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 64b6fd18a9681ae1c31cb6fdb0f752a566205c18
|
4
|
+
data.tar.gz: 951b84eec9c661714d019e08b78ee19c2cabe202
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e218834fae3471c72221e1b59982c865edb6a888610e1ad14cf70e31aad5a8822a4afcc91e5ed5dc8ea47c3a13718b0318993e7169eb2eabac4e788c75b67a3d
|
7
|
+
data.tar.gz: 12c67a729d5126d23e985885554568ed1e51ef54e873fce086ba1b38d8992dc41fa50cbc29038ee8cbce20e3295d33113e72839e0452b94cdf20c8a6228f48e4
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2015 COzero Pty Ltd
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
4
|
+
of this software and associated documentation files (the "Software"), to deal
|
5
|
+
in the Software without restriction, including without limitation the rights
|
6
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
7
|
+
copies of the Software, and to permit persons to whom the Software is
|
8
|
+
furnished to do so, subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in
|
11
|
+
all copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
15
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
16
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
17
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
18
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
|
19
|
+
THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,44 @@
|
|
1
|
+
# lita-coffee
|
2
|
+
|
3
|
+
Manage your office coffee orders with ease!
|
4
|
+
|
5
|
+
## Installation
|
6
|
+
|
7
|
+
Add lita-coffee to your Lita instance's Gemfile:
|
8
|
+
|
9
|
+
``` ruby
|
10
|
+
gem "lita-coffee"
|
11
|
+
```
|
12
|
+
|
13
|
+
## Configuration
|
14
|
+
|
15
|
+
Set the default settings in your lita_config.rb (if you like)
|
16
|
+
|
17
|
+
``` ruby
|
18
|
+
config.handlers.lita-coffee.default_group = "Cool Kids"
|
19
|
+
config.handlers.lita-coffee.default_coffee = "Single origin espresso"
|
20
|
+
```
|
21
|
+
|
22
|
+
## Usage
|
23
|
+
|
24
|
+
``` ruby
|
25
|
+
route(
|
26
|
+
/^\(coffee\)(\s+\-[bcdgist]?|\s+\+)?(.*)/i,
|
27
|
+
:coffee,
|
28
|
+
help: {
|
29
|
+
'(coffee)' => "List the (coffee) orders for your group",
|
30
|
+
'(coffee) -i' => "Display your (coffee) profile",
|
31
|
+
'(coffee) -s Colombian Filter' => "Set your (coffee) preference",
|
32
|
+
'(coffee) -g Cool Kids' => "Change your (coffee) group",
|
33
|
+
'(coffee) +' => "Order a (coffee)",
|
34
|
+
'(coffee) -c' => "Cancel your (coffee) order",
|
35
|
+
'(coffee) -b You owe me one!' => "Buy (coffee) for your group, clear the orders and send a message",
|
36
|
+
'(coffee) -t' => "Display (coffee) system settings",
|
37
|
+
'(coffee) -d' => "Delete you from the (coffee) system",
|
38
|
+
}
|
39
|
+
)
|
40
|
+
```
|
41
|
+
|
42
|
+
## License
|
43
|
+
|
44
|
+
[MIT](http://opensource.org/licenses/MIT)
|
data/Rakefile
ADDED
data/lib/lita-coffee.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'lita'
|
2
|
+
|
3
|
+
Lita.load_locales Dir[File.expand_path(
|
4
|
+
File.join("..", "..", "locales", "*.yml"), __FILE__
|
5
|
+
)]
|
6
|
+
|
7
|
+
require_relative "lita/handlers/coffee"
|
8
|
+
|
9
|
+
Lita::Handlers::Coffee.template_root File.expand_path(
|
10
|
+
File.join("..", "..", "templates"),
|
11
|
+
__FILE__
|
12
|
+
)
|
@@ -0,0 +1,206 @@
|
|
1
|
+
module Lita
|
2
|
+
module Handlers
|
3
|
+
class Coffee < Handler
|
4
|
+
# TODO: money - probably in a separate handler and maybe it already exists??
|
5
|
+
|
6
|
+
# Dependencies
|
7
|
+
require 'json'
|
8
|
+
|
9
|
+
# Configuration
|
10
|
+
# default_group - the name of the default group in which users will order a coffee
|
11
|
+
# default_coffee - the coffee we will order if users don't specify what they would like
|
12
|
+
config :default_group, type: String, default: 'coffee-lovers'
|
13
|
+
config :default_coffee, type: String, default: 'Single origin espresso'
|
14
|
+
on :loaded, :set_constants
|
15
|
+
|
16
|
+
def set_constants(payload)
|
17
|
+
@@DEFAULT_GROUP = config.default_group
|
18
|
+
@@DEFAULT_COFFEE = config.default_coffee
|
19
|
+
end
|
20
|
+
|
21
|
+
route(
|
22
|
+
/^\(coffee\)(\s+\-[bcdgist]?|\s+\+)?(.*)/i,
|
23
|
+
:coffee,
|
24
|
+
help: {
|
25
|
+
'(coffee)' => "List the (coffee) orders for your group",
|
26
|
+
'(coffee) -i' => "Display your (coffee) profile",
|
27
|
+
'(coffee) -s Colombian Filter' => "Set your (coffee) preference",
|
28
|
+
'(coffee) -g Cool Kids' => "Change your (coffee) group",
|
29
|
+
'(coffee) +' => "Order a (coffee)",
|
30
|
+
'(coffee) -c' => "Cancel your (coffee) order",
|
31
|
+
'(coffee) -b You owe me one!' => "Buy (coffee) for your group, clear the orders and send a message",
|
32
|
+
'(coffee) -t' => "Display (coffee) system settings",
|
33
|
+
'(coffee) -d' => "Delete you from the (coffee) system",
|
34
|
+
}
|
35
|
+
)
|
36
|
+
|
37
|
+
def coffee(response)
|
38
|
+
get_settings = response.matches[0][0].strip == "-i" rescue false
|
39
|
+
set_coffee = response.matches[0][0].strip == "-s" rescue false
|
40
|
+
change_group = response.matches[0][0].strip == "-g" rescue false
|
41
|
+
order = response.matches[0][0].strip == "+" rescue false
|
42
|
+
cancel = response.matches[0][0].strip == "-c" rescue false
|
43
|
+
buy_coffee = response.matches[0][0].strip == "-b" rescue false
|
44
|
+
system_settings = response.matches[0][0].strip == "-t" rescue false
|
45
|
+
delete_me = response.matches[0][0].strip == "-d" rescue false
|
46
|
+
|
47
|
+
preference = response.matches[0][1].strip rescue nil
|
48
|
+
|
49
|
+
my_user = response.user.name
|
50
|
+
group = get_group(my_user)
|
51
|
+
|
52
|
+
# Setup new users
|
53
|
+
response.reply("Welcome to (coffee)! You have been setup in the #{@@DEFAULT_GROUP} group with an order of #{@@DEFAULT_COFFEE}. Type help (coffee) for help.") if initialize_user_redis(my_user) == :new_user
|
54
|
+
|
55
|
+
# Retrieve my preference
|
56
|
+
if get_settings
|
57
|
+
settings = get_settings(my_user)
|
58
|
+
response.reply("Your current (coffee) is #{settings['coffee']}. You are in the #{settings['group']} group.")
|
59
|
+
# Set my coffee
|
60
|
+
elsif set_coffee
|
61
|
+
result = set_coffee(my_user,preference)
|
62
|
+
if result == "OK"
|
63
|
+
response.reply("(coffee) set to #{preference}")
|
64
|
+
else
|
65
|
+
response.reply("(sadpanda) Failed to set your (coffee) for some reason: #{result.inspect}")
|
66
|
+
end
|
67
|
+
# Delete me altogether
|
68
|
+
elsif delete_me
|
69
|
+
result = delete_user(my_user)
|
70
|
+
if result == 1
|
71
|
+
response.reply("You have been deleted from (coffee)")
|
72
|
+
else
|
73
|
+
response.reply("(sadpanda) Failed to delete you from (coffee) for some reason: #{result.inspect}")
|
74
|
+
end
|
75
|
+
# Change my coffee group
|
76
|
+
elsif change_group
|
77
|
+
result = set_coffee_group(my_user,preference)
|
78
|
+
if result == "OK"
|
79
|
+
response.reply("(coffee) group set to #{preference}")
|
80
|
+
else
|
81
|
+
response.reply("(sadpanda) Failed to set your (coffee) group for some reason: #{result.inspect}")
|
82
|
+
end
|
83
|
+
# Order a coffee
|
84
|
+
elsif order
|
85
|
+
result = order_coffee(my_user)
|
86
|
+
if result == "OK"
|
87
|
+
response.reply("Ordered you a (coffee)")
|
88
|
+
else
|
89
|
+
response.reply("(sadpanda) Failed to order your (coffee) for some reason: #{result.inspect}")
|
90
|
+
end
|
91
|
+
# Cancel a coffee
|
92
|
+
elsif cancel
|
93
|
+
result = cancel_coffee(my_user)
|
94
|
+
if result == "OK"
|
95
|
+
response.reply("Cancelled your (coffee)")
|
96
|
+
else
|
97
|
+
response.reply("(sadpanda) Failed to cancel your (coffee) for some reason: #{result.inspect}")
|
98
|
+
end
|
99
|
+
# Buy the coffees and clear the orders
|
100
|
+
elsif buy_coffee
|
101
|
+
response.reply("Thanks for ordering the (coffee) for #{group}!\n--")
|
102
|
+
get_orders(group).each do |order|
|
103
|
+
response.reply("#{order}: #{get_coffee(order)}")
|
104
|
+
send_coffee_message(order,my_user,preference) unless order == my_user
|
105
|
+
end
|
106
|
+
result = clear_orders(group)
|
107
|
+
if result == "OK"
|
108
|
+
response.reply("Cleared all (coffee) orders for #{group}")
|
109
|
+
else
|
110
|
+
response.reply("(sadpanda) Failed to clear the (coffee) orders for some reason: #{result.inspect}")
|
111
|
+
end
|
112
|
+
# tests
|
113
|
+
elsif system_settings
|
114
|
+
response.reply("Default coffee: #{@@DEFAULT_COFFEE}, Default group: #{@@DEFAULT_GROUP}")
|
115
|
+
# List the orders
|
116
|
+
else
|
117
|
+
response.reply("Current (coffee) orders for #{group}:-\n--")
|
118
|
+
get_orders(group).each do |order|
|
119
|
+
response.reply("#{order}: #{get_coffee(order)}")
|
120
|
+
end
|
121
|
+
end
|
122
|
+
|
123
|
+
end
|
124
|
+
|
125
|
+
#######
|
126
|
+
private
|
127
|
+
#######
|
128
|
+
|
129
|
+
def initialize_user_redis(user)
|
130
|
+
if redis.get("settings-#{user}").nil?
|
131
|
+
redis.set("settings-#{user}",{group: @@DEFAULT_GROUP, coffee: @@DEFAULT_COFFEE}.to_json)
|
132
|
+
return :new_user
|
133
|
+
else
|
134
|
+
return :existing_user
|
135
|
+
end
|
136
|
+
end
|
137
|
+
|
138
|
+
def delete_user(user)
|
139
|
+
redis.del("settings-#{user}")
|
140
|
+
end
|
141
|
+
|
142
|
+
def get_settings(user)
|
143
|
+
JSON.parse(redis.get("settings-#{user}")) rescue {group: @@DEFAULT_GROUP, coffee: @@DEFAULT_COFFEE}
|
144
|
+
end
|
145
|
+
|
146
|
+
def get_orders(group)
|
147
|
+
JSON.parse(redis.get("#{group}-orders")) rescue []
|
148
|
+
end
|
149
|
+
|
150
|
+
def get_coffee(user)
|
151
|
+
JSON.parse(redis.get("settings-#{user}"))['coffee'] rescue @@DEFAULT_COFFEE
|
152
|
+
end
|
153
|
+
|
154
|
+
def get_group(user)
|
155
|
+
JSON.parse(redis.get("settings-#{user}"))['group'] rescue @@DEFAULT_GROUP
|
156
|
+
end
|
157
|
+
|
158
|
+
def set_coffee(user,coffee)
|
159
|
+
my_settings = get_settings(user)
|
160
|
+
my_settings[:coffee] = coffee
|
161
|
+
redis.set("settings-#{user}",my_settings.to_json)
|
162
|
+
end
|
163
|
+
|
164
|
+
def set_coffee_group(user,group)
|
165
|
+
my_settings = get_settings(user)
|
166
|
+
my_settings[:group] = group
|
167
|
+
redis.set("settings-#{user}",my_settings.to_json)
|
168
|
+
end
|
169
|
+
|
170
|
+
def order_coffee(user)
|
171
|
+
group = get_group(user)
|
172
|
+
Lita.logger.debug("Group: #{group}")
|
173
|
+
orders = get_orders(group)
|
174
|
+
Lita.logger.debug("Orders: #{orders}")
|
175
|
+
orders << user
|
176
|
+
orders.uniq!
|
177
|
+
Lita.logger.debug("New orders: #{orders}")
|
178
|
+
redis.set("#{group}-orders",orders.to_json)
|
179
|
+
end
|
180
|
+
|
181
|
+
def cancel_coffee(user)
|
182
|
+
group = get_group(user)
|
183
|
+
orders = get_orders(group)
|
184
|
+
orders.delete(user)
|
185
|
+
redis.set("#{group}-orders",orders.to_json)
|
186
|
+
end
|
187
|
+
|
188
|
+
def clear_orders(group)
|
189
|
+
redis.set("#{group}-orders",[])
|
190
|
+
end
|
191
|
+
|
192
|
+
def send_coffee_message(user,purchaser,message)
|
193
|
+
myuser = Lita::User.find_by_name(user)
|
194
|
+
msg = Lita::Message.new(robot,'',Lita::Source.new(user: myuser))
|
195
|
+
msg.reply("#{purchaser} has bought you a (coffee)!")
|
196
|
+
msg.reply(message) # what happens if message is nil?
|
197
|
+
rescue => e
|
198
|
+
Lita.logger.error("Coffee#send_coffee_message raised #{e.class}: #{e.message}\n#{e.backtrace}")
|
199
|
+
end
|
200
|
+
|
201
|
+
|
202
|
+
end
|
203
|
+
|
204
|
+
Lita.register_handler(Coffee)
|
205
|
+
end
|
206
|
+
end
|
data/lita-coffee.gemspec
ADDED
@@ -0,0 +1,25 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = 'lita-coffee'
|
3
|
+
spec.version = '0.0.1'
|
4
|
+
spec.authors = ['Stuart Auld']
|
5
|
+
spec.email = ['sja@marsupialmusic.net']
|
6
|
+
spec.description = %q{Lita integration to manage office coffee orders}
|
7
|
+
spec.summary = %q{Coffee order managemnet, made easy!}
|
8
|
+
spec.homepage = 'https://github.com/sjauld/lita-coffee'
|
9
|
+
spec.license = 'MIT'
|
10
|
+
spec.metadata = { 'lita_plugin_type' => 'handler' }
|
11
|
+
|
12
|
+
spec.files = `git ls-files`.split($/)
|
13
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
14
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
15
|
+
spec.require_paths = ['lib']
|
16
|
+
|
17
|
+
spec.add_runtime_dependency 'lita', '>= 4.2'
|
18
|
+
spec.add_runtime_dependency 'json'
|
19
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
20
|
+
spec.add_development_dependency 'rake'
|
21
|
+
spec.add_development_dependency 'rack-test'
|
22
|
+
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
23
|
+
spec.add_development_dependency 'simplecov'
|
24
|
+
spec.add_development_dependency 'coveralls'
|
25
|
+
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1,73 @@
|
|
1
|
+
require "spec_helper"
|
2
|
+
#TODO: write this stuff
|
3
|
+
|
4
|
+
describe Lita::Handlers::Coffee, lita_handler: true do
|
5
|
+
|
6
|
+
it { is_expected.to route('(coffee).to(:coffee)')}
|
7
|
+
|
8
|
+
describe '#coffee' do
|
9
|
+
before{robot.trigger(:loaded)}
|
10
|
+
|
11
|
+
it 'sets up a user if they do not exist already' do
|
12
|
+
send_message("(coffee)")
|
13
|
+
expect(replies.first).to start_with("Welcome to (coffee)!") #TODO: test for defaults here?
|
14
|
+
end
|
15
|
+
|
16
|
+
it 'lists the current coffee orders if no options received' do
|
17
|
+
send_message("(coffee)")
|
18
|
+
expect(replies.last).to start_with("Current (coffee) orders")
|
19
|
+
end
|
20
|
+
|
21
|
+
it 'orders me a coffee if I ask it!' do
|
22
|
+
send_message("(coffee) +")
|
23
|
+
expect(replies.last).to eq("Ordered you a (coffee)") #TODO: test that it has been added to the queue?
|
24
|
+
end
|
25
|
+
|
26
|
+
it 'displays my profile settings' do
|
27
|
+
send_message("(coffee) -i")
|
28
|
+
expect(replies.last).to start_with("Your current (coffee) is")
|
29
|
+
end
|
30
|
+
|
31
|
+
it 'sets my coffee preference' do
|
32
|
+
send_message("(coffee) -s decaf soy cappuccino")
|
33
|
+
expect(replies.last).to eq("(coffee) set to decaf soy cappuccino")
|
34
|
+
send_message("(coffee) -i")
|
35
|
+
expect(replies.last).to start_with("Your current (coffee) is decaf soy cappuccino")
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'changes my coffee group' do
|
39
|
+
send_message("(coffee) -g testing team")
|
40
|
+
expect(replies.last).to eq("(coffee) group set to testing team")
|
41
|
+
send_message("(coffee) -i")
|
42
|
+
expect(replies.last).to end_with("You are in the testing team group.")
|
43
|
+
end
|
44
|
+
|
45
|
+
it 'cancels my order' do
|
46
|
+
send_message("(coffee) -c")
|
47
|
+
expect(replies.last).to eq("Cancelled your (coffee)") #TODO: check that my name has been removed from the queue
|
48
|
+
end
|
49
|
+
|
50
|
+
it 'deletes me from the system' do
|
51
|
+
send_message("(coffee) -d")
|
52
|
+
expect(replies.last).to eq("You have been deleted from (coffee)")
|
53
|
+
end
|
54
|
+
|
55
|
+
it 'displays default settings' do
|
56
|
+
send_message("(coffee) -t")
|
57
|
+
expect(replies.last).to start_with("Default coffee:")
|
58
|
+
end
|
59
|
+
|
60
|
+
it 'buys the coffees and clears the queue' do
|
61
|
+
send_message("(coffee) +")
|
62
|
+
send_message("(coffee) -b")
|
63
|
+
expect(replies.last).to start_with("Cleared all (coffee) orders")
|
64
|
+
send_message("(coffee)")
|
65
|
+
expect(replies.last).to end_with("--")
|
66
|
+
end
|
67
|
+
|
68
|
+
|
69
|
+
|
70
|
+
|
71
|
+
|
72
|
+
end
|
73
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
require "simplecov"
|
2
|
+
require "coveralls"
|
3
|
+
SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter[
|
4
|
+
SimpleCov::Formatter::HTMLFormatter,
|
5
|
+
Coveralls::SimpleCov::Formatter
|
6
|
+
]
|
7
|
+
SimpleCov.start { add_filter "/spec/" }
|
8
|
+
|
9
|
+
require "lita-coffee"
|
10
|
+
require "lita/rspec"
|
11
|
+
|
12
|
+
# A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
|
13
|
+
# was generated with Lita 4, the compatibility mode should be left disabled.
|
14
|
+
Lita.version_3_compatibility_mode = false
|
data/templates/.gitkeep
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,172 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-coffee
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Stuart Auld
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-07-20 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: lita
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '4.2'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.2'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: json
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: bundler
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.3'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.3'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: rake
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - ">="
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: '0'
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - ">="
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: '0'
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: rack-test
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - ">="
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '0'
|
76
|
+
type: :development
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - ">="
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: '0'
|
83
|
+
- !ruby/object:Gem::Dependency
|
84
|
+
name: rspec
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - ">="
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: 3.0.0
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - ">="
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: 3.0.0
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: simplecov
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - ">="
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: '0'
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - ">="
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: '0'
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: coveralls
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - ">="
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: '0'
|
118
|
+
type: :development
|
119
|
+
prerelease: false
|
120
|
+
version_requirements: !ruby/object:Gem::Requirement
|
121
|
+
requirements:
|
122
|
+
- - ">="
|
123
|
+
- !ruby/object:Gem::Version
|
124
|
+
version: '0'
|
125
|
+
description: Lita integration to manage office coffee orders
|
126
|
+
email:
|
127
|
+
- sja@marsupialmusic.net
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- ".gitignore"
|
133
|
+
- Gemfile
|
134
|
+
- LICENSE
|
135
|
+
- README.md
|
136
|
+
- Rakefile
|
137
|
+
- lib/lita-coffee.rb
|
138
|
+
- lib/lita/handlers/coffee.rb
|
139
|
+
- lita-coffee.gemspec
|
140
|
+
- locales/en.yml
|
141
|
+
- spec/lita/handlers/coffee_spec.rb
|
142
|
+
- spec/spec_helper.rb
|
143
|
+
- templates/.gitkeep
|
144
|
+
homepage: https://github.com/sjauld/lita-coffee
|
145
|
+
licenses:
|
146
|
+
- MIT
|
147
|
+
metadata:
|
148
|
+
lita_plugin_type: handler
|
149
|
+
post_install_message:
|
150
|
+
rdoc_options: []
|
151
|
+
require_paths:
|
152
|
+
- lib
|
153
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
154
|
+
requirements:
|
155
|
+
- - ">="
|
156
|
+
- !ruby/object:Gem::Version
|
157
|
+
version: '0'
|
158
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
159
|
+
requirements:
|
160
|
+
- - ">="
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
requirements: []
|
164
|
+
rubyforge_project:
|
165
|
+
rubygems_version: 2.4.6
|
166
|
+
signing_key:
|
167
|
+
specification_version: 4
|
168
|
+
summary: Coffee order managemnet, made easy!
|
169
|
+
test_files:
|
170
|
+
- spec/lita/handlers/coffee_spec.rb
|
171
|
+
- spec/spec_helper.rb
|
172
|
+
has_rdoc:
|