taskmapper-cli 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- 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
|