taskmapper-cli 0.0.4 → 0.0.5
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.
- data/lib/tm.rb +21 -21
- data/lib/tm/commands/command.rb +11 -0
- data/lib/tm/commands/create_comment.rb +18 -0
- data/lib/tm/commands/create_task.rb +15 -0
- data/lib/tm/commands/first_project.rb +12 -0
- data/lib/tm/commands/first_task.rb +13 -0
- data/lib/tm/commands/generate_provider.rb +224 -0
- data/lib/tm/commands/last_project.rb +12 -0
- data/lib/tm/commands/last_task.rb +13 -0
- data/lib/tm/commands/list_all_comments_for_task.rb +16 -0
- data/lib/tm/commands/list_all_projects.rb +14 -0
- data/lib/tm/commands/list_all_tasks.rb +15 -0
- data/lib/tm/commands/single_project.rb +12 -0
- data/lib/tm/commands/single_task.rb +13 -0
- data/lib/tm/exceptions.rb +4 -0
- data/lib/tm/format/csv.rb +11 -0
- data/lib/tm/format/format.rb +20 -0
- data/lib/tm/format/pretty.rb +16 -0
- data/lib/tm/format/table.rb +22 -0
- data/lib/tm/provider_handler.rb +33 -0
- data/lib/tm/string_extensions.rb +12 -0
- data/lib/tm/version.rb +1 -1
- metadata +59 -7
data/lib/tm.rb
CHANGED
@@ -1,33 +1,33 @@
|
|
1
|
-
|
1
|
+
require_relative 'tm/version.rb'
|
2
2
|
|
3
|
-
|
3
|
+
require_relative 'tm/string_extensions'
|
4
4
|
|
5
5
|
# Taskmapper provider handler
|
6
|
-
|
6
|
+
require_relative 'tm/provider_handler'
|
7
7
|
|
8
8
|
# Commands
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
9
|
+
require_relative 'tm/commands/command'
|
10
|
+
require_relative 'tm/commands/list_all_projects'
|
11
|
+
require_relative 'tm/commands/first_project'
|
12
|
+
require_relative 'tm/commands/last_project'
|
13
|
+
require_relative 'tm/commands/single_project'
|
14
|
+
require_relative 'tm/commands/list_all_tasks'
|
15
|
+
require_relative 'tm/commands/first_task'
|
16
|
+
require_relative 'tm/commands/last_task'
|
17
|
+
require_relative 'tm/commands/single_task'
|
18
|
+
require_relative 'tm/commands/create_task'
|
19
|
+
require_relative 'tm/commands/create_comment'
|
20
|
+
require_relative 'tm/commands/generate_provider'
|
21
21
|
|
22
22
|
# Formatters
|
23
|
-
|
23
|
+
require_relative 'tm/commands/list_all_comments_for_task'
|
24
24
|
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
25
|
+
require_relative 'tm/format/format'
|
26
|
+
require_relative 'tm/format/csv'
|
27
|
+
require_relative 'tm/format/pretty'
|
28
|
+
require_relative 'tm/format/table'
|
29
29
|
|
30
|
-
|
30
|
+
require_relative 'tm/exceptions'
|
31
31
|
|
32
32
|
module TM
|
33
33
|
|
@@ -0,0 +1,11 @@
|
|
1
|
+
module TM
|
2
|
+
module Commands
|
3
|
+
class Command
|
4
|
+
def initialize(provider_handler, formatter, attributes = '')
|
5
|
+
@provider_handler = provider_handler
|
6
|
+
@formatter = formatter
|
7
|
+
@attributes = attributes.extend(TM::StringExtensions).to_hash
|
8
|
+
end
|
9
|
+
end
|
10
|
+
end
|
11
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
module TM
|
2
|
+
module Commands
|
3
|
+
class CreateComment < Command
|
4
|
+
|
5
|
+
def execute(task_attribute = '', comment_attribute = '')
|
6
|
+
project = @provider_handler.taskmapper.project(@attributes)
|
7
|
+
task_attribute = task_attribute.extend(TM::StringExtensions).to_hash
|
8
|
+
ticket = project.tickets(task_attribute).first
|
9
|
+
comment_attribute = comment_attribute.extend(TM::StringExtensions).to_hash
|
10
|
+
comment = ticket.comment! comment_attribute
|
11
|
+
@formatter.before(comment)
|
12
|
+
@formatter.format(comment)
|
13
|
+
@formatter.after
|
14
|
+
end
|
15
|
+
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module TM
|
2
|
+
module Commands
|
3
|
+
class CreateTask < Command
|
4
|
+
|
5
|
+
def execute(task_attributes = '')
|
6
|
+
project = @provider_handler.taskmapper.project(@attributes)
|
7
|
+
task_attributes = task_attributes.extend(TM::StringExtensions).to_hash
|
8
|
+
task= project.ticket! task_attributes
|
9
|
+
@formatter.before(task)
|
10
|
+
@formatter.format(task)
|
11
|
+
@formatter.after
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module TM
|
2
|
+
module Commands
|
3
|
+
class FirstTask < Command
|
4
|
+
def execute(search_attrs = '')
|
5
|
+
project = @provider_handler.taskmapper.project(@attributes)
|
6
|
+
ticket = project.tickets.first
|
7
|
+
@formatter.before(ticket)
|
8
|
+
@formatter.format(ticket)
|
9
|
+
@formatter.after
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,224 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
module TM
|
4
|
+
module Commands
|
5
|
+
class GenerateProvider
|
6
|
+
class << self
|
7
|
+
def create(provider_name)
|
8
|
+
short_name = provider_name
|
9
|
+
provider_name = "taskmapper-#{provider_name}"
|
10
|
+
FileUtils.mkdir_p "#{provider_name}/lib/provider"
|
11
|
+
create_readme(provider_name)
|
12
|
+
create_gemfile(provider_name)
|
13
|
+
create_version_file(provider_name, short_name)
|
14
|
+
create_rakefile(provider_name)
|
15
|
+
create_lib_file(provider_name, short_name)
|
16
|
+
create_provider_file(provider_name, short_name)
|
17
|
+
create_project_file(provider_name, short_name)
|
18
|
+
create_ticket_file(provider_name, short_name)
|
19
|
+
create_comment_file(provider_name, short_name)
|
20
|
+
create_gemspec(provider_name, short_name)
|
21
|
+
end
|
22
|
+
|
23
|
+
private
|
24
|
+
def provider_lib_path(provider_name)
|
25
|
+
"#{provider_name}/lib"
|
26
|
+
end
|
27
|
+
|
28
|
+
def create_gemfile(provider_name)
|
29
|
+
File.open("#{provider_name}/Gemfile", "w") do |file|
|
30
|
+
file.puts <<EOS
|
31
|
+
source 'https://rubygems.org'
|
32
|
+
gemspec
|
33
|
+
EOS
|
34
|
+
end
|
35
|
+
puts "Created #{provider_name}/Gemfile"
|
36
|
+
end
|
37
|
+
|
38
|
+
def create_rakefile(provider_name)
|
39
|
+
File.open("#{provider_name}/Rakefile", "w") do |file|
|
40
|
+
file.puts <<EOS
|
41
|
+
require 'rake/clean'
|
42
|
+
require 'rdoc/task'
|
43
|
+
require 'bundler/gem_tasks'
|
44
|
+
|
45
|
+
Rake::RDocTask.new do |rd|
|
46
|
+
rd.main = "README.rdoc"
|
47
|
+
rd.rdoc_files.include("README.rdoc","lib/**/*.rb")
|
48
|
+
rd.title = 'Your application title'
|
49
|
+
end
|
50
|
+
|
51
|
+
EOS
|
52
|
+
end
|
53
|
+
puts "Created #{provider_name}/Rakefile"
|
54
|
+
end
|
55
|
+
|
56
|
+
def create_version_file(provider_name, short_name)
|
57
|
+
File.open("#{provider_lib_path(provider_name)}/provider/version.rb", "w") do |file|
|
58
|
+
file.puts <<EOS
|
59
|
+
module TaskMapper
|
60
|
+
module #{short_name.capitalize}
|
61
|
+
VERSION = '0.0.1'
|
62
|
+
end
|
63
|
+
end
|
64
|
+
EOS
|
65
|
+
end
|
66
|
+
puts "Created #{provider_lib_path(provider_name)}/provider/version.rb"
|
67
|
+
end
|
68
|
+
|
69
|
+
def create_gemspec(provider_name, short_name)
|
70
|
+
File.open("#{provider_name}/#{provider_name}.gemspec", "w") do |file|
|
71
|
+
file.puts <<EOS
|
72
|
+
# Ensure we require the local version and not one we might have installed
|
73
|
+
# already
|
74
|
+
lib = File.expand_path('../lib', __FILE__)
|
75
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
76
|
+
require 'provider/version'
|
77
|
+
|
78
|
+
spec = Gem::Specification.new do |s|
|
79
|
+
s.name = '#{provider_name}'
|
80
|
+
s.version = TaskMapper::#{short_name.capitalize}::VERSION
|
81
|
+
s.author = 'Your Name Here'
|
82
|
+
s.email = 'your@email.address.com'
|
83
|
+
s.homepage = 'http://your.website.com'
|
84
|
+
s.platform = Gem::Platform::RUBY
|
85
|
+
s.summary = 'A description of your project'
|
86
|
+
# Add your other files here if you make them
|
87
|
+
s.files = %w(
|
88
|
+
lib/provider/version.rb
|
89
|
+
lib/#{provider_name}.rb
|
90
|
+
)
|
91
|
+
s.require_paths << 'lib'
|
92
|
+
s.has_rdoc = true
|
93
|
+
s.extra_rdoc_files = ['README.rdoc']
|
94
|
+
s.rdoc_options << '--title' << '#{provider_name}' << '--main' << 'README.rdoc' << '-ri'
|
95
|
+
s.add_development_dependency('rake')
|
96
|
+
s.add_development_dependency('rdoc')
|
97
|
+
s.add_development_dependency('bundler')
|
98
|
+
s.add_runtime_dependency('taskmapper')
|
99
|
+
end
|
100
|
+
EOS
|
101
|
+
end
|
102
|
+
puts "Created #{provider_name}/#{provider_name}.gemspec"
|
103
|
+
end
|
104
|
+
|
105
|
+
def create_readme(provider_name)
|
106
|
+
File.open("#{provider_name}/README.rdoc", "w") do |file|
|
107
|
+
file << "= #{provider_name.capitalize}"
|
108
|
+
file << "Describe your project here"
|
109
|
+
end
|
110
|
+
puts "Created #{provider_name}/README.rdoc"
|
111
|
+
end
|
112
|
+
|
113
|
+
def create_lib_file(provider_name, short_name)
|
114
|
+
File.open("#{provider_lib_path(provider_name)}/#{provider_name}.rb", "w") do |file|
|
115
|
+
file.puts <<EOS
|
116
|
+
#require YOUR_PROVIDER_API
|
117
|
+
|
118
|
+
%w{ #{short_name} project ticket comment }.each do |f|
|
119
|
+
require File.dirname(__FILE__) + '/provider/' + f + '.rb'
|
120
|
+
end
|
121
|
+
EOS
|
122
|
+
end
|
123
|
+
puts "Created #{provider_lib_path(provider_name)}/#{provider_name}.rb"
|
124
|
+
end
|
125
|
+
|
126
|
+
def create_provider_file(provider_name,short_name)
|
127
|
+
File.open("#{provider_lib_path(provider_name)}/provider/#{short_name}.rb", "w") do |file|
|
128
|
+
file.puts <<EOS
|
129
|
+
module TaskMapper::Provider
|
130
|
+
# This is the Yoursystem Provider for taskmapper
|
131
|
+
module #{short_name.capitalize}
|
132
|
+
include TaskMapper::Provider::Base
|
133
|
+
#TICKET_API = #{short_name.capitalize}::Ticket # The class to access the api's tickets
|
134
|
+
#PROJECT_API = #{short_name.capitalize}::Project # The class to access the api's projects
|
135
|
+
|
136
|
+
# This is for cases when you want to instantiate using TaskMapper::Provider::#{short_name.capitalize}.new(auth)
|
137
|
+
def self.new(auth = {})
|
138
|
+
TaskMapper.new(:#{short_name}, auth)
|
139
|
+
end
|
140
|
+
|
141
|
+
# Providers must define an authorize method. This is used to initialize and set authentication
|
142
|
+
# parameters to access the API
|
143
|
+
def authorize(auth = {})
|
144
|
+
# Set authentication parameters for whatever you're using to access the API
|
145
|
+
@authentication ||= TaskMapper::Authenticator.new(auth)
|
146
|
+
end
|
147
|
+
|
148
|
+
# declare needed overloaded methods here
|
149
|
+
end
|
150
|
+
end
|
151
|
+
EOS
|
152
|
+
end
|
153
|
+
puts "Created #{provider_lib_path(provider_name)}/provider/#{short_name}.rb"
|
154
|
+
end
|
155
|
+
|
156
|
+
def create_project_file(provider_name, short_name)
|
157
|
+
File.open("#{provider_lib_path(provider_name)}/provider/project.rb", "w") do |file|
|
158
|
+
file.puts <<EOS
|
159
|
+
module TaskMapper::Provider
|
160
|
+
module #{short_name.capitalize}
|
161
|
+
# Project class for #{provider_name}
|
162
|
+
|
163
|
+
class Project < TaskMapper::Provider::Base::Project
|
164
|
+
#API = #{short_name.capitalize}::Project # The class to access the api's projects
|
165
|
+
# declare needed overloaded methods here
|
166
|
+
def copy(project)
|
167
|
+
project.tickets.each do |ticket|
|
168
|
+
copy_ticket = self.ticket!(:title => ticket.title, :description => ticket.description)
|
169
|
+
ticket.comments.each do |comment|
|
170
|
+
copy_ticket.comment!(:body => comment.body)
|
171
|
+
sleep 1
|
172
|
+
end
|
173
|
+
end
|
174
|
+
end
|
175
|
+
end
|
176
|
+
end
|
177
|
+
EOS
|
178
|
+
end
|
179
|
+
puts "Created #{provider_lib_path(provider_name)}/provider/project.rb"
|
180
|
+
end
|
181
|
+
|
182
|
+
def create_ticket_file(provider_name, short_name)
|
183
|
+
File.open("#{provider_lib_path(provider_name)}/provider/ticket.rb", "w") do |file|
|
184
|
+
file.puts <<EOS
|
185
|
+
module TaskMapper::Provider
|
186
|
+
module #{short_name.capitalize}
|
187
|
+
# Ticket class for #{provider_name}
|
188
|
+
|
189
|
+
class Ticket < TaskMapper::Provider::Base::Ticket
|
190
|
+
#API = #{short_name.capitalize}::Ticket # The class to access the api's
|
191
|
+
#tickets
|
192
|
+
#declare needed overloaded methods here
|
193
|
+
|
194
|
+
end
|
195
|
+
end
|
196
|
+
end
|
197
|
+
EOS
|
198
|
+
end
|
199
|
+
puts "Created #{provider_lib_path(provider_name)}/provider/ticket.rb"
|
200
|
+
end
|
201
|
+
|
202
|
+
def create_comment_file(provider_name, short_name)
|
203
|
+
File.open("#{provider_lib_path(provider_name)}/provider/comment.rb", "w") do |file|
|
204
|
+
file.puts <<EOS
|
205
|
+
module TaskMapper::Provider
|
206
|
+
module #{short_name.capitalize}
|
207
|
+
# The comment class for #{provider_name}
|
208
|
+
# Do any mapping between TaskMapper and your system's comment model here
|
209
|
+
# versions of the ticket.
|
210
|
+
|
211
|
+
class Comment < TaskMapper::Provider::Base::Comment
|
212
|
+
#API = #{short_name.capitalize}::Comment # the class to access the api's
|
213
|
+
#comment
|
214
|
+
end
|
215
|
+
end
|
216
|
+
end
|
217
|
+
EOS
|
218
|
+
end
|
219
|
+
puts "Created #{provider_lib_path(provider_name)}/provider/comment.rb"
|
220
|
+
end
|
221
|
+
end
|
222
|
+
end
|
223
|
+
end
|
224
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module TM
|
2
|
+
module Commands
|
3
|
+
class LastTask < Command
|
4
|
+
def execute(search_attrs = '')
|
5
|
+
project = @provider_handler.taskmapper.project(@attributes)
|
6
|
+
ticket = project.tickets.last
|
7
|
+
@formatter.before(ticket)
|
8
|
+
@formatter.format(ticket)
|
9
|
+
@formatter.after
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
module TM
|
2
|
+
module Commands
|
3
|
+
class ListAllCommentsForTask < Command
|
4
|
+
def execute(search_attrs = '')
|
5
|
+
project = @provider_handler.taskmapper.project(@attributes)
|
6
|
+
ticket = project.tickets(search_attrs.extend(TM::StringExtensions).to_hash).first
|
7
|
+
comments = ticket.comments
|
8
|
+
@formatter.before(comments.first)
|
9
|
+
comments.each do |comment|
|
10
|
+
@formatter.format(comment)
|
11
|
+
end
|
12
|
+
@formatter.after
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,14 @@
|
|
1
|
+
module TM
|
2
|
+
module Commands
|
3
|
+
class ListAllProjects < Command
|
4
|
+
def execute
|
5
|
+
projects = @provider_handler.taskmapper.projects
|
6
|
+
@formatter.before(projects.first)
|
7
|
+
projects.each do |project|
|
8
|
+
@formatter.format(project)
|
9
|
+
end
|
10
|
+
@formatter.after
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
@@ -0,0 +1,15 @@
|
|
1
|
+
module TM
|
2
|
+
module Commands
|
3
|
+
class ListAllTasks < Command
|
4
|
+
def execute(search_attrs = '')
|
5
|
+
project = @provider_handler.taskmapper.project(@attributes)
|
6
|
+
tickets = project.tickets
|
7
|
+
@formatter.before(tickets.first)
|
8
|
+
tickets.each do |ticket|
|
9
|
+
@formatter.format(ticket)
|
10
|
+
end
|
11
|
+
@formatter.after
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,13 @@
|
|
1
|
+
module TM
|
2
|
+
module Commands
|
3
|
+
class SingleTask < Command
|
4
|
+
def execute(search_attrs = '')
|
5
|
+
project = @provider_handler.taskmapper.project(@attributes)
|
6
|
+
ticket = project.tickets(search_attrs.extend(TM::StringExtensions).to_hash).first
|
7
|
+
@formatter.before(ticket)
|
8
|
+
@formatter.format(ticket)
|
9
|
+
@formatter.after
|
10
|
+
end
|
11
|
+
end
|
12
|
+
end
|
13
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
module TM
|
2
|
+
module Format
|
3
|
+
PROJECT_KEYS = %w[id name description created_at updated_at]
|
4
|
+
TICKET_KEYS = %w[status priority title resolution assignee requestor project_id]
|
5
|
+
COMMENT_KEYS = %w[author body ticket_id]
|
6
|
+
|
7
|
+
def before(entity); end
|
8
|
+
def after; end
|
9
|
+
|
10
|
+
def normalize_entity(entity)
|
11
|
+
entity.keys.inject({}) do |hash, key|
|
12
|
+
if PROJECT_KEYS.include?(key) || TICKET_KEYS.include?(key) || COMMENT_KEYS.include?(key)
|
13
|
+
hash[key] = entity[key]
|
14
|
+
end
|
15
|
+
hash
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
require 'rainbow'
|
2
|
+
|
3
|
+
module TM
|
4
|
+
module Format
|
5
|
+
class Pretty
|
6
|
+
include Format
|
7
|
+
|
8
|
+
def format(entity)
|
9
|
+
normalize_entity(entity).each_pair do |title, value|
|
10
|
+
printf("%s: ", title.bright)
|
11
|
+
printf("%s\n", value.to_s.color(:green))
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,22 @@
|
|
1
|
+
require 'terminal-table'
|
2
|
+
|
3
|
+
module TM
|
4
|
+
module Format
|
5
|
+
class Table
|
6
|
+
include Format
|
7
|
+
|
8
|
+
def before(entity = {})
|
9
|
+
@@table = Terminal::Table.new :headings => normalize_entity(entity).keys
|
10
|
+
@@table.align_column(0, :right)
|
11
|
+
end
|
12
|
+
|
13
|
+
def format(entity)
|
14
|
+
@@table << normalize_entity(entity).values
|
15
|
+
end
|
16
|
+
|
17
|
+
def after
|
18
|
+
puts @@table.to_s
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
22
|
+
end
|
@@ -0,0 +1,33 @@
|
|
1
|
+
require 'taskmapper'
|
2
|
+
require 'taskmapper-kanbanpad'
|
3
|
+
require 'taskmapper-github'
|
4
|
+
require 'taskmapper-basecamp'
|
5
|
+
require 'taskmapper-bugherd'
|
6
|
+
require 'taskmapper-bugzilla'
|
7
|
+
require 'taskmapper-fogbugz'
|
8
|
+
require 'taskmapper-github'
|
9
|
+
require 'taskmapper-kanbanpad'
|
10
|
+
require 'taskmapper-lighthouse'
|
11
|
+
require 'taskmapper-pivotal'
|
12
|
+
require 'taskmapper-rally'
|
13
|
+
require 'taskmapper-redmine'
|
14
|
+
require 'taskmapper-trac'
|
15
|
+
require 'taskmapper-unfuddle'
|
16
|
+
require 'taskmapper-zendesk'
|
17
|
+
|
18
|
+
module TM
|
19
|
+
class ProviderHandler
|
20
|
+
attr_reader :taskmapper
|
21
|
+
|
22
|
+
def initialize(taskmapper)
|
23
|
+
@taskmapper = taskmapper
|
24
|
+
end
|
25
|
+
|
26
|
+
def self.build_handler(provider, authentication)
|
27
|
+
self.new(TaskMapper.new(provider.to_sym,
|
28
|
+
authentication.extend(TM::StringExtensions).to_hash))
|
29
|
+
rescue NameError
|
30
|
+
raise TM::InvalidProvider, "Provider doesn't exists"
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
data/lib/tm/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: taskmapper-cli
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -16,17 +16,33 @@ dependencies:
|
|
16
16
|
requirement: !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
|
-
- - '
|
19
|
+
- - ! '>='
|
20
20
|
- !ruby/object:Gem::Version
|
21
|
-
version:
|
21
|
+
version: '0'
|
22
22
|
type: :runtime
|
23
23
|
prerelease: false
|
24
24
|
version_requirements: !ruby/object:Gem::Requirement
|
25
25
|
none: false
|
26
26
|
requirements:
|
27
|
-
- - '
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: taskmapper-basecamp
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
38
|
+
type: :runtime
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
28
44
|
- !ruby/object:Gem::Version
|
29
|
-
version:
|
45
|
+
version: '0'
|
30
46
|
- !ruby/object:Gem::Dependency
|
31
47
|
name: taskmapper-github
|
32
48
|
requirement: !ruby/object:Gem::Requirement
|
@@ -203,6 +219,22 @@ dependencies:
|
|
203
219
|
- - ! '>='
|
204
220
|
- !ruby/object:Gem::Version
|
205
221
|
version: '0'
|
222
|
+
- !ruby/object:Gem::Dependency
|
223
|
+
name: taskmapper-zendesk
|
224
|
+
requirement: !ruby/object:Gem::Requirement
|
225
|
+
none: false
|
226
|
+
requirements:
|
227
|
+
- - ! '>='
|
228
|
+
- !ruby/object:Gem::Version
|
229
|
+
version: '0'
|
230
|
+
type: :runtime
|
231
|
+
prerelease: false
|
232
|
+
version_requirements: !ruby/object:Gem::Requirement
|
233
|
+
none: false
|
234
|
+
requirements:
|
235
|
+
- - ! '>='
|
236
|
+
- !ruby/object:Gem::Version
|
237
|
+
version: '0'
|
206
238
|
- !ruby/object:Gem::Dependency
|
207
239
|
name: rainbow
|
208
240
|
requirement: !ruby/object:Gem::Requirement
|
@@ -326,6 +358,26 @@ extra_rdoc_files:
|
|
326
358
|
files:
|
327
359
|
- bin/tm
|
328
360
|
- lib/tm/version.rb
|
361
|
+
- lib/tm/string_extensions.rb
|
362
|
+
- lib/tm/exceptions.rb
|
363
|
+
- lib/tm/provider_handler.rb
|
364
|
+
- lib/tm/format/format.rb
|
365
|
+
- lib/tm/format/csv.rb
|
366
|
+
- lib/tm/format/pretty.rb
|
367
|
+
- lib/tm/format/table.rb
|
368
|
+
- lib/tm/commands/command.rb
|
369
|
+
- lib/tm/commands/create_comment.rb
|
370
|
+
- lib/tm/commands/create_task.rb
|
371
|
+
- lib/tm/commands/first_project.rb
|
372
|
+
- lib/tm/commands/first_task.rb
|
373
|
+
- lib/tm/commands/generate_provider.rb
|
374
|
+
- lib/tm/commands/last_project.rb
|
375
|
+
- lib/tm/commands/last_task.rb
|
376
|
+
- lib/tm/commands/list_all_comments_for_task.rb
|
377
|
+
- lib/tm/commands/list_all_projects.rb
|
378
|
+
- lib/tm/commands/list_all_tasks.rb
|
379
|
+
- lib/tm/commands/single_project.rb
|
380
|
+
- lib/tm/commands/single_task.rb
|
329
381
|
- lib/tm.rb
|
330
382
|
- README.rdoc
|
331
383
|
- tm.rdoc
|
@@ -349,7 +401,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
349
401
|
version: '0'
|
350
402
|
segments:
|
351
403
|
- 0
|
352
|
-
hash:
|
404
|
+
hash: 2762427979354817147
|
353
405
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
354
406
|
none: false
|
355
407
|
requirements:
|
@@ -358,7 +410,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
358
410
|
version: '0'
|
359
411
|
segments:
|
360
412
|
- 0
|
361
|
-
hash:
|
413
|
+
hash: 2762427979354817147
|
362
414
|
requirements: []
|
363
415
|
rubyforge_project:
|
364
416
|
rubygems_version: 1.8.25
|