lita-deploygate 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.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/.rubocop.yml +17 -0
- data/.travis.yml +8 -0
- data/CONTRIBUTING.md +9 -0
- data/Gemfile +3 -0
- data/LICENSE +19 -0
- data/README.md +57 -0
- data/Rakefile +8 -0
- data/lib/lita/handlers/deploygate.rb +136 -0
- data/lib/lita-deploygate.rb +9 -0
- data/lita-deploygate.gemspec +26 -0
- data/locales/en.yml +4 -0
- data/spec/files/members_add.json +1 -0
- data/spec/files/members_empty.json +1 -0
- data/spec/files/members_full.json +1 -0
- data/spec/files/members_remove.json +1 -0
- data/spec/lita/handlers/deploygate_spec.rb +141 -0
- data/spec/spec_helper.rb +10 -0
- metadata +181 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 477a51d7644b360d5cf0dbf25f20745ad017d3bd
|
4
|
+
data.tar.gz: 9a2003bfed68731cc1820ce86d2fd73deacb9bc1
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: a6b32a9bdcd887642b0a541e96953700a2f1390837ceef6dab775e0c3da1723b782550fea380d0dbeb0342d2fb5441108b1ad0827a1a7a6ddd10a05514e31613
|
7
|
+
data.tar.gz: 3bd7e9f3086be31a0428b8b7a6c6bd493b7c12c7b0ad3c7ce5885a16a34237933a660575e4747b84af842e1e7c8613c8ed8b6ac5eadae51fb507c0cde62b9348
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
data/CONTRIBUTING.md
ADDED
@@ -0,0 +1,9 @@
|
|
1
|
+
Pull requests are awesome! Pull requests with tests are even more awesome!
|
2
|
+
|
3
|
+
## Quick steps
|
4
|
+
|
5
|
+
1. Fork the repo.
|
6
|
+
2. Run the tests: `bundle && rake`
|
7
|
+
3. Add a test for your change. Only refactoring and documentation changes require no new tests. If you are adding functionality or fixing a bug, it needs a test!
|
8
|
+
4. Make the test pass.
|
9
|
+
5. Push to your fork and submit a pull request.
|
data/Gemfile
ADDED
data/LICENSE
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2014 Eric Sigler
|
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,57 @@
|
|
1
|
+
# lita-deploygate
|
2
|
+
|
3
|
+
[](https://travis-ci.org/esigler/lita-deploygate)
|
4
|
+
[](https://tldrlegal.com/license/mit-license)
|
5
|
+
[](https://rubygems.org/gems/lita-deploygate)
|
6
|
+
[](https://coveralls.io/r/esigler/lita-deploygate)
|
7
|
+
[](https://codeclimate.com/github/esigler/lita-deploygate)
|
8
|
+
[](https://gemnasium.com/esigler/lita-deploygate)
|
9
|
+
|
10
|
+
DeployGate (http://deploygate.com) handler for inviting and removing application collaborators.
|
11
|
+
|
12
|
+
## Installation
|
13
|
+
|
14
|
+
Add lita-deploygate to your Lita instance's Gemfile:
|
15
|
+
|
16
|
+
``` ruby
|
17
|
+
gem "lita-deploygate"
|
18
|
+
```
|
19
|
+
|
20
|
+
## Configuration
|
21
|
+
|
22
|
+
You'll need to get an API key, which you can find at the bottom of this page: https://deploygate.com/settings
|
23
|
+
|
24
|
+
Add the following variables to your Lita config file:
|
25
|
+
``` ruby
|
26
|
+
config.handlers.deploygate.user_name = '_user_name_here_'
|
27
|
+
config.handlers.deploygate.api_key = '_api_key_here_'
|
28
|
+
config.handlers.deploygate.app_names = { 'ios' => 'platforms/ios/apps/com.yourappname.YourAppName',
|
29
|
+
'android' => 'apps/com.yourappname.android',
|
30
|
+
'short_name' => 'path component' }
|
31
|
+
```
|
32
|
+
|
33
|
+
Apologies for the odd syntax, DeployGate has slightly different behavior for iOS vs. Android. You'll need to determine which URL path your app is using.
|
34
|
+
|
35
|
+
## Usage
|
36
|
+
|
37
|
+
### Inviting users
|
38
|
+
|
39
|
+
```
|
40
|
+
deploygate add <username or email> <short name> - Add <username or email> to <short name>
|
41
|
+
```
|
42
|
+
|
43
|
+
### Removing users
|
44
|
+
|
45
|
+
```
|
46
|
+
deploygate remove <username or email> <short name> - Remove <username or email> from <short name>
|
47
|
+
```
|
48
|
+
|
49
|
+
### Listing Users
|
50
|
+
|
51
|
+
```
|
52
|
+
deploygate list <short name> - List all users associated with <short name>
|
53
|
+
```
|
54
|
+
|
55
|
+
## License
|
56
|
+
|
57
|
+
[MIT](http://opensource.org/licenses/MIT)
|
data/Rakefile
ADDED
@@ -0,0 +1,136 @@
|
|
1
|
+
module Lita
|
2
|
+
module Handlers
|
3
|
+
class Deploygate < Handler
|
4
|
+
route(
|
5
|
+
/^(deploygate|dg)\sadd\s(\S+)\s(\S+)$/,
|
6
|
+
:add,
|
7
|
+
command: true,
|
8
|
+
help: {
|
9
|
+
'deploygate add <username or email> <short name>' =>
|
10
|
+
'Add <username or email> to <short name>'
|
11
|
+
}
|
12
|
+
)
|
13
|
+
|
14
|
+
route(
|
15
|
+
/^(deploygate|dg)\sremove\s(\S+)\s(\S+)$/,
|
16
|
+
:remove,
|
17
|
+
command: true,
|
18
|
+
help: {
|
19
|
+
'deploygate remove <username or email> <short name>' =>
|
20
|
+
'Remove <username or email> from <short name>'
|
21
|
+
}
|
22
|
+
)
|
23
|
+
|
24
|
+
route(
|
25
|
+
/^(deploygate|dg)\slist\s(\S+)$/,
|
26
|
+
:list,
|
27
|
+
command: true,
|
28
|
+
help: {
|
29
|
+
'deploygate list <short name>' =>
|
30
|
+
'List all users associated with <short name>'
|
31
|
+
}
|
32
|
+
)
|
33
|
+
|
34
|
+
def self.default_config(config)
|
35
|
+
config.user_name = nil
|
36
|
+
config.api_key = nil
|
37
|
+
config.default_app_id = nil
|
38
|
+
end
|
39
|
+
|
40
|
+
def add(response)
|
41
|
+
short_name = response.matches[0][2]
|
42
|
+
user_identifier = response.matches[0][1]
|
43
|
+
if valid_app_name?(short_name)
|
44
|
+
result = api_request('post',
|
45
|
+
"/#{app_path(short_name)}/members",
|
46
|
+
'users' => "[#{user_identifier}]")
|
47
|
+
if result
|
48
|
+
response.reply("#{short_name}: #{user_identifier} added")
|
49
|
+
else
|
50
|
+
response.reply('There was an error making the request to DeployGate')
|
51
|
+
end
|
52
|
+
else
|
53
|
+
response.reply("#{short_name}: unknown application name")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def remove(response)
|
58
|
+
short_name = response.matches[0][2]
|
59
|
+
user_identifier = response.matches[0][1]
|
60
|
+
if valid_app_name?(short_name)
|
61
|
+
result = api_request('delete',
|
62
|
+
"/#{app_path(short_name)}/members",
|
63
|
+
'users' => "[#{user_identifier}]")
|
64
|
+
if result
|
65
|
+
response.reply("#{short_name}: #{user_identifier} removed")
|
66
|
+
else
|
67
|
+
response.reply('There was an error making the request to DeployGate')
|
68
|
+
end
|
69
|
+
else
|
70
|
+
response.reply("#{short_name}: unknown application name")
|
71
|
+
end
|
72
|
+
end
|
73
|
+
|
74
|
+
def list(response)
|
75
|
+
short_name = response.matches[0][1]
|
76
|
+
if valid_app_name?(short_name)
|
77
|
+
result = api_request('get', "/#{app_path(short_name)}/members")
|
78
|
+
if result
|
79
|
+
users = result['results']['users']
|
80
|
+
if users.count > 0
|
81
|
+
users.each do |user|
|
82
|
+
response.reply("#{short_name}: #{user['name']}, role: #{user['role']}")
|
83
|
+
end
|
84
|
+
else
|
85
|
+
response.reply("#{short_name}: No users")
|
86
|
+
end
|
87
|
+
else
|
88
|
+
response.reply('There was an error making the request to DeployGate')
|
89
|
+
end
|
90
|
+
else
|
91
|
+
response.reply("#{short_name}: unknown application name")
|
92
|
+
end
|
93
|
+
end
|
94
|
+
|
95
|
+
private
|
96
|
+
|
97
|
+
def valid_app_name?(name)
|
98
|
+
Lita.config.handlers.deploygate.app_names.key?(name)
|
99
|
+
end
|
100
|
+
|
101
|
+
def app_path(name)
|
102
|
+
Lita.config.handlers.deploygate.app_names[name]
|
103
|
+
end
|
104
|
+
|
105
|
+
def api_request(method, component, args = {})
|
106
|
+
if Lita.config.handlers.deploygate.user_name.nil? ||
|
107
|
+
Lita.config.handlers.deploygate.api_key.nil?
|
108
|
+
Lita.logger.error('Missing API key or Page ID for Deploygate')
|
109
|
+
fail 'Missing config'
|
110
|
+
end
|
111
|
+
|
112
|
+
url = "https://deploygate.com/api/users/" \
|
113
|
+
"#{Lita.config.handlers.deploygate.user_name}" \
|
114
|
+
"#{component}"
|
115
|
+
|
116
|
+
args['token'] = Lita.config.handlers.deploygate.api_key
|
117
|
+
|
118
|
+
http_response = http.send(method) do |req|
|
119
|
+
req.url url, args
|
120
|
+
end
|
121
|
+
|
122
|
+
if http_response.status == 200 ||
|
123
|
+
http_response.status == 201
|
124
|
+
MultiJson.load(http_response.body)
|
125
|
+
else
|
126
|
+
Lita.logger.error("HTTP #{method} for #{url} with #{args} " \
|
127
|
+
"returned #{http_response.status}")
|
128
|
+
Lita.logger.error(http_response.body)
|
129
|
+
nil
|
130
|
+
end
|
131
|
+
end
|
132
|
+
end
|
133
|
+
|
134
|
+
Lita.register_handler(Deploygate)
|
135
|
+
end
|
136
|
+
end
|
@@ -0,0 +1,26 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = 'lita-deploygate'
|
3
|
+
spec.version = '0.1.0'
|
4
|
+
spec.authors = ['Eric Sigler']
|
5
|
+
spec.email = ['me@esigler.com']
|
6
|
+
spec.description = %q{Add, remove members to Deploygate releases}
|
7
|
+
spec.summary = %q{Add, remove members to Deploygate releases}
|
8
|
+
spec.homepage = 'http://github.com/esigler/lita-deploygate'
|
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', '>= 3.1'
|
18
|
+
spec.add_runtime_dependency 'multi_json'
|
19
|
+
|
20
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
21
|
+
spec.add_development_dependency 'coveralls'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
spec.add_development_dependency 'rspec', '>= 3.0.0.beta2'
|
24
|
+
spec.add_development_dependency 'rubocop'
|
25
|
+
spec.add_development_dependency 'simplecov'
|
26
|
+
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
{"error":false,"results":{"invite":"member invite success"}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"error":false,"results":{"usage":{"used":0,"max":1000},"users":[]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"error":false,"results":{"usage":{"used":1,"max":1000},"users":[{"name":"username","role":1}]}}
|
@@ -0,0 +1 @@
|
|
1
|
+
{"error":false,"results":{"invite":"member remove success"}}
|
@@ -0,0 +1,141 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Lita::Handlers::Deploygate, lita_handler: true do
|
4
|
+
let(:members_empty) do
|
5
|
+
File.read('spec/files/members_empty.json')
|
6
|
+
end
|
7
|
+
|
8
|
+
let(:members_full) do
|
9
|
+
File.read('spec/files/members_full.json')
|
10
|
+
end
|
11
|
+
|
12
|
+
let(:members_add) do
|
13
|
+
File.read('spec/files/members_add.json')
|
14
|
+
end
|
15
|
+
|
16
|
+
let(:members_remove) do
|
17
|
+
File.read('spec/files/members_remove.json')
|
18
|
+
end
|
19
|
+
|
20
|
+
it { routes_command('deploygate add username abc123').to(:add) }
|
21
|
+
it { routes_command('deploygate add foo@example.com abc123').to(:add) }
|
22
|
+
it { routes_command('deploygate remove username abc123').to(:remove) }
|
23
|
+
it { routes_command('deploygate remove foo@example.com abc123').to(:remove) }
|
24
|
+
it { routes_command('deploygate list abc123').to(:list) }
|
25
|
+
it { routes_command('dg add username abc123').to(:add) }
|
26
|
+
it { routes_command('dg remove username abc123').to(:remove) }
|
27
|
+
it { routes_command('dg list abc123').to(:list) }
|
28
|
+
|
29
|
+
describe '.default_config' do
|
30
|
+
it 'sets user_name to nil' do
|
31
|
+
expect(Lita.config.handlers.deploygate.user_name).to be_nil
|
32
|
+
end
|
33
|
+
|
34
|
+
it 'sets api_key to nil' do
|
35
|
+
expect(Lita.config.handlers.deploygate.api_key).to be_nil
|
36
|
+
end
|
37
|
+
|
38
|
+
it 'sets app_names to nil' do
|
39
|
+
expect(Lita.config.handlers.deploygate.app_names).to be_nil
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
43
|
+
describe 'without valid config' do
|
44
|
+
it 'errors out on any command' do
|
45
|
+
Lita.config.handlers.deploygate.app_names = { 'abc123' => 'path/to/places' }
|
46
|
+
expect { send_command('dg list abc123') }.to raise_error('Missing config')
|
47
|
+
end
|
48
|
+
end
|
49
|
+
|
50
|
+
describe 'with valid config' do
|
51
|
+
before do
|
52
|
+
Lita.config.handlers.deploygate.user_name = 'foo'
|
53
|
+
Lita.config.handlers.deploygate.api_key = 'bar'
|
54
|
+
Lita.config.handlers.deploygate.app_names = { 'abc123' => 'path/to/places' }
|
55
|
+
end
|
56
|
+
|
57
|
+
describe '#add' do
|
58
|
+
it 'shows an ack when a username is added' do
|
59
|
+
response = double('Faraday::Response', status: 200, body: members_add)
|
60
|
+
expect_any_instance_of(Faraday::Connection).to receive(:post).once.and_return(response)
|
61
|
+
send_command('deploygate add username abc123')
|
62
|
+
expect(replies.last).to eq('abc123: username added')
|
63
|
+
end
|
64
|
+
|
65
|
+
it 'shows an ack when an email is added' do
|
66
|
+
response = double('Faraday::Response', status: 200, body: members_add)
|
67
|
+
expect_any_instance_of(Faraday::Connection).to receive(:post).once.and_return(response)
|
68
|
+
send_command('deploygate add foo@example.com abc123')
|
69
|
+
expect(replies.last).to eq('abc123: foo@example.com added')
|
70
|
+
end
|
71
|
+
|
72
|
+
it 'shows a warning if the short name does not exist when adding someone' do
|
73
|
+
send_command('deploygate add username doesnotexist')
|
74
|
+
expect(replies.last).to eq('doesnotexist: unknown application name')
|
75
|
+
end
|
76
|
+
|
77
|
+
it 'shows an error if there was an issue adding someone' do
|
78
|
+
response = double('Faraday::Response', status: 500, body: nil)
|
79
|
+
expect_any_instance_of(Faraday::Connection).to receive(:post).once.and_return(response)
|
80
|
+
send_command('deploygate add username abc123')
|
81
|
+
expect(replies.last).to eq('There was an error making the request to DeployGate')
|
82
|
+
end
|
83
|
+
end
|
84
|
+
|
85
|
+
describe '#remove' do
|
86
|
+
it 'shows an ack when a username is removed' do
|
87
|
+
response = double('Faraday::Response', status: 200, body: members_remove)
|
88
|
+
expect_any_instance_of(Faraday::Connection).to receive(:delete).once.and_return(response)
|
89
|
+
send_command('deploygate remove username abc123')
|
90
|
+
expect(replies.last).to eq('abc123: username removed')
|
91
|
+
end
|
92
|
+
|
93
|
+
it 'shows an ack when an email is removed' do
|
94
|
+
response = double('Faraday::Response', status: 200, body: members_remove)
|
95
|
+
expect_any_instance_of(Faraday::Connection).to receive(:delete).once.and_return(response)
|
96
|
+
send_command('deploygate remove foo@example.com abc123')
|
97
|
+
expect(replies.last).to eq('abc123: foo@example.com removed')
|
98
|
+
end
|
99
|
+
|
100
|
+
it 'shows a warning if the short name does not exist when removing someone' do
|
101
|
+
send_command('deploygate remove username doesnotexist')
|
102
|
+
expect(replies.last).to eq('doesnotexist: unknown application name')
|
103
|
+
end
|
104
|
+
|
105
|
+
it 'shows an error if there was an issue removing someone' do
|
106
|
+
response = double('Faraday::Response', status: 500, body: nil)
|
107
|
+
expect_any_instance_of(Faraday::Connection).to receive(:delete).once.and_return(response)
|
108
|
+
send_command('deploygate remove username abc123')
|
109
|
+
expect(replies.last).to eq('There was an error making the request to DeployGate')
|
110
|
+
end
|
111
|
+
end
|
112
|
+
|
113
|
+
describe '#list' do
|
114
|
+
it 'shows a list of users when there are any' do
|
115
|
+
response = double('Faraday::Response', status: 200, body: members_full)
|
116
|
+
expect_any_instance_of(Faraday::Connection).to receive(:get).once.and_return(response)
|
117
|
+
send_command('deploygate list abc123')
|
118
|
+
expect(replies.last).to eq('abc123: username, role: 1')
|
119
|
+
end
|
120
|
+
|
121
|
+
it 'shows an empty list of users when there arent any' do
|
122
|
+
response = double('Faraday::Response', status: 200, body: members_empty)
|
123
|
+
expect_any_instance_of(Faraday::Connection).to receive(:get).once.and_return(response)
|
124
|
+
send_command('deploygate list abc123')
|
125
|
+
expect(replies.last).to eq('abc123: No users')
|
126
|
+
end
|
127
|
+
|
128
|
+
it 'shows a warning if the short name does not exist when listing' do
|
129
|
+
send_command('deploygate list doesnotexist')
|
130
|
+
expect(replies.last).to eq('doesnotexist: unknown application name')
|
131
|
+
end
|
132
|
+
|
133
|
+
it 'shows an error if there was an issue listing users' do
|
134
|
+
response = double('Faraday::Response', status: 500, body: nil)
|
135
|
+
expect_any_instance_of(Faraday::Connection).to receive(:get).once.and_return(response)
|
136
|
+
send_command('deploygate list abc123')
|
137
|
+
expect(replies.last).to eq('There was an error making the request to DeployGate')
|
138
|
+
end
|
139
|
+
end
|
140
|
+
end
|
141
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,10 @@
|
|
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-deploygate'
|
10
|
+
require 'lita/rspec'
|
metadata
ADDED
@@ -0,0 +1,181 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-deploygate
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Eric Sigler
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-04-12 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: '3.1'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '3.1'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: multi_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: coveralls
|
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: rake
|
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.beta2
|
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.beta2
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rubocop
|
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: simplecov
|
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: Add, remove members to Deploygate releases
|
126
|
+
email:
|
127
|
+
- me@esigler.com
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- ".gitignore"
|
133
|
+
- ".rubocop.yml"
|
134
|
+
- ".travis.yml"
|
135
|
+
- CONTRIBUTING.md
|
136
|
+
- Gemfile
|
137
|
+
- LICENSE
|
138
|
+
- README.md
|
139
|
+
- Rakefile
|
140
|
+
- lib/lita-deploygate.rb
|
141
|
+
- lib/lita/handlers/deploygate.rb
|
142
|
+
- lita-deploygate.gemspec
|
143
|
+
- locales/en.yml
|
144
|
+
- spec/files/members_add.json
|
145
|
+
- spec/files/members_empty.json
|
146
|
+
- spec/files/members_full.json
|
147
|
+
- spec/files/members_remove.json
|
148
|
+
- spec/lita/handlers/deploygate_spec.rb
|
149
|
+
- spec/spec_helper.rb
|
150
|
+
homepage: http://github.com/esigler/lita-deploygate
|
151
|
+
licenses:
|
152
|
+
- MIT
|
153
|
+
metadata:
|
154
|
+
lita_plugin_type: handler
|
155
|
+
post_install_message:
|
156
|
+
rdoc_options: []
|
157
|
+
require_paths:
|
158
|
+
- lib
|
159
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
160
|
+
requirements:
|
161
|
+
- - ">="
|
162
|
+
- !ruby/object:Gem::Version
|
163
|
+
version: '0'
|
164
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
165
|
+
requirements:
|
166
|
+
- - ">="
|
167
|
+
- !ruby/object:Gem::Version
|
168
|
+
version: '0'
|
169
|
+
requirements: []
|
170
|
+
rubyforge_project:
|
171
|
+
rubygems_version: 2.2.1
|
172
|
+
signing_key:
|
173
|
+
specification_version: 4
|
174
|
+
summary: Add, remove members to Deploygate releases
|
175
|
+
test_files:
|
176
|
+
- spec/files/members_add.json
|
177
|
+
- spec/files/members_empty.json
|
178
|
+
- spec/files/members_full.json
|
179
|
+
- spec/files/members_remove.json
|
180
|
+
- spec/lita/handlers/deploygate_spec.rb
|
181
|
+
- spec/spec_helper.rb
|