trellohub 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 +18 -0
- data/Gemfile +7 -0
- data/LICENSE.txt +22 -0
- data/README.md +79 -0
- data/Rakefile +1 -0
- data/lib/trellohub.rb +18 -0
- data/lib/trellohub/board.rb +9 -0
- data/lib/trellohub/card.rb +90 -0
- data/lib/trellohub/cards.rb +58 -0
- data/lib/trellohub/configurable.rb +128 -0
- data/lib/trellohub/core_ext/hash.rb +19 -0
- data/lib/trellohub/list.rb +34 -0
- data/lib/trellohub/lists.rb +17 -0
- data/lib/trellohub/member.rb +12 -0
- data/lib/trellohub/synchronal.rb +56 -0
- data/lib/trellohub/version.rb +3 -0
- data/trellohub.gemspec +26 -0
- metadata +120 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 7d99116570f13e82e28ce68a35b5f1e6fd7a9b4e
|
4
|
+
data.tar.gz: 04a5fdea4cf49b3cf28abc353a2f0a982752eae0
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 9e9cddc0aa24c8e5c17217d94c879e4ef84fc7282b100d72020ccdd06af4bbbf9596e6f4623288c61c382cec4f677fac1145c2ece5c0684788a96f4e824323a8
|
7
|
+
data.tar.gz: 329245e579d8c0927b8f6c2520be973f69ed23662e0166e9f4518bbd5a8a434dc329e611b57c934b24353b0f052fc7853297b96ef6814ed51002482fbb584b43
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2014 linyows
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,79 @@
|
|
1
|
+
Trellohub
|
2
|
+
=========
|
3
|
+
|
4
|
+
Trellohub is uniform task management by synchronizing the github issues and trello cards.
|
5
|
+
|
6
|
+
[][gem]
|
7
|
+
[][travis]
|
8
|
+
[][gemnasium]
|
9
|
+
[][codeclimate]
|
10
|
+
[][coveralls]
|
11
|
+
|
12
|
+
[gem]: https://rubygems.org/gems/trellohub
|
13
|
+
[travis]: http://travis-ci.org/linyows/trellohub
|
14
|
+
[gemnasium]: https://gemnasium.com/linyows/trellohub
|
15
|
+
[codeclimate]: https://codeclimate.com/github/linyows/trellohub
|
16
|
+
[coveralls]: https://coveralls.io/r/linyows/trellohub
|
17
|
+
|
18
|
+
Installation
|
19
|
+
------------
|
20
|
+
|
21
|
+
Add this line to your application's Gemfile:
|
22
|
+
|
23
|
+
```ruby
|
24
|
+
gem 'trellohub'
|
25
|
+
```
|
26
|
+
|
27
|
+
And then execute:
|
28
|
+
|
29
|
+
```sh
|
30
|
+
$ bundle
|
31
|
+
```
|
32
|
+
|
33
|
+
Or install it yourself as:
|
34
|
+
|
35
|
+
```sh
|
36
|
+
$ gem install trellohub
|
37
|
+
```
|
38
|
+
|
39
|
+
Usage
|
40
|
+
-----
|
41
|
+
|
42
|
+
```sh
|
43
|
+
$ cp boards/example.yml boards/your_board_name.yml
|
44
|
+
```
|
45
|
+
|
46
|
+
edit `boards/your_board_name.yml`:
|
47
|
+
|
48
|
+
```yml
|
49
|
+
```
|
50
|
+
|
51
|
+
Synchronizing
|
52
|
+
-------------
|
53
|
+
|
54
|
+
GitHub Issues | Trello Cards | Description
|
55
|
+
------------- | ------------ | -----------
|
56
|
+
status changes | status changes | open, closed : create, delete
|
57
|
+
milestone changes | status changes | when setted milestones
|
58
|
+
labels change | list changes | label: todo => list: To Do
|
59
|
+
title changes | title changes | card title: 'repo_name#issue_number title'
|
60
|
+
asignee changes | member changes | first member is issue assignee
|
61
|
+
|
62
|
+
Contributing
|
63
|
+
------------
|
64
|
+
|
65
|
+
1. Fork it ( http://github.com/linyows/trellohub/fork )
|
66
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
67
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
68
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
69
|
+
5. Create new Pull Request
|
70
|
+
|
71
|
+
Authors
|
72
|
+
-------
|
73
|
+
|
74
|
+
- [linyows](https://github.com/linyows)
|
75
|
+
|
76
|
+
License
|
77
|
+
-------
|
78
|
+
|
79
|
+
The MIT License (MIT)
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/lib/trellohub.rb
ADDED
@@ -0,0 +1,18 @@
|
|
1
|
+
require 'octokit'
|
2
|
+
require 'trell'
|
3
|
+
require 'trellohub/version'
|
4
|
+
require 'trellohub/configurable'
|
5
|
+
require 'trellohub/board'
|
6
|
+
require 'trellohub/list'
|
7
|
+
require 'trellohub/lists'
|
8
|
+
require 'trellohub/card'
|
9
|
+
require 'trellohub/cards'
|
10
|
+
require 'trellohub/member'
|
11
|
+
require 'trellohub/synchronal'
|
12
|
+
|
13
|
+
module Trellohub
|
14
|
+
class << self
|
15
|
+
include Trellohub::Configurable
|
16
|
+
include Trellohub::Synchronal
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,90 @@
|
|
1
|
+
require 'trellohub/board'
|
2
|
+
require 'trellohub/cards'
|
3
|
+
|
4
|
+
module Trellohub
|
5
|
+
class Card
|
6
|
+
class << self
|
7
|
+
include Trellohub::Cards
|
8
|
+
end
|
9
|
+
|
10
|
+
attr_accessor(*self.all_attributes)
|
11
|
+
alias_method :repo, :repository
|
12
|
+
|
13
|
+
def repository_name
|
14
|
+
repo.split('/').last
|
15
|
+
end
|
16
|
+
|
17
|
+
def import(card)
|
18
|
+
card.attrs.keys.each do |attr|
|
19
|
+
instance_variable_set(:"@#{attr}", card.send(attr))
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
def import_from_issue(repository, issue)
|
24
|
+
@idBoard = Trellohub::Board.id
|
25
|
+
@repository = repository
|
26
|
+
@issue = issue.dup
|
27
|
+
|
28
|
+
build_key
|
29
|
+
build_name
|
30
|
+
build_desc
|
31
|
+
build_milestone
|
32
|
+
|
33
|
+
assign_members
|
34
|
+
assign_list
|
35
|
+
end
|
36
|
+
|
37
|
+
def build_key
|
38
|
+
@key = "#{repository_name}##{@issue.number}"
|
39
|
+
end
|
40
|
+
|
41
|
+
def build_name
|
42
|
+
@name = "#{repository_name}##{@issue.number} #{@issue.title}"
|
43
|
+
end
|
44
|
+
|
45
|
+
def build_desc
|
46
|
+
@desc = "#{Octokit.web_endpoint}#{repo}/issues/#{@issue.number}"
|
47
|
+
end
|
48
|
+
|
49
|
+
def build_milestone
|
50
|
+
return unless @issue.milestone
|
51
|
+
@milestone = @issue.milestone.title
|
52
|
+
end
|
53
|
+
|
54
|
+
def assign_members
|
55
|
+
return unless @issue.assignee
|
56
|
+
|
57
|
+
member = Trellohub::Member.find_by_github_user(@issue.assignee.login)
|
58
|
+
unless member.nil?
|
59
|
+
@idMembers = [member.id]
|
60
|
+
@members = [member.username]
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def assign_list
|
65
|
+
labels = @issue.labels.map(&:name).uniq
|
66
|
+
list = Trellohub.list_by(labels: labels)
|
67
|
+
return unless list
|
68
|
+
@idList = list.id
|
69
|
+
@list_name = list.name
|
70
|
+
end
|
71
|
+
|
72
|
+
def save_to_trello
|
73
|
+
end
|
74
|
+
|
75
|
+
def save_to_github
|
76
|
+
end
|
77
|
+
|
78
|
+
def export
|
79
|
+
Hash[self.class.valid_attributes.map { |key|
|
80
|
+
[key, instance_variable_get(:"@#{key}")]
|
81
|
+
}]
|
82
|
+
end
|
83
|
+
|
84
|
+
def to_hash
|
85
|
+
Hash[self.class.all_attributes.map { |key|
|
86
|
+
[key, instance_variable_get(:"@#{key}")]
|
87
|
+
}]
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
@@ -0,0 +1,58 @@
|
|
1
|
+
require 'trellohub/board'
|
2
|
+
|
3
|
+
module Trellohub
|
4
|
+
module Cards
|
5
|
+
def valid_attributes
|
6
|
+
%i(
|
7
|
+
id
|
8
|
+
checkItemStates
|
9
|
+
closed
|
10
|
+
dateLastActivity
|
11
|
+
desc
|
12
|
+
descData
|
13
|
+
idBoard
|
14
|
+
idList
|
15
|
+
idMembersVoted
|
16
|
+
idShort
|
17
|
+
idAttachmentCover
|
18
|
+
name
|
19
|
+
pos
|
20
|
+
shortLink
|
21
|
+
badges
|
22
|
+
due
|
23
|
+
idChecklists
|
24
|
+
idMembers
|
25
|
+
labels
|
26
|
+
shortUrl
|
27
|
+
subscribed
|
28
|
+
)
|
29
|
+
end
|
30
|
+
|
31
|
+
def other_attributes
|
32
|
+
%i(
|
33
|
+
key
|
34
|
+
repository
|
35
|
+
list_name
|
36
|
+
members
|
37
|
+
milestore
|
38
|
+
issue
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def all_attributes
|
43
|
+
self.valid_attributes + self.other_attributes
|
44
|
+
end
|
45
|
+
|
46
|
+
def all
|
47
|
+
@all || self.all!
|
48
|
+
end
|
49
|
+
|
50
|
+
def all!
|
51
|
+
@all = Trell.cards(Trellohub::Board.id)
|
52
|
+
end
|
53
|
+
|
54
|
+
def all_clear
|
55
|
+
self.all.each { |card| Trell.delete_card(card.id) }
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
@@ -0,0 +1,128 @@
|
|
1
|
+
require 'yaml'
|
2
|
+
require 'trellohub/core_ext/hash'
|
3
|
+
|
4
|
+
module Trellohub
|
5
|
+
module Configurable
|
6
|
+
CONFIGURATIONS_KEYS = %i(
|
7
|
+
config_file
|
8
|
+
board_id
|
9
|
+
repositories
|
10
|
+
milestones
|
11
|
+
lists
|
12
|
+
trello_application_key
|
13
|
+
trello_application_token
|
14
|
+
github_access_token
|
15
|
+
github_api_endpoint
|
16
|
+
github_web_endpoint
|
17
|
+
)
|
18
|
+
|
19
|
+
attr_accessor(*CONFIGURATIONS_KEYS)
|
20
|
+
alias_method :repos, :repositories
|
21
|
+
|
22
|
+
def configure
|
23
|
+
yield self
|
24
|
+
end
|
25
|
+
|
26
|
+
def reset
|
27
|
+
@config_file = ENV['CONFIG_FILE']
|
28
|
+
@board_id = ENV['BOARD_ID']
|
29
|
+
@repositories = []
|
30
|
+
@milestones = []
|
31
|
+
@lists = []
|
32
|
+
@trello_application_key = ENV['TRELLO_APPLICATION_KEY']
|
33
|
+
@trello_application_token = ENV['TRELLO_APPLICATION_TOKEN']
|
34
|
+
@github_access_token = ENV['GITHUB_ACCESS_TOKEN']
|
35
|
+
@github_api_endpoint = Octokit.api_endpoint
|
36
|
+
@github_web_endpoint = Octokit.web_endpoint
|
37
|
+
end
|
38
|
+
|
39
|
+
def load!(config_file = nil)
|
40
|
+
config_file ||= @config_file
|
41
|
+
|
42
|
+
YAML.load_file(config_file).
|
43
|
+
symbolize_keys.
|
44
|
+
slice(*Trellohub::Configurable.keys).
|
45
|
+
each do |key, value|
|
46
|
+
if value.is_a?(Array)
|
47
|
+
value = value.map { |v| v.is_a?(Hash) ? Trellohub::List.new(v) : v }
|
48
|
+
end
|
49
|
+
instance_variable_set(:"@#{key}", value)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
|
53
|
+
def init_trell
|
54
|
+
Trell.configure do |c|
|
55
|
+
c.application_key = @trello_application_key
|
56
|
+
c.application_token = @trello_application_token
|
57
|
+
end
|
58
|
+
end
|
59
|
+
|
60
|
+
def init_octokit
|
61
|
+
Octokit.configure do |c|
|
62
|
+
c.access_token = @github_access_token
|
63
|
+
c.api_endpoint = @github_api_endpoint
|
64
|
+
c.web_endpoint = @github_web_endpoint
|
65
|
+
c.auto_paginate = true
|
66
|
+
end
|
67
|
+
end
|
68
|
+
|
69
|
+
def setup(config_file = nil)
|
70
|
+
reset
|
71
|
+
load!(config_file)
|
72
|
+
init_trell
|
73
|
+
init_octokit
|
74
|
+
self
|
75
|
+
end
|
76
|
+
|
77
|
+
def configurations
|
78
|
+
Hash[Trellohub::Configurable.keys.map { |key|
|
79
|
+
[key, instance_variable_get(:"@#{key}")]
|
80
|
+
}]
|
81
|
+
end
|
82
|
+
alias_method :conf, :configurations
|
83
|
+
|
84
|
+
def list_by(name: nil, default: nil, label: nil, labels: [])
|
85
|
+
case
|
86
|
+
when name
|
87
|
+
@lists.find { |list| list.name == name }
|
88
|
+
when default
|
89
|
+
@lists.find { |list| list.default == true }
|
90
|
+
when label
|
91
|
+
@lists.find { |list| list.issue_label == label }
|
92
|
+
else
|
93
|
+
labels.each { |label_name|
|
94
|
+
list = Trellohub.list_by(label: label_name)
|
95
|
+
return list if list
|
96
|
+
} unless labels.empty?
|
97
|
+
|
98
|
+
Trellohub.default_list
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
def default_list
|
103
|
+
Trellohub.list_by(default: true)
|
104
|
+
end
|
105
|
+
|
106
|
+
def list_names
|
107
|
+
@lists.map(&:name).compact
|
108
|
+
end
|
109
|
+
|
110
|
+
def issue_labels
|
111
|
+
@lists.map(&:issue_label).compact
|
112
|
+
end
|
113
|
+
|
114
|
+
def github_api_endpoint
|
115
|
+
File.join(@github_api_endpoint, '')
|
116
|
+
end
|
117
|
+
|
118
|
+
def github_web_endpoint
|
119
|
+
File.join(@github_web_endpoint, '')
|
120
|
+
end
|
121
|
+
|
122
|
+
class << self
|
123
|
+
def keys
|
124
|
+
@keys ||= CONFIGURATIONS_KEYS
|
125
|
+
end
|
126
|
+
end
|
127
|
+
end
|
128
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
class Hash
|
2
|
+
def slice(*keys)
|
3
|
+
keys.each_with_object(self.class.new) { |k, hash| hash[k] = self[k] if has_key?(k) }
|
4
|
+
end
|
5
|
+
|
6
|
+
def symbolize_keys
|
7
|
+
self.each_with_object(self.class.new) { |(k, v), hash|
|
8
|
+
v = v.symbolize_keys if v.class.name == self.class.name
|
9
|
+
hash[:"#{k}"] = v
|
10
|
+
}
|
11
|
+
end
|
12
|
+
|
13
|
+
def stringify_keys
|
14
|
+
self.each_with_object(self.class.new) { |(k, v), hash|
|
15
|
+
v = v.stringify_keys if v.is_a?(self.class)
|
16
|
+
hash["#{k}"] = v
|
17
|
+
}
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
require 'ostruct'
|
2
|
+
require 'trellohub/board'
|
3
|
+
require 'trellohub/lists'
|
4
|
+
|
5
|
+
module Trellohub
|
6
|
+
class List < OpenStruct
|
7
|
+
def id
|
8
|
+
@id ||= find_id
|
9
|
+
end
|
10
|
+
|
11
|
+
def find_id
|
12
|
+
current_list = self.class.find_by(name: name)
|
13
|
+
|
14
|
+
list = case
|
15
|
+
when current_list && current_list.closed
|
16
|
+
Trell.update_list(current_list.id, closed: false)
|
17
|
+
when current_list.nil?
|
18
|
+
Trell.create_list(name: name, idBoard: board_id)
|
19
|
+
else
|
20
|
+
current_list
|
21
|
+
end
|
22
|
+
|
23
|
+
list.id
|
24
|
+
end
|
25
|
+
|
26
|
+
def board_id
|
27
|
+
Trellohub::Board.id
|
28
|
+
end
|
29
|
+
|
30
|
+
class << self
|
31
|
+
include Lists
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
require 'trellohub/board'
|
2
|
+
|
3
|
+
module Trellohub
|
4
|
+
module Lists
|
5
|
+
def all
|
6
|
+
@all || self.all!
|
7
|
+
end
|
8
|
+
|
9
|
+
def all!
|
10
|
+
@all = Trell.lists(Trellohub::Board.id)
|
11
|
+
end
|
12
|
+
|
13
|
+
def find_by(name: nil)
|
14
|
+
self.all.find { |list| list.name == name }
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
@@ -0,0 +1,56 @@
|
|
1
|
+
module Trellohub
|
2
|
+
module Synchronal
|
3
|
+
SYNCHRONAL_KEYS = %i(
|
4
|
+
temporary_cards_by_issues
|
5
|
+
temporary_cards
|
6
|
+
)
|
7
|
+
|
8
|
+
attr_reader(*SYNCHRONAL_KEYS)
|
9
|
+
|
10
|
+
def synchronize
|
11
|
+
end
|
12
|
+
alias_method :sync, :synchronize
|
13
|
+
|
14
|
+
def issues(repo)
|
15
|
+
return Octokit.issues(repo) if Trellohub.milestones.empty?
|
16
|
+
|
17
|
+
milestones = Octokit.milestones(repo)
|
18
|
+
return [] if milestones.empty?
|
19
|
+
|
20
|
+
milestones.each.with_object([]) do |milestone, milestoned_issues|
|
21
|
+
temp_issues = Octokit.issues(repo, milestone: milestone.number)
|
22
|
+
milestoned_issues.concat(temp_issues) unless temp_issues.empty?
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def issues_cards
|
27
|
+
@issue_cards ||= Trellohub.repos.each.with_object([]) do |repo, cards|
|
28
|
+
cards.concat issues_cards_on(repo)
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def issues_cards_on(repo)
|
33
|
+
issues(repo).each.with_object([]) do |issue, cards|
|
34
|
+
temp_card = Trellohub::Card.new
|
35
|
+
temp_card.import_from_issue repo, issue
|
36
|
+
cards << temp_card
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
def trello_cards
|
41
|
+
@trello_cards ||= Trellohub::Card.all.
|
42
|
+
each.with_object([]) do |card, cards|
|
43
|
+
temp_card = Trellohub::Card.new
|
44
|
+
temp_card.import card
|
45
|
+
cards << temp_card
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
# def import_from_github_issues
|
50
|
+
# issued_cards(repo, 'open').each do |card|
|
51
|
+
# Trell.create_card card.slice(*valid_card_attributes)
|
52
|
+
# end
|
53
|
+
# end
|
54
|
+
# alias_method :import, :import_from_github_issues
|
55
|
+
end
|
56
|
+
end
|
data/trellohub.gemspec
ADDED
@@ -0,0 +1,26 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'trellohub/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = 'trellohub'
|
8
|
+
spec.version = Trellohub::VERSION
|
9
|
+
spec.authors = ['linyows']
|
10
|
+
spec.email = ['linyows@gmail.com']
|
11
|
+
spec.summary = %q{Trellohub is uniform task management by synchronizing the github issues and trello cards.}
|
12
|
+
spec.description = %q{Trellohub is uniform task management by synchronizing the github issues and trello cards.}
|
13
|
+
spec.homepage = 'https://github.com/linyows/trellohub'
|
14
|
+
spec.license = 'MIT'
|
15
|
+
|
16
|
+
spec.files = `git ls-files -z`.split("\x0")
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ['lib']
|
20
|
+
|
21
|
+
spec.add_dependency 'octokit'
|
22
|
+
spec.add_dependency 'trell'
|
23
|
+
|
24
|
+
spec.add_development_dependency 'bundler', '~> 1.5'
|
25
|
+
spec.add_development_dependency 'rake'
|
26
|
+
end
|
metadata
ADDED
@@ -0,0 +1,120 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: trellohub
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- linyows
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2014-03-18 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: octokit
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: trell
|
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.5'
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.5'
|
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
|
+
description: Trellohub is uniform task management by synchronizing the github issues
|
70
|
+
and trello cards.
|
71
|
+
email:
|
72
|
+
- linyows@gmail.com
|
73
|
+
executables: []
|
74
|
+
extensions: []
|
75
|
+
extra_rdoc_files: []
|
76
|
+
files:
|
77
|
+
- ".gitignore"
|
78
|
+
- Gemfile
|
79
|
+
- LICENSE.txt
|
80
|
+
- README.md
|
81
|
+
- Rakefile
|
82
|
+
- boards/example.yml
|
83
|
+
- lib/trellohub.rb
|
84
|
+
- lib/trellohub/board.rb
|
85
|
+
- lib/trellohub/card.rb
|
86
|
+
- lib/trellohub/cards.rb
|
87
|
+
- lib/trellohub/configurable.rb
|
88
|
+
- lib/trellohub/core_ext/hash.rb
|
89
|
+
- lib/trellohub/list.rb
|
90
|
+
- lib/trellohub/lists.rb
|
91
|
+
- lib/trellohub/member.rb
|
92
|
+
- lib/trellohub/synchronal.rb
|
93
|
+
- lib/trellohub/version.rb
|
94
|
+
- trellohub.gemspec
|
95
|
+
homepage: https://github.com/linyows/trellohub
|
96
|
+
licenses:
|
97
|
+
- MIT
|
98
|
+
metadata: {}
|
99
|
+
post_install_message:
|
100
|
+
rdoc_options: []
|
101
|
+
require_paths:
|
102
|
+
- lib
|
103
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
104
|
+
requirements:
|
105
|
+
- - ">="
|
106
|
+
- !ruby/object:Gem::Version
|
107
|
+
version: '0'
|
108
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
109
|
+
requirements:
|
110
|
+
- - ">="
|
111
|
+
- !ruby/object:Gem::Version
|
112
|
+
version: '0'
|
113
|
+
requirements: []
|
114
|
+
rubyforge_project:
|
115
|
+
rubygems_version: 2.2.0
|
116
|
+
signing_key:
|
117
|
+
specification_version: 4
|
118
|
+
summary: Trellohub is uniform task management by synchronizing the github issues and
|
119
|
+
trello cards.
|
120
|
+
test_files: []
|