lita-mingle 1.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +7 -0
- data/.gitignore +18 -0
- data/.rubocop.yml +14 -0
- data/.travis.yml +9 -0
- data/Gemfile +3 -0
- data/README.md +69 -0
- data/Rakefile +19 -0
- data/lib/helpers/api.rb +34 -0
- data/lib/helpers/patches/mingleapi.rb +30 -0
- data/lib/helpers/regex.rb +7 -0
- data/lib/lita-mingle.rb +16 -0
- data/lib/lita/handlers/mingle.rb +73 -0
- data/lita-mingle.gemspec +26 -0
- data/locales/en.yml +24 -0
- data/spec/helpers/apistub.rb +9 -0
- data/spec/lita/handlers/mingle_spec.rb +75 -0
- data/spec/spec_helper.rb +12 -0
- data/templates/.gitkeep +0 -0
- metadata +177 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 9e014b170818ae0f893089f47059ea8bbc6bc35b
|
4
|
+
data.tar.gz: f2ba74c34cb6e5ca770cf1cda27b79cf8c9d9fb5
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: e56de39f89e7b43b938f9eba48e1502bbb0097a08aa33f5ede61437a92965e543c8c945f9d40c8a2ff6843a81612920c5342449af238b2b524d81790715c14e4
|
7
|
+
data.tar.gz: b48b18a4be9c7f00c82d9a147c21ee8b0157dfbd27de613b7ac57b5a3e23837b39cd889b24b663f250cc7de878d66f099dc6aa1821080ded6bf4a3ddc3049e37
|
data/.gitignore
ADDED
data/.rubocop.yml
ADDED
data/.travis.yml
ADDED
data/Gemfile
ADDED
data/README.md
ADDED
@@ -0,0 +1,69 @@
|
|
1
|
+
# lita-mingle
|
2
|
+
|
3
|
+
[![Build Status](https://travis-ci.org/visioncritical/lita-mingle.png?branch=master)](https://travis-ci.org/visioncritical/lita-mingle)
|
4
|
+
|
5
|
+
A Lita Plugin for creating/updating cards in Mingle.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
Add lita-mingle to your Lita instance's Gemfile:
|
10
|
+
|
11
|
+
```ruby
|
12
|
+
gem "lita-mingle"
|
13
|
+
```
|
14
|
+
|
15
|
+
## Configuration
|
16
|
+
|
17
|
+
This plugin comes with 4 configurations options:
|
18
|
+
|
19
|
+
### Required
|
20
|
+
|
21
|
+
* server - The URL for your Mingle server
|
22
|
+
* user - A Mingle user
|
23
|
+
* hmac_token - The HMAC token value for your specified user
|
24
|
+
|
25
|
+
### Example
|
26
|
+
|
27
|
+
```ruby
|
28
|
+
config.handlers.mingle.server = 'https://your.mingle.server'
|
29
|
+
config.handlers.mingle.user = 'hermes.conrad'
|
30
|
+
config.handlers.mingle.hmac_token = 'HMACTOKEN'
|
31
|
+
```
|
32
|
+
|
33
|
+
### Optional
|
34
|
+
|
35
|
+
* administrator - Your desired contact information. Will replace `%{administrator}` in the following line:
|
36
|
+
|
37
|
+
`Please contact %{administrator}.`
|
38
|
+
|
39
|
+
Defaults to: 'your Mingle administrator'.
|
40
|
+
|
41
|
+
### Example
|
42
|
+
|
43
|
+
```ruby
|
44
|
+
config.handlers.mingle.administrator = '#some_channel'
|
45
|
+
# OR
|
46
|
+
config.handlers.mingle.administrator = '@some_group'
|
47
|
+
# OR
|
48
|
+
config.handlers.mingle.administrator = 'planetexpress@domain.local'
|
49
|
+
```
|
50
|
+
|
51
|
+
## Usage
|
52
|
+
|
53
|
+
```
|
54
|
+
mingle projects - Lists all the projects for a mingle server (id, name)
|
55
|
+
mingle [PROJECT_ID] [CARD_TYPE] with name [CARD_NAME] - Creates a mingle card under the specified project
|
56
|
+
mingle [PROJECT_ID] [CARD_NUM] [DESCRIPTION] - Updates the body of a specified mingle card
|
57
|
+
```
|
58
|
+
|
59
|
+
## License
|
60
|
+
|
61
|
+
The MIT License (MIT)
|
62
|
+
|
63
|
+
Copyright (c) 2016 Vision Critical
|
64
|
+
|
65
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
|
66
|
+
|
67
|
+
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
|
68
|
+
|
69
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/Rakefile
ADDED
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'bundler/gem_tasks'
|
2
|
+
require 'rspec/core/rake_task'
|
3
|
+
require 'rubocop/rake_task'
|
4
|
+
|
5
|
+
RSpec::Core::RakeTask.new(:spec) do |t|
|
6
|
+
t.rspec_opts = '--color -fd spec/lita'
|
7
|
+
end
|
8
|
+
|
9
|
+
task default: :spec
|
10
|
+
|
11
|
+
# Style tests (Rubocop)
|
12
|
+
namespace :style do
|
13
|
+
desc 'Run Ruby style checks'
|
14
|
+
RuboCop::RakeTask.new :ruby
|
15
|
+
end
|
16
|
+
|
17
|
+
# Run all style tasks
|
18
|
+
desc 'Run all style checks'
|
19
|
+
task style: ['style:ruby']
|
data/lib/helpers/api.rb
ADDED
@@ -0,0 +1,34 @@
|
|
1
|
+
require_relative 'patches/mingleapi'
|
2
|
+
|
3
|
+
module MingleHelpers
|
4
|
+
module API
|
5
|
+
class Client < MingleAPI
|
6
|
+
MingleAPI::Http.send(:include, MingleHelpers::Patches::HTTPPut)
|
7
|
+
MingleAPI.send(:include, MingleHelpers::Patches::UpdateCard)
|
8
|
+
|
9
|
+
attr_reader :server, :connection
|
10
|
+
|
11
|
+
def initialize(server, user, hmac_token)
|
12
|
+
# @server = server
|
13
|
+
# @connection = MingleAPI.new(server, hmac: [user, hmac_token])
|
14
|
+
super(server, hmac: [user, hmac_token])
|
15
|
+
end
|
16
|
+
|
17
|
+
# Returns an array of hashes
|
18
|
+
# { :name, :identifier, :description }
|
19
|
+
def projects
|
20
|
+
super.collect(&:to_h)
|
21
|
+
end
|
22
|
+
|
23
|
+
# Returns the card URL
|
24
|
+
def create_card(project, attrs)
|
25
|
+
super(project, attrs).url
|
26
|
+
end
|
27
|
+
|
28
|
+
# Returns the card URL
|
29
|
+
def update_card(project, card_num, attrs)
|
30
|
+
super(project, card_num, attrs).url
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,30 @@
|
|
1
|
+
module MingleHelpers
|
2
|
+
module Patches
|
3
|
+
module HTTPPut
|
4
|
+
def put(url, params)
|
5
|
+
process(Net::HTTP::Put::Multipart, url, params)
|
6
|
+
end
|
7
|
+
end
|
8
|
+
|
9
|
+
module UpdateCard
|
10
|
+
def update_card(project, card_num, attrs)
|
11
|
+
params = [
|
12
|
+
['card[name]', attrs[:name]],
|
13
|
+
['card[card_type_name]', attrs[:type]],
|
14
|
+
['card[description]', attrs[:description]]
|
15
|
+
]
|
16
|
+
Array(attrs[:attachments]).each_with_index do |attachment, i|
|
17
|
+
path, content_type = attachment
|
18
|
+
params << ["attachments[#{i}]", UploadIO.new(File.new(path), content_type, File.basename(path))]
|
19
|
+
end
|
20
|
+
Array(attrs[:properties]).each_with_index do |prop, _i|
|
21
|
+
name, value = prop
|
22
|
+
params << ['card[properties][][name]', name]
|
23
|
+
params << ['card[properties][][value]', value]
|
24
|
+
end
|
25
|
+
@http.put(v2(:projects, project_identifier(project), :cards, card_num), params)
|
26
|
+
OpenStruct.new(number: card_num, url: url('projects', project_identifier(project), 'cards', card_num))
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
@@ -0,0 +1,7 @@
|
|
1
|
+
module MingleHelpers
|
2
|
+
module Regex
|
3
|
+
LIST_PROJECTS_PATTERN = /([mM]ingle [pP]rojects?)/
|
4
|
+
CREATE_CARD_PATTERN = /([mM]ingle)\s+(?<project>\w+)\s+(?<card_type>[\w\s]+)\swith\sname\s(?<name>.*)/
|
5
|
+
UPDATE_CARD_PATTERN = /([mM]ingle)\s(?<project>\S+)\s(?<card_num>\d+)\s(?<description>.+)/m
|
6
|
+
end
|
7
|
+
end
|
data/lib/lita-mingle.rb
ADDED
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'lita'
|
2
|
+
require 'mingle-api'
|
3
|
+
require 'time'
|
4
|
+
|
5
|
+
Lita.load_locales Dir[File.expand_path(
|
6
|
+
File.join('..', '..', 'locales', '*.yml'), __FILE__
|
7
|
+
)]
|
8
|
+
|
9
|
+
require_relative 'helpers/api'
|
10
|
+
require_relative 'helpers/regex'
|
11
|
+
require 'lita/handlers/mingle'
|
12
|
+
|
13
|
+
Lita::Handlers::Mingle.template_root File.expand_path(
|
14
|
+
File.join('..', '..', 'templates'),
|
15
|
+
__FILE__
|
16
|
+
)
|
@@ -0,0 +1,73 @@
|
|
1
|
+
module Lita
|
2
|
+
module Handlers
|
3
|
+
class Mingle < Handler
|
4
|
+
include ::MingleHelpers::API
|
5
|
+
include ::MingleHelpers::Regex
|
6
|
+
|
7
|
+
config :server, required: true
|
8
|
+
config :user, required: true
|
9
|
+
config :hmac_token, required: true
|
10
|
+
config :administrator, default: 'your Mingle administrator'
|
11
|
+
|
12
|
+
route(
|
13
|
+
/\A#{LIST_PROJECTS_PATTERN}\z/,
|
14
|
+
:list_projects,
|
15
|
+
command: false,
|
16
|
+
help: { t('project.list.help.syntax') => t('project.list.help.desc') }
|
17
|
+
)
|
18
|
+
|
19
|
+
route(
|
20
|
+
/\A#{CREATE_CARD_PATTERN}\z/,
|
21
|
+
:create_card,
|
22
|
+
command: false,
|
23
|
+
help: { t('card.create.help.syntax') => t('card.create.help.desc') }
|
24
|
+
)
|
25
|
+
|
26
|
+
route(
|
27
|
+
/\A#{UPDATE_CARD_PATTERN}\z/,
|
28
|
+
:update_card,
|
29
|
+
command: false,
|
30
|
+
help: { t('card.update.help.syntax') => t('card.update.help.desc') }
|
31
|
+
)
|
32
|
+
|
33
|
+
def list_projects(response)
|
34
|
+
mingle = Client.new config.server, config.user, config.hmac_token
|
35
|
+
projects = mingle.projects
|
36
|
+
message = projects.each.inject('') do |list, hash|
|
37
|
+
list << t('project.list.reply', id: hash[:identifier], name: hash[:name]) + "\n"
|
38
|
+
list
|
39
|
+
end
|
40
|
+
response.reply message.prepend 'PROJECT ID -- NAME' + "\n"
|
41
|
+
rescue
|
42
|
+
response.reply t('project.list.error', administrator: config.administrator)
|
43
|
+
end
|
44
|
+
|
45
|
+
def create_card(response)
|
46
|
+
data = response.match_data
|
47
|
+
begin
|
48
|
+
mingle = Client.new config.server, config.user, config.hmac_token
|
49
|
+
url = mingle.create_card data['project'], name: data['name'], type: data['card_type']
|
50
|
+
response.reply t('card.create.reply', url: url)
|
51
|
+
rescue
|
52
|
+
response.reply t('card.create.error', administrator: config.administrator)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
|
56
|
+
def update_card(response)
|
57
|
+
data = response.match_data
|
58
|
+
begin
|
59
|
+
mingle = Client.new config.server, config.user, config.hmac_token
|
60
|
+
card = mingle.card(data['project'], data['card_num']).to_h
|
61
|
+
url = mingle.update_card data['project'], data['card_num'], name: card[:name],
|
62
|
+
type: card[:type],
|
63
|
+
description: data['description']
|
64
|
+
response.reply t('card.update.reply', url: url)
|
65
|
+
rescue
|
66
|
+
response.reply t('card.update.error', administrator: config.administrator)
|
67
|
+
end
|
68
|
+
end
|
69
|
+
|
70
|
+
Lita.register_handler(self)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
data/lita-mingle.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
Gem::Specification.new do |spec|
|
2
|
+
spec.name = 'lita-mingle'
|
3
|
+
spec.version = '1.0.0'
|
4
|
+
spec.authors = ['Riley Shott']
|
5
|
+
spec.email = %w(riley.shott@visioncritical.com)
|
6
|
+
spec.description = 'A Lita Plugin for creating/updating cards in Mingle'
|
7
|
+
spec.summary = 'A Lita Plugin for creating/updating cards in Mingle'
|
8
|
+
spec.homepage = 'https://github.com/visioncritical/lita-mingle'
|
9
|
+
spec.license = 'MIT'
|
10
|
+
spec.metadata = { 'lita_plugin_type' => 'handler' }
|
11
|
+
|
12
|
+
spec.files = `git ls-files`.split($INPUT_RECORD_SEPARATOR)
|
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.7'
|
18
|
+
spec.add_runtime_dependency 'mingle-api', '>= 0.0.3'
|
19
|
+
|
20
|
+
spec.add_development_dependency 'bundler', '~> 1.3'
|
21
|
+
spec.add_development_dependency 'pry-byebug'
|
22
|
+
spec.add_development_dependency 'rake'
|
23
|
+
spec.add_development_dependency 'rack-test'
|
24
|
+
spec.add_development_dependency 'rspec', '>= 3.0.0'
|
25
|
+
spec.add_development_dependency 'rubocop', '>= 0.28.0'
|
26
|
+
end
|
data/locales/en.yml
ADDED
@@ -0,0 +1,24 @@
|
|
1
|
+
en:
|
2
|
+
lita:
|
3
|
+
handlers:
|
4
|
+
mingle:
|
5
|
+
card:
|
6
|
+
create:
|
7
|
+
help:
|
8
|
+
syntax: "mingle [PROJECT_ID] [CARD_TYPE] with name [CARD_NAME]"
|
9
|
+
desc: "Creates a mingle card under the specified project"
|
10
|
+
reply: "Card created - %{url}"
|
11
|
+
error: "Card creation failed. Please contact %{administrator}."
|
12
|
+
update:
|
13
|
+
help:
|
14
|
+
syntax: "mingle [PROJECT_ID] [CARD_NUM] [DESCRIPTION]"
|
15
|
+
desc: "Updates the body of a specified mingle card"
|
16
|
+
reply: "Card updated - %{url}"
|
17
|
+
error: "Card update failed. Please contact %{administrator}."
|
18
|
+
project:
|
19
|
+
list:
|
20
|
+
help:
|
21
|
+
syntax: "mingle projects"
|
22
|
+
desc: "Lists all the projects for a mingle server (id, name)"
|
23
|
+
reply: "%{id} -- %{name}"
|
24
|
+
error: "Unable to list projects. Please contact %{administrator}."
|
@@ -0,0 +1,75 @@
|
|
1
|
+
require 'spec_helper'
|
2
|
+
|
3
|
+
describe Lita::Handlers::Mingle, lita_handler: true do
|
4
|
+
it { is_expected.to route('Mingle project').to(:list_projects) }
|
5
|
+
it { is_expected.to route('Mingle Project').to(:list_projects) }
|
6
|
+
it { is_expected.to route('Mingle projects').to(:list_projects) }
|
7
|
+
it { is_expected.to route('Mingle Projects').to(:list_projects) }
|
8
|
+
|
9
|
+
it { is_expected.to route('mingle project').to(:list_projects) }
|
10
|
+
it { is_expected.to route('mingle Project').to(:list_projects) }
|
11
|
+
it { is_expected.to route('mingle projects').to(:list_projects) }
|
12
|
+
it { is_expected.to route('mingle Projects').to(:list_projects) }
|
13
|
+
|
14
|
+
it { is_expected.to route('mingle project card_type with name Guenter').to(:create_card) }
|
15
|
+
it { is_expected.to route('Mingle project card_type with name Guenter').to(:create_card) }
|
16
|
+
|
17
|
+
it { is_expected.to route('mingle project 1 Electronium Hat').to(:update_card) }
|
18
|
+
it { is_expected.to route('Mingle project 1 Electronium Hat').to(:update_card) }
|
19
|
+
|
20
|
+
before do
|
21
|
+
allow_any_instance_of(MingleAPI).to receive(:projects).and_return(response)
|
22
|
+
allow_any_instance_of(MingleAPI).to receive(:create_card).and_return(response)
|
23
|
+
allow_any_instance_of(MingleAPI).to receive(:card).and_return(response)
|
24
|
+
allow_any_instance_of(MingleHelpers::API::Client).to receive(:update_card).and_return(update_card_response)
|
25
|
+
end
|
26
|
+
|
27
|
+
let(:response) { double('MingleHelpers::API::Client') }
|
28
|
+
let(:projects_response) do
|
29
|
+
[OpenStruct.new(name: 'Mars University Expirement',
|
30
|
+
identifier: 'marsu',
|
31
|
+
description: 'See if a monkey could pass a course at Mars University')
|
32
|
+
]
|
33
|
+
end
|
34
|
+
let(:create_card_response) do
|
35
|
+
'https://your.mingle.server/projects/marsu/cards/1'
|
36
|
+
end
|
37
|
+
let(:card_response) do
|
38
|
+
{
|
39
|
+
name: 'Mars University Expirement',
|
40
|
+
identifier: 'marsu',
|
41
|
+
description: 'See if a monkey could pass a course at Mars University'
|
42
|
+
}
|
43
|
+
end
|
44
|
+
let(:update_card_response) do
|
45
|
+
'https://your.mingle.server/projects/marsu/cards/1'
|
46
|
+
end
|
47
|
+
|
48
|
+
describe 'listing projects' do
|
49
|
+
it 'should be successful' do
|
50
|
+
allow(response).to receive(:collect).and_return(projects_response)
|
51
|
+
|
52
|
+
send_command('mingle projects')
|
53
|
+
expect(replies.last).to eq("PROJECT ID -- NAME\nmarsu -- Mars University Expirement\n")
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
describe 'creating a card' do
|
58
|
+
it 'should be successful' do
|
59
|
+
allow(response).to receive(:url).and_return(create_card_response)
|
60
|
+
|
61
|
+
send_command('mingle project Epic with name Guenter')
|
62
|
+
expect(replies.last).to eq('Card created - https://your.mingle.server/projects/marsu/cards/1')
|
63
|
+
end
|
64
|
+
end
|
65
|
+
|
66
|
+
describe 'updating a card' do
|
67
|
+
it 'should be successful' do
|
68
|
+
allow(response).to receive(:to_h).and_return(card_response)
|
69
|
+
allow(response).to receive(:url).and_return(update_card_response)
|
70
|
+
|
71
|
+
send_command('mingle project 1 Electronium Hat')
|
72
|
+
expect(replies.last).to eq('Card updated - https://your.mingle.server/projects/marsu/cards/1')
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
data/spec/spec_helper.rb
ADDED
@@ -0,0 +1,12 @@
|
|
1
|
+
require 'lita-mingle'
|
2
|
+
require 'lita/rspec'
|
3
|
+
|
4
|
+
# A compatibility mode is provided for older plugins upgrading from Lita 3. Since this plugin
|
5
|
+
# was generated with Lita 4, the compatibility mode should be left disabled.
|
6
|
+
Lita.version_3_compatibility_mode = false
|
7
|
+
|
8
|
+
RSpec.configure do |config|
|
9
|
+
config.before do
|
10
|
+
registry.register_handler(Lita::Handlers::Mingle)
|
11
|
+
end
|
12
|
+
end
|
data/templates/.gitkeep
ADDED
File without changes
|
metadata
ADDED
@@ -0,0 +1,177 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: lita-mingle
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.0
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Riley Shott
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-02-11 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.7'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - '>='
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '4.7'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: mingle-api
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 0.0.3
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 0.0.3
|
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: pry-byebug
|
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: rack-test
|
85
|
+
requirement: !ruby/object:Gem::Requirement
|
86
|
+
requirements:
|
87
|
+
- - '>='
|
88
|
+
- !ruby/object:Gem::Version
|
89
|
+
version: '0'
|
90
|
+
type: :development
|
91
|
+
prerelease: false
|
92
|
+
version_requirements: !ruby/object:Gem::Requirement
|
93
|
+
requirements:
|
94
|
+
- - '>='
|
95
|
+
- !ruby/object:Gem::Version
|
96
|
+
version: '0'
|
97
|
+
- !ruby/object:Gem::Dependency
|
98
|
+
name: rspec
|
99
|
+
requirement: !ruby/object:Gem::Requirement
|
100
|
+
requirements:
|
101
|
+
- - '>='
|
102
|
+
- !ruby/object:Gem::Version
|
103
|
+
version: 3.0.0
|
104
|
+
type: :development
|
105
|
+
prerelease: false
|
106
|
+
version_requirements: !ruby/object:Gem::Requirement
|
107
|
+
requirements:
|
108
|
+
- - '>='
|
109
|
+
- !ruby/object:Gem::Version
|
110
|
+
version: 3.0.0
|
111
|
+
- !ruby/object:Gem::Dependency
|
112
|
+
name: rubocop
|
113
|
+
requirement: !ruby/object:Gem::Requirement
|
114
|
+
requirements:
|
115
|
+
- - '>='
|
116
|
+
- !ruby/object:Gem::Version
|
117
|
+
version: 0.28.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.28.0
|
125
|
+
description: A Lita Plugin for creating/updating cards in Mingle
|
126
|
+
email:
|
127
|
+
- riley.shott@visioncritical.com
|
128
|
+
executables: []
|
129
|
+
extensions: []
|
130
|
+
extra_rdoc_files: []
|
131
|
+
files:
|
132
|
+
- .gitignore
|
133
|
+
- .rubocop.yml
|
134
|
+
- .travis.yml
|
135
|
+
- Gemfile
|
136
|
+
- README.md
|
137
|
+
- Rakefile
|
138
|
+
- lib/helpers/api.rb
|
139
|
+
- lib/helpers/patches/mingleapi.rb
|
140
|
+
- lib/helpers/regex.rb
|
141
|
+
- lib/lita-mingle.rb
|
142
|
+
- lib/lita/handlers/mingle.rb
|
143
|
+
- lita-mingle.gemspec
|
144
|
+
- locales/en.yml
|
145
|
+
- spec/helpers/apistub.rb
|
146
|
+
- spec/lita/handlers/mingle_spec.rb
|
147
|
+
- spec/spec_helper.rb
|
148
|
+
- templates/.gitkeep
|
149
|
+
homepage: https://github.com/visioncritical/lita-mingle
|
150
|
+
licenses:
|
151
|
+
- MIT
|
152
|
+
metadata:
|
153
|
+
lita_plugin_type: handler
|
154
|
+
post_install_message:
|
155
|
+
rdoc_options: []
|
156
|
+
require_paths:
|
157
|
+
- lib
|
158
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
159
|
+
requirements:
|
160
|
+
- - '>='
|
161
|
+
- !ruby/object:Gem::Version
|
162
|
+
version: '0'
|
163
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
164
|
+
requirements:
|
165
|
+
- - '>='
|
166
|
+
- !ruby/object:Gem::Version
|
167
|
+
version: '0'
|
168
|
+
requirements: []
|
169
|
+
rubyforge_project:
|
170
|
+
rubygems_version: 2.4.6
|
171
|
+
signing_key:
|
172
|
+
specification_version: 4
|
173
|
+
summary: A Lita Plugin for creating/updating cards in Mingle
|
174
|
+
test_files:
|
175
|
+
- spec/helpers/apistub.rb
|
176
|
+
- spec/lita/handlers/mingle_spec.rb
|
177
|
+
- spec/spec_helper.rb
|