github-trello-cl 0.0.3 → 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 +4 -4
- data/Gemfile.lock +6 -8
- data/lib/trello.rb +59 -32
- data/lib/trello/api/all.rb +3 -0
- data/lib/trello/api/base.rb +19 -0
- data/lib/trello/api/integration.rb +17 -0
- data/lib/trello/api/trello.rb +10 -0
- data/lib/trello/constants.rb +1 -9
- data/lib/trello/core_ext/string.rb +9 -0
- data/lib/trello/helpers.rb +45 -100
- data/lib/trello/trello_config.rb +41 -0
- data/trello.gemspec +6 -7
- metadata +32 -40
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 8a56f67ba2029ffa78fa25827e72ddb6d3e85052
|
4
|
+
data.tar.gz: 6e5987510f3bd05ca64e1f2517c605e3d8a8fcc3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 79a3faa5ecdc6f4e91f8ec906e29d99f719928e2743496b87e546868bdb4c2ffa82f8e659d470bb43853fd6bf425e680a3d30ffa13d41ed1b5fc7e774eb44f4e
|
7
|
+
data.tar.gz: 50d7f7ada173a8f88583cad47e67396e9ce4cc18e563f44ebb87bb315795faf02e605bae4756be7c28922970576c3469c49d3ae2cbf330ee151d9e656ed81203
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,11 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
trello (0.0.
|
5
|
-
commander
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
recursive-open-struct
|
4
|
+
github-trello-cl (0.0.3)
|
5
|
+
commander (~> 4.3.0)
|
6
|
+
httparty (~> 0.13.3)
|
7
|
+
launchy (~> 2.4.3)
|
8
|
+
recursive-open-struct (>= 0.5.0)
|
10
9
|
|
11
10
|
GEM
|
12
11
|
remote: https://rubygems.org/
|
@@ -14,7 +13,6 @@ GEM
|
|
14
13
|
addressable (2.3.7)
|
15
14
|
commander (4.3.0)
|
16
15
|
highline (~> 1.6.11)
|
17
|
-
configuration (1.3.4)
|
18
16
|
highline (1.6.21)
|
19
17
|
httparty (0.13.3)
|
20
18
|
json (~> 1.8)
|
@@ -31,5 +29,5 @@ PLATFORMS
|
|
31
29
|
|
32
30
|
DEPENDENCIES
|
33
31
|
bundler (~> 1.6)
|
32
|
+
github-trello-cl!
|
34
33
|
rake (~> 10.3.1)
|
35
|
-
trello!
|
data/lib/trello.rb
CHANGED
@@ -4,10 +4,15 @@ require 'launchy'
|
|
4
4
|
require 'recursive-open-struct'
|
5
5
|
require 'trello/constants'
|
6
6
|
require 'trello/helpers'
|
7
|
+
require 'trello/trello_config'
|
8
|
+
require 'trello/api/all'
|
9
|
+
require 'trello/core_ext/string'
|
7
10
|
|
8
11
|
module Trello
|
9
12
|
class Main
|
10
13
|
include Commander::Methods
|
14
|
+
include Helpers
|
15
|
+
include TrelloConfig
|
11
16
|
|
12
17
|
def run
|
13
18
|
program :name, "Trello"
|
@@ -17,8 +22,13 @@ module Trello
|
|
17
22
|
command :init do |c|
|
18
23
|
c.syntax = 'trello init'
|
19
24
|
c.description = 'Generates a default config file for the Trello CLI so it can be used in this directory.'
|
25
|
+
c.option '--force', 'Overwrites an existing config file.'
|
20
26
|
c.action do |args, options|
|
21
|
-
|
27
|
+
if File.exist? CONFIG_FILE_NAME && !options.force
|
28
|
+
abort "Config file already exists. Run 'trello init -f' to overwrite it."
|
29
|
+
end
|
30
|
+
|
31
|
+
FileUtils.cp(File.join(root, '.trelloconfig.default'), "./#{CONFIG_FILE_NAME}")
|
22
32
|
say "Created .trelloconfig in this directory."
|
23
33
|
end
|
24
34
|
end
|
@@ -30,27 +40,26 @@ module Trello
|
|
30
40
|
trello_config = {base_url: "https://api.trello.com/1/"}
|
31
41
|
trello_config[:api_key] = ask("API key?")
|
32
42
|
|
33
|
-
url = "https://trello.com/1/authorize?key=#{trello_config[:api_key]}&name=Your+Application&expiration=never&response_type=token&scope=read,write"
|
34
43
|
puts "Requesting access to this application..."
|
35
44
|
sleep(0.5)
|
36
|
-
Launchy.open(
|
45
|
+
Launchy.open("https://trello.com/1/authorize?key=#{trello_config[:api_key]}&name=Your+Application&expiration=never&response_type=token&scope=read,write")
|
37
46
|
sleep(0.5)
|
38
47
|
trello_config[:token] = ask("What was the token?")
|
39
48
|
|
40
|
-
trello_config[:board_id] =
|
41
|
-
result =
|
49
|
+
trello_config[:board_id] = prompt_from_options("Which board should the API reference? (ID)") do
|
50
|
+
result = Api::Trello.make_call(:get, "members/me", key: trello_config[:api_key], token: trello_config[:token], boards: 'open')['boards']
|
42
51
|
|
43
52
|
result.map do |board|
|
44
53
|
{id: board['id'], name: board['name']}
|
45
54
|
end
|
46
55
|
end
|
47
56
|
|
48
|
-
lists_resp =
|
57
|
+
lists_resp = Api::Trello.make_call(:get, "boards/#{trello_config[:board_id]}", {key: trello_config[:api_key], token: trello_config[:token], lists: 'open'})
|
49
58
|
lists = lists_resp['lists'].map do |list|
|
50
59
|
{id: list['id'], name: list['name']}
|
51
60
|
end
|
52
61
|
|
53
|
-
trello_config[:pending_columns] =
|
62
|
+
trello_config[:pending_columns] = prompt_for_list_from_options("Which lists hold pending tasks? (ID,ID)") { lists }
|
54
63
|
|
55
64
|
{
|
56
65
|
in_development_column: "Which column represents tasks in development? (ID)",
|
@@ -58,7 +67,7 @@ module Trello
|
|
58
67
|
approved_merged_column: "Which column represents tasks approved/merged to staging? (ID)",
|
59
68
|
deployed_column: "Which column represents tasks deployed to production? (ID)"
|
60
69
|
}.each do |field, message|
|
61
|
-
trello_config[field] =
|
70
|
+
trello_config[field] = prompt_from_options(message) { lists }
|
62
71
|
end
|
63
72
|
|
64
73
|
config_file = {
|
@@ -67,7 +76,7 @@ module Trello
|
|
67
76
|
|
68
77
|
puts "Saving to config.json..."
|
69
78
|
|
70
|
-
|
79
|
+
write_json_to_file(config_file, './config.json')
|
71
80
|
end
|
72
81
|
end
|
73
82
|
|
@@ -75,31 +84,51 @@ module Trello
|
|
75
84
|
c.syntax = 'trello config --<field> value'
|
76
85
|
c.description = 'Configure options for the integration'
|
77
86
|
c.option '--user USERNAME', 'Configures the user\'s Trello username (required)'
|
78
|
-
c.option '--
|
87
|
+
c.option '--key APIKEY', 'Configures the user\'s API key for access to the API backend'
|
88
|
+
c.option '--url PATH', 'Configures the path to this trello CL\'s API backend'
|
79
89
|
c.action do |args, options|
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
90
|
+
unless [options.user, options.url, options.key].all?(&:nil?)
|
91
|
+
if options.user
|
92
|
+
response = Api::Trello.make_call(:get, "members/#{options.user}", {fields: :none})
|
93
|
+
config.user = response['id']
|
94
|
+
end
|
95
|
+
|
96
|
+
if options.url
|
97
|
+
config.url = format_api_url(options.url)
|
98
|
+
end
|
85
99
|
|
86
|
-
|
100
|
+
if options.key
|
101
|
+
config.api_key = options.key
|
102
|
+
end
|
87
103
|
|
88
|
-
|
104
|
+
puts "Config updated."
|
105
|
+
save_config
|
106
|
+
else
|
107
|
+
puts config.to_hash.to_yaml
|
108
|
+
end
|
89
109
|
end
|
90
110
|
end
|
91
111
|
|
92
112
|
command :tasks do |c|
|
93
113
|
c.syntax = 'trello tasks [status]'
|
94
|
-
c.description = 'Shows tasks assigned to the configured user. If status is provided, shows tasks with the given status'
|
114
|
+
c.description = 'Shows tasks assigned to the configured user. If status is provided, shows tasks with the given status. Available statuses are pending, in_development, in_review, and approved.'
|
95
115
|
c.option '--all', 'Shows all tasks with the provided status, regardless of assignee'
|
96
116
|
c.action do |args, options|
|
97
|
-
user = options.all ? nil : Helpers::config['user']
|
98
|
-
|
99
117
|
status = args[0] || 'pending'
|
100
118
|
|
101
|
-
|
102
|
-
|
119
|
+
unless options.all
|
120
|
+
user_check
|
121
|
+
end
|
122
|
+
|
123
|
+
user = options.all ? nil : config['user']
|
124
|
+
|
125
|
+
response = Api::Integration.make_call(:get, "cards/#{status}", {})
|
126
|
+
|
127
|
+
all_cards = response.map{|list| list['cards']}.flatten
|
128
|
+
|
129
|
+
if (all_cards.length == 0) || (user && all_cards.select{|card| card['idMembers'].include?(user)}.length == 0)
|
130
|
+
abort "Found no cards."
|
131
|
+
end
|
103
132
|
|
104
133
|
enable_paging
|
105
134
|
response.each do |list|
|
@@ -126,21 +155,19 @@ module Trello
|
|
126
155
|
c.description = "Marks the specified card as 'in development' on Trello and associates the specified branch with the card."
|
127
156
|
c.option '--no-branch', 'Starts the card without creating a new branch.'
|
128
157
|
c.action do |args, options|
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
end
|
158
|
+
card_number, branch = args
|
159
|
+
|
160
|
+
user_check
|
133
161
|
|
134
|
-
|
162
|
+
user = config['user']
|
163
|
+
|
164
|
+
unless branch || options['no-branch']
|
135
165
|
abort 'You need a branch name. To start this card without a branch, set the --no-branch flag (-n).'
|
136
166
|
end
|
137
167
|
|
138
|
-
|
139
|
-
|
140
|
-
response = Helpers::make_integration_api_call(:post, "cards/#{args[0]}/start", {user: user, branch: branch},
|
141
|
-
not_found: "Could not find card #{args[0]}.")
|
168
|
+
response = Api::Integration.make_call(:post, "cards/#{card_number}/start", {user: user, branch: branch})
|
142
169
|
|
143
|
-
say
|
170
|
+
say response.parsed_response
|
144
171
|
end
|
145
172
|
end
|
146
173
|
|
@@ -0,0 +1,19 @@
|
|
1
|
+
require 'httparty'
|
2
|
+
|
3
|
+
module Trello
|
4
|
+
module Api
|
5
|
+
class Base
|
6
|
+
class << self
|
7
|
+
def make_call(method, url, body, headers)
|
8
|
+
result = HTTParty.public_send(method, url, body: body, headers: headers)
|
9
|
+
|
10
|
+
unless result.success?
|
11
|
+
abort "#{result.code} error: #{result.body}"
|
12
|
+
end
|
13
|
+
|
14
|
+
result
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,17 @@
|
|
1
|
+
module Trello
|
2
|
+
module Api
|
3
|
+
class Integration < Base
|
4
|
+
class << self
|
5
|
+
include TrelloConfig
|
6
|
+
def default_headers
|
7
|
+
{'Authorization' => "token #{config.api_key}"}
|
8
|
+
end
|
9
|
+
|
10
|
+
def make_call(method, endpoint, body = {}, headers = {})
|
11
|
+
param_check 'url', "You need to specify where your API backend is hosted with 'trello config --url <API URL>'."
|
12
|
+
super(method, "#{config['url']}#{endpoint}", body, headers.merge(default_headers))
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
data/lib/trello/constants.rb
CHANGED
@@ -1,9 +1 @@
|
|
1
|
-
CONFIG_FILE_NAME = '.trelloconfig'
|
2
|
-
# API_BASE_PATH = "https://trello.bookbub.com/api/"
|
3
|
-
API_BASE_PATH = "http://trellobub.herokuapp.com/"
|
4
|
-
DEFAULT_ERROR_MESSAGES = {
|
5
|
-
bad_request: "Invalid request.",
|
6
|
-
auth: "Failed to authenticate.",
|
7
|
-
not_found: "Couldn't find the site.",
|
8
|
-
server_error: "Something broke in the server."
|
9
|
-
}
|
1
|
+
CONFIG_FILE_NAME = '.trelloconfig'
|
data/lib/trello/helpers.rb
CHANGED
@@ -1,119 +1,64 @@
|
|
1
1
|
module Trello
|
2
2
|
module Helpers
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
end
|
7
|
-
|
8
|
-
def make_api_call(method, url, body, errors = {})
|
9
|
-
api_errors = DEFAULT_ERROR_MESSAGES.merge(errors)
|
10
|
-
result = HTTParty.public_send(method, url, body: body)
|
11
|
-
|
12
|
-
unless result.success?
|
13
|
-
bad_response_msg = case result.code
|
14
|
-
when 400
|
15
|
-
api_errors[:bad_request]
|
16
|
-
when 401
|
17
|
-
api_errors[:auth]
|
18
|
-
when 404
|
19
|
-
api_errors[:not_found]
|
20
|
-
when 500
|
21
|
-
api_errors[:server_error]
|
22
|
-
else
|
23
|
-
"No message for error #{result.code}, message returned was #{result.inspect}"
|
24
|
-
end
|
25
|
-
|
26
|
-
abort bad_response_msg
|
27
|
-
end
|
28
|
-
|
29
|
-
result
|
30
|
-
end
|
31
|
-
|
32
|
-
def make_trello_api_call(method, endpoint, body, errors = {})
|
33
|
-
trello_errors = {
|
34
|
-
bad_request: "Authentication failed with token #{body[:token]}",
|
35
|
-
not_found: "Could not find Trello server - are you online?",
|
36
|
-
server_error: "Something blew up."
|
37
|
-
}.merge(errors)
|
38
|
-
|
39
|
-
make_api_call(method, "https://api.trello.com/1/#{endpoint}", body, trello_errors)
|
40
|
-
end
|
3
|
+
def root
|
4
|
+
File.dirname __dir__
|
5
|
+
end
|
41
6
|
|
42
|
-
|
43
|
-
|
7
|
+
def format_api_url(url)
|
8
|
+
url = 'http://' + url unless url.start_with?('http://')
|
9
|
+
url += '/' unless url.end_with?('/')
|
10
|
+
begin
|
11
|
+
# ensure it's a valid url before returning
|
12
|
+
URI.parse(url).to_s
|
13
|
+
rescue
|
14
|
+
abort "#{url} is not a valid URL."
|
44
15
|
end
|
16
|
+
end
|
45
17
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
rescue ArgumentError
|
50
|
-
nil
|
51
|
-
end
|
52
|
-
end
|
18
|
+
def user_check
|
19
|
+
param_check('user', "No user defined! Specify a user with trello config --user <username>.")
|
20
|
+
end
|
53
21
|
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
end
|
22
|
+
def prompt_for_list_from_options(prompt_message)
|
23
|
+
var = nil
|
24
|
+
options = yield
|
25
|
+
options.each_with_index do |opt, i|
|
26
|
+
puts "#{i}: #{opt[:name]}"
|
60
27
|
end
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
28
|
+
until var
|
29
|
+
response = ask(prompt_message).split(',').map(&:to_i)
|
30
|
+
if response.all?{|id| id && options[id] }
|
31
|
+
var = options.values_at(*response).map{|option| option[:id]}
|
32
|
+
else
|
33
|
+
bad_options = response.select{|id| !(id && options[id])}
|
34
|
+
puts "Invalid options #{bad_options.join(', ')}. Please give numbers between 0 and #{options.length} separated by commas."
|
65
35
|
end
|
66
36
|
end
|
67
37
|
|
68
|
-
|
69
|
-
|
70
|
-
end
|
38
|
+
var
|
39
|
+
end
|
71
40
|
|
72
|
-
|
73
|
-
|
74
|
-
|
41
|
+
def prompt_from_options(prompt_message)
|
42
|
+
var = nil
|
43
|
+
options = yield
|
44
|
+
options.each_with_index do |opt, i|
|
45
|
+
puts "#{i}: #{opt[:name]}"
|
75
46
|
end
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
end
|
83
|
-
until var
|
84
|
-
response = ask(prompt_message).split(',').map{|resp| to_i(resp)}
|
85
|
-
if response.all?{|id| id && options[id] }
|
86
|
-
var = options.values_at(*response).map{|option| option[:id]}
|
87
|
-
else
|
88
|
-
puts "Invalid array indices"
|
89
|
-
end
|
47
|
+
until var
|
48
|
+
response = to_i(ask(prompt_message))
|
49
|
+
if response && options[response]
|
50
|
+
var = options[response][:id]
|
51
|
+
else
|
52
|
+
say "Invalid option - please give a number between 0 and #{options.length}."
|
90
53
|
end
|
91
|
-
|
92
|
-
var
|
93
54
|
end
|
94
55
|
|
95
|
-
|
96
|
-
|
97
|
-
options = yield
|
98
|
-
options.each_with_index do |opt, i|
|
99
|
-
puts "#{i}: #{opt[:name]}"
|
100
|
-
end
|
101
|
-
until var
|
102
|
-
response = to_i(ask(prompt_message))
|
103
|
-
if response && options[response]
|
104
|
-
var = options[response][:id]
|
105
|
-
else
|
106
|
-
say "Invalid array index"
|
107
|
-
end
|
108
|
-
end
|
109
|
-
|
110
|
-
var
|
111
|
-
end
|
56
|
+
var
|
57
|
+
end
|
112
58
|
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
end
|
59
|
+
def write_json_to_file(hash, filename)
|
60
|
+
puts hash
|
61
|
+
File.open(filename, 'w') {|f| f.write JSON.pretty_generate(hash)}
|
117
62
|
end
|
118
63
|
end
|
119
64
|
end
|
@@ -0,0 +1,41 @@
|
|
1
|
+
module Trello
|
2
|
+
module TrelloConfig
|
3
|
+
def config
|
4
|
+
@config ||= load_config
|
5
|
+
end
|
6
|
+
|
7
|
+
def save_config
|
8
|
+
# need to fetch the config first to make sure its directory is properly defined
|
9
|
+
current_config = config
|
10
|
+
File.open("#{@config_dir}/#{CONFIG_FILE_NAME}" || CONFIG_FILE_NAME, 'w') {|f| f.write current_config.to_hash.to_yaml }
|
11
|
+
end
|
12
|
+
|
13
|
+
def param_check(field, message)
|
14
|
+
unless config[field]
|
15
|
+
abort message
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
def __config_dir__
|
20
|
+
@config_dir
|
21
|
+
end
|
22
|
+
|
23
|
+
protected
|
24
|
+
|
25
|
+
def load_config
|
26
|
+
begin
|
27
|
+
config = RecursiveOpenStruct.new(YAML.load_file("./#{CONFIG_FILE_NAME}"))
|
28
|
+
@config_dir = Dir.pwd
|
29
|
+
return config
|
30
|
+
rescue
|
31
|
+
if Dir.pwd == '/'
|
32
|
+
abort "No #{CONFIG_FILE_NAME} file found in this directory tree. Run 'trello init' to generate one."
|
33
|
+
else
|
34
|
+
Dir.chdir('..') do
|
35
|
+
return load_config
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
data/trello.gemspec
CHANGED
@@ -2,7 +2,7 @@ $LOAD_PATH << File.expand_path('../lib', __FILE__)
|
|
2
2
|
|
3
3
|
Gem::Specification.new do |s|
|
4
4
|
s.name = 'github-trello-cl'
|
5
|
-
s.version = '0.0
|
5
|
+
s.version = '0.1.0'
|
6
6
|
s.date = '2015-02-23'
|
7
7
|
s.summary = "Interface with trello"
|
8
8
|
s.description = "A tool to allow people using Trello as a workflow to interface with it via command line access to an API"
|
@@ -11,14 +11,13 @@ Gem::Specification.new do |s|
|
|
11
11
|
s.files = `git ls-files -z`.split("\x0")
|
12
12
|
s.require_paths = ["lib"]
|
13
13
|
s.executables = ["trello"]
|
14
|
-
s.homepage = 'http://rubygems.org/gems/trello'
|
14
|
+
s.homepage = 'http://rubygems.org/gems/github-trello-cl'
|
15
15
|
|
16
16
|
s.add_development_dependency 'bundler', '~> 1.6'
|
17
17
|
s.add_development_dependency 'rake', '~> 10.3.1'
|
18
18
|
|
19
|
-
s.add_runtime_dependency 'commander'
|
20
|
-
s.add_runtime_dependency 'httparty'
|
21
|
-
s.add_runtime_dependency '
|
22
|
-
s.add_runtime_dependency '
|
23
|
-
s.add_runtime_dependency 'recursive-open-struct'
|
19
|
+
s.add_runtime_dependency 'commander', '~> 4.3.0'
|
20
|
+
s.add_runtime_dependency 'httparty', '~> 0.13.3'
|
21
|
+
s.add_runtime_dependency 'launchy', '~> 2.4.3'
|
22
|
+
s.add_runtime_dependency 'recursive-open-struct', '>= 0.5.0'
|
24
23
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: github-trello-cl
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Pletcher
|
@@ -14,100 +14,86 @@ dependencies:
|
|
14
14
|
name: bundler
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - ~>
|
17
|
+
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
19
|
version: '1.6'
|
20
20
|
type: :development
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
|
-
- - ~>
|
24
|
+
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '1.6'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
|
-
- - ~>
|
31
|
+
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
33
|
version: 10.3.1
|
34
34
|
type: :development
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
|
-
- - ~>
|
38
|
+
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: 10.3.1
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: commander
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
|
-
- -
|
45
|
+
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 4.3.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
|
-
- -
|
52
|
+
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 4.3.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: httparty
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
58
58
|
requirements:
|
59
|
-
- -
|
59
|
+
- - "~>"
|
60
60
|
- !ruby/object:Gem::Version
|
61
|
-
version:
|
61
|
+
version: 0.13.3
|
62
62
|
type: :runtime
|
63
63
|
prerelease: false
|
64
64
|
version_requirements: !ruby/object:Gem::Requirement
|
65
65
|
requirements:
|
66
|
-
- -
|
66
|
+
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
|
-
version:
|
69
|
-
- !ruby/object:Gem::Dependency
|
70
|
-
name: configuration
|
71
|
-
requirement: !ruby/object:Gem::Requirement
|
72
|
-
requirements:
|
73
|
-
- - '>='
|
74
|
-
- !ruby/object:Gem::Version
|
75
|
-
version: '0'
|
76
|
-
type: :runtime
|
77
|
-
prerelease: false
|
78
|
-
version_requirements: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
- - '>='
|
81
|
-
- !ruby/object:Gem::Version
|
82
|
-
version: '0'
|
68
|
+
version: 0.13.3
|
83
69
|
- !ruby/object:Gem::Dependency
|
84
70
|
name: launchy
|
85
71
|
requirement: !ruby/object:Gem::Requirement
|
86
72
|
requirements:
|
87
|
-
- -
|
73
|
+
- - "~>"
|
88
74
|
- !ruby/object:Gem::Version
|
89
|
-
version:
|
75
|
+
version: 2.4.3
|
90
76
|
type: :runtime
|
91
77
|
prerelease: false
|
92
78
|
version_requirements: !ruby/object:Gem::Requirement
|
93
79
|
requirements:
|
94
|
-
- -
|
80
|
+
- - "~>"
|
95
81
|
- !ruby/object:Gem::Version
|
96
|
-
version:
|
82
|
+
version: 2.4.3
|
97
83
|
- !ruby/object:Gem::Dependency
|
98
84
|
name: recursive-open-struct
|
99
85
|
requirement: !ruby/object:Gem::Requirement
|
100
86
|
requirements:
|
101
|
-
- -
|
87
|
+
- - ">="
|
102
88
|
- !ruby/object:Gem::Version
|
103
|
-
version:
|
89
|
+
version: 0.5.0
|
104
90
|
type: :runtime
|
105
91
|
prerelease: false
|
106
92
|
version_requirements: !ruby/object:Gem::Requirement
|
107
93
|
requirements:
|
108
|
-
- -
|
94
|
+
- - ">="
|
109
95
|
- !ruby/object:Gem::Version
|
110
|
-
version:
|
96
|
+
version: 0.5.0
|
111
97
|
description: A tool to allow people using Trello as a workflow to interface with it
|
112
98
|
via command line access to an API
|
113
99
|
email: steve@steve-pletcher.com
|
@@ -116,7 +102,7 @@ executables:
|
|
116
102
|
extensions: []
|
117
103
|
extra_rdoc_files: []
|
118
104
|
files:
|
119
|
-
- .gitignore
|
105
|
+
- ".gitignore"
|
120
106
|
- Gemfile
|
121
107
|
- Gemfile.lock
|
122
108
|
- README.md
|
@@ -124,10 +110,16 @@ files:
|
|
124
110
|
- bin/trello
|
125
111
|
- lib/.trelloconfig.default
|
126
112
|
- lib/trello.rb
|
113
|
+
- lib/trello/api/all.rb
|
114
|
+
- lib/trello/api/base.rb
|
115
|
+
- lib/trello/api/integration.rb
|
116
|
+
- lib/trello/api/trello.rb
|
127
117
|
- lib/trello/constants.rb
|
118
|
+
- lib/trello/core_ext/string.rb
|
128
119
|
- lib/trello/helpers.rb
|
120
|
+
- lib/trello/trello_config.rb
|
129
121
|
- trello.gemspec
|
130
|
-
homepage: http://rubygems.org/gems/trello
|
122
|
+
homepage: http://rubygems.org/gems/github-trello-cl
|
131
123
|
licenses: []
|
132
124
|
metadata: {}
|
133
125
|
post_install_message:
|
@@ -136,17 +128,17 @@ require_paths:
|
|
136
128
|
- lib
|
137
129
|
required_ruby_version: !ruby/object:Gem::Requirement
|
138
130
|
requirements:
|
139
|
-
- -
|
131
|
+
- - ">="
|
140
132
|
- !ruby/object:Gem::Version
|
141
133
|
version: '0'
|
142
134
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
143
135
|
requirements:
|
144
|
-
- -
|
136
|
+
- - ">="
|
145
137
|
- !ruby/object:Gem::Version
|
146
138
|
version: '0'
|
147
139
|
requirements: []
|
148
140
|
rubyforge_project:
|
149
|
-
rubygems_version: 2.
|
141
|
+
rubygems_version: 2.2.2
|
150
142
|
signing_key:
|
151
143
|
specification_version: 4
|
152
144
|
summary: Interface with trello
|