geera 1.2.3

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,23 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'autotest/restart'
4
+
5
+ # Autotest.add_hook :initialize do |at|
6
+ # at.extra_files << "../some/external/dependency.rb"
7
+ #
8
+ # at.libs << ":../some/external"
9
+ #
10
+ # at.add_exception 'vendor'
11
+ #
12
+ # at.add_mapping(/dependency.rb/) do |f, _|
13
+ # at.files_matching(/test_.*rb$/)
14
+ # end
15
+ #
16
+ # %w(TestA TestB).each do |klass|
17
+ # at.extra_class_map[klass] = "test/test_misc.rb"
18
+ # end
19
+ # end
20
+
21
+ # Autotest.add_hook :run_command do |at|
22
+ # system "rake build"
23
+ # end
@@ -0,0 +1,43 @@
1
+ Fri Jun 18 14:26:00 2010 Aaron Patterson <aaron@tenderlovemaking.com>
2
+
3
+ * Added a custom field for the "closer" of a ticket.
4
+
5
+ Fri Mar 5 08:59:37 2010 Aaron Patterson <aaron@tenderlovemaking.com>
6
+
7
+ * Priority is copied around when starting or fixing.
8
+
9
+ Thu Mar 4 09:24:46 2010 Aaron Patterson <aaron@tenderlovemaking.com>
10
+
11
+ * Description is no longer required to create a ticket
12
+
13
+ Thu Mar 4 09:21:03 2010 Aaron Patterson <aaron@tenderlovemaking.com>
14
+
15
+ * bin/geera raises an exception on an unknown command.
16
+
17
+ Thu Mar 4 09:18:08 2010 Aaron Patterson <aaron@tenderlovemaking.com>
18
+
19
+ * 'geera filters' will list your available filters
20
+
21
+ Thu Mar 4 09:01:12 2010 Aaron Patterson <aaron@tenderlovemaking.com>
22
+
23
+ * 'geera show TICKET' will let you view info about TICKET
24
+
25
+ Wed Mar 3 17:50:26 2010 Aaron Patterson <aaron@tenderlovemaking.com>
26
+
27
+ * added hacks for silencing Jira4R
28
+
29
+ Wed Mar 3 14:40:56 2010 Aaron Patterson <aaron@tenderlovemaking.com>
30
+
31
+ * starting and fixing a ticket will maintain description
32
+
33
+ Tue Mar 2 10:31:42 2010 Aaron Patterson <aaron@tenderlovemaking.com>
34
+
35
+ * Changed "mv" command to "assign".
36
+ * Added the "create" command.
37
+
38
+ === 1.0.0 / 2010-02-26
39
+
40
+ * 1 major enhancement
41
+
42
+ * Birthday!
43
+
@@ -0,0 +1,30 @@
1
+ .autotest
2
+ ChangeLog
3
+ Manifest.txt
4
+ README.rdoc
5
+ Rakefile
6
+ bin/geera
7
+ lib/geera.rb
8
+ lib/geera/client.rb
9
+ lib/geera/commands/assign.rb
10
+ lib/geera/commands/command.rb
11
+ lib/geera/commands/estimate.rb
12
+ lib/geera/commands/filters.rb
13
+ lib/geera/commands/fix.rb
14
+ lib/geera/commands/list.rb
15
+ lib/geera/commands/show.rb
16
+ lib/geera/commands/start.rb
17
+ lib/geera/commands/take.rb
18
+ lib/geera/executable.rb
19
+ lib/geera/ticket.rb
20
+ lib/template.txt
21
+ test/commands/test_assign.rb
22
+ test/commands/test_estimate.rb
23
+ test/commands/test_filters.rb
24
+ test/commands/test_fix.rb
25
+ test/commands/test_list.rb
26
+ test/commands/test_show.rb
27
+ test/commands/test_start.rb
28
+ test/commands/test_take.rb
29
+ test/test_client.rb
30
+ test/test_ticket.rb
@@ -0,0 +1,189 @@
1
+ = geera
2
+
3
+ * http://atti.com/
4
+
5
+ == DESCRIPTION:
6
+
7
+ Geera is a command line tool for dealing with Jira tickets.
8
+
9
+ == FEATURES/PROBLEMS:
10
+
11
+ * Uses soap4r
12
+
13
+ == SYNOPSIS:
14
+
15
+ Geera provides a command line tool for interacting with the Jira ticketing
16
+ system.
17
+
18
+ After you've installed Geera, you must configure your ~/.geera file like this:
19
+
20
+ $ geera setup
21
+
22
+ That command will create a $HOME/.geera file for you to fill out. The config
23
+ file will look something like this:
24
+
25
+ ---
26
+ url: FIXME
27
+ username: FIXME
28
+ qa: FIXME
29
+ password: FIXME
30
+
31
+ The "url" value should point to the Jira API url. "username" and "password"
32
+ are your username and password for the Jira system. When running "geera fix",
33
+ the ticket will be automatically reassigned to the username listed in "qa".
34
+ If the "qa" value is removed, the ticket will not be reassigned when the
35
+ ticket is fixed.
36
+
37
+ === Basic Usage
38
+
39
+ Geera commands have the basic form of "geera ACTION TICKET", where
40
+ ACTION is the action you want to perform, and TICKET is the ticket on which
41
+ you wish to perform that action.
42
+
43
+ The current available commands are:
44
+
45
+ * start
46
+ * fix
47
+ * assign
48
+ * take
49
+ * create
50
+ * comment
51
+ * list
52
+
53
+ === "start" command
54
+
55
+ The "start" command lets you start a ticket. This command only works when the
56
+ ticket is in a startable state. For example:
57
+
58
+ $ geera start BZ-1000
59
+
60
+ This command will set the state of BZ-1000 to "start". If the ticket is not
61
+ in a startable state, an error will be displayed.
62
+
63
+ === "fix" command
64
+
65
+ The "fix" command puts the ticket in to a fixed state. If the ticket is
66
+ startable, it will first start the ticket, then put the ticket in fixed state.
67
+
68
+ $ geera fix BZ-1000
69
+
70
+ The ticket BZ-1000 should be in the "fixed" state. If a user is specified in
71
+ the "qa" section of the configuration file, the ticket will be automatically
72
+ reassigned to that user.
73
+
74
+ === "assign" command
75
+
76
+ The "assign" command reassigns a ticket to another user. The following command
77
+ will reassign the ticket BZ-1000 to the user "foo":
78
+
79
+ $ geera assign BZ-1000 foo
80
+
81
+ === "take" command
82
+
83
+ The "take" command is similar to the "mv" command, but assigns the ticket to
84
+ the user listed in the "username" section of the configuration file. This
85
+ command is useful when you wish to "take" a ticket from someone:
86
+
87
+ $ geera take BZ-1000
88
+
89
+ === "create" command
90
+
91
+ The "create" command will create a new ticket in the JIRA system. It requires
92
+ a project name on which to create the ticket. For example, if you want to
93
+ create a ticket in the "BZ" project, the command will look like this:
94
+
95
+ $ geera create BZ
96
+
97
+ This command will open $EDITOR with a form to fill out. Enter the details of
98
+ the ticket, and the ticket will be created.
99
+
100
+ === "comment" command
101
+
102
+ The "comment" command lets you comment on a ticket. Comments are passed in
103
+ through the -m flag. For example:
104
+
105
+ $ geera comment BZ-1000 -m'This is a comment'
106
+
107
+ === "list" command
108
+
109
+ The "list" command lets you list tickets in a filter. You can then take the
110
+ ticket numbers returned and assign them or whatever.
111
+
112
+ $ geera list 1138
113
+
114
+ This command prints out the first 10 tickets in the 1138 filter. Of course,
115
+ named filters would be much nicer. If you add a "filters" hash in your
116
+ ~/.geera file, you can assign names to filter ids.
117
+
118
+ filters:
119
+ all: 12482
120
+ features: 12481
121
+ bugs: 12480
122
+
123
+ Then you can run:
124
+
125
+ $ geera list bugs
126
+
127
+ And get the tickets from filter id 12480.
128
+
129
+ == Comments
130
+
131
+ An optional "-m" flag is available on every command. The "-m" flag will
132
+ automatically attach a comment to the ticket in addition to the original
133
+ command performed. For example, we can fix a ticket and add a comment at the
134
+ same time by doing:
135
+
136
+ $ geera fix BZ-1000 -m'I totally fixed this ticket'
137
+
138
+ == Example Workflows
139
+
140
+ First, start the ticket, then do work, then fix the ticket:
141
+
142
+ $ geera start BZ-1000 -m'starting to work on awesome feature'
143
+ $ ...
144
+ $ ...
145
+ $ geera fix BZ-1000 -m'finished awesome feature'
146
+
147
+ Maybe you need to add comments while fixing stuff:
148
+
149
+ $ geera start BZ-1000 -m'starting to work on awesome feature'
150
+ $ ...
151
+ $ geera comment BZ-1000 -m'I had to totally do this thing'
152
+ $ ...
153
+ $ geera fix BZ-1000 -m'finished awesome feature'
154
+
155
+ You do some work, then need to give the ticket to someone else:
156
+
157
+ $ geera start BZ-1000 -m'starting to work on awesome feature'
158
+ $ ...
159
+ $ geera mv BZ-1000 coworker -m'This was too hard for me!'
160
+
161
+
162
+ == INSTALL:
163
+
164
+ * sudo gem install geera
165
+
166
+ == LICENSE:
167
+
168
+ (The MIT License)
169
+
170
+ Copyright (c) 2010 ATT Interactive
171
+
172
+ Permission is hereby granted, free of charge, to any person obtaining
173
+ a copy of this software and associated documentation files (the
174
+ 'Software'), to deal in the Software without restriction, including
175
+ without limitation the rights to use, copy, modify, merge, publish,
176
+ distribute, sublicense, and/or sell copies of the Software, and to
177
+ permit persons to whom the Software is furnished to do so, subject to
178
+ the following conditions:
179
+
180
+ The above copyright notice and this permission notice shall be
181
+ included in all copies or substantial portions of the Software.
182
+
183
+ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
184
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
185
+ MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
186
+ IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
187
+ CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
188
+ TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
189
+ SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
@@ -0,0 +1,15 @@
1
+ # -*- ruby -*-
2
+
3
+ require 'rubygems'
4
+ require 'hoe'
5
+
6
+ Hoe.spec 'geera' do
7
+ developer('Aaron Patterson', 'apatterson@atti.com')
8
+ self.readme_file = 'README.rdoc'
9
+ self.history_file = 'ChangeLog'
10
+ self.extra_rdoc_files = FileList['*.rdoc']
11
+ self.extra_deps << ['jira4r', '>= 0.3.0']
12
+ self.extra_dev_deps << ['flexmock', '>= 0']
13
+ end
14
+
15
+ # vim: syntax=ruby
@@ -0,0 +1,118 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'tmpdir'
5
+ require 'geera'
6
+ require 'yaml'
7
+ require 'optparse'
8
+
9
+ config = File.join(ENV['HOME'], '.geera')
10
+ login = YAML.load(File.read config) rescue nil
11
+ BUG_TEMPLATE = File.expand_path(File.join(
12
+ File.dirname(__FILE__), '..', 'lib', 'template.txt'))
13
+
14
+ unless login
15
+ File.open config, 'wb' do |f|
16
+
17
+ options = {
18
+ 'username' => 'FIXME',
19
+ 'password' => 'FIXME',
20
+ 'url' => 'FIXME',
21
+ 'qa' => 'FIXME'
22
+ }
23
+
24
+ YAML.dump options, f
25
+ f.chmod(0600)
26
+ end
27
+ abort "Created ~/.geera for you. Fill it out"
28
+ end
29
+
30
+
31
+ options = {}
32
+ OptionParser.new do |opts|
33
+ opts.banner = <<-EOF
34
+ Usage: geera <command> <ticket|project> [options]
35
+
36
+ Commands:
37
+ show - Shows ticket details
38
+ `geera show TK-421`
39
+ create - Creates a new ticket in a project
40
+ `geera create TK`
41
+ fix - Marks a ticket as fixed and assigns to QA.
42
+ `geera fix TK-421`
43
+ assign - Assigns a ticket to someone else
44
+ `geera reassign TK-421 glucas`
45
+ take - Assigns a ticket to yourself
46
+ `geera take TK-421`
47
+ list - Lists tickets in a filter
48
+ `geera list 1138`
49
+ `geera list my-filter-name`
50
+ filters - Lists your filters
51
+ `geera filters`
52
+ comment - Simply comment on the ticket
53
+ `geera comment TK-421 --message 'This is a difficult bug.'`
54
+
55
+ Options:
56
+ EOF
57
+
58
+ opts.on("-m", "--message MESSAGE", "Add a comment") do |v|
59
+ options[:message] = v
60
+ end
61
+ end.parse!
62
+
63
+ exec = Geera::Executable.new login, ARGV, options
64
+ geera = exec.geera
65
+
66
+ command = ARGV.shift
67
+ number = ARGV.shift
68
+ ticket = geera.ticket number
69
+
70
+ case command
71
+ when 'start'
72
+ command = Geera::Commands::Start.new login, number, geera, ARGV
73
+ command.execute!
74
+ when 'estimate'
75
+ command = Geera::Commands::Estimate.new login, number, geera, ARGV
76
+ command.execute!
77
+ when 'fix'
78
+ command = Geera::Commands::Fix.new login, number, geera, ARGV
79
+ command.execute!
80
+ when 'assign'
81
+ command = Geera::Commands::Assign.new login, number, geera, ARGV
82
+ command.execute!
83
+ when 'take'
84
+ command = Geera::Commands::Take.new login, number, geera, ARGV
85
+ command.execute!
86
+ when 'show'
87
+ command = Geera::Commands::Show.new login, number, geera, ARGV
88
+ command.execute!
89
+ when 'filters'
90
+ command = Geera::Commands::Filters.new login, number, geera, ARGV
91
+ command.execute!
92
+ when 'list'
93
+ number = (login['filters'] && login['filters'][number]) || number
94
+
95
+ command = Geera::Commands::List.new login, number, geera, ARGV
96
+ command.execute!
97
+ when 'create'
98
+ fname = File.join(Dir.tmpdir, 'bug.txt')
99
+ File.open(fname, 'wb') do |f|
100
+ f.write File.read(BUG_TEMPLATE)
101
+ end
102
+
103
+ system("#{ENV['EDITOR'] || 'vi'} #{fname}")
104
+ contents = File.read(fname)
105
+ sum, desc = contents.split('##### Description is below here #####')
106
+
107
+ ticket = geera.create_ticket :project => number,
108
+ :summary => sum.sub(/^Summary:/, '').strip,
109
+ :description => desc && desc.strip
110
+
111
+ puts "Created ticket: #{ticket.number}"
112
+ when 'comment'
113
+ # Do nothing, let the -m flag pick it up
114
+ else
115
+ raise "unknown command: #{command}"
116
+ end
117
+
118
+ ticket.comment options[:message] if options[:message]
@@ -0,0 +1,23 @@
1
+ require 'jira4r'
2
+ require 'geera/client'
3
+ require 'geera/ticket'
4
+ require 'geera/executable'
5
+ require 'geera/commands/command'
6
+ require 'geera/commands/assign'
7
+ require 'geera/commands/start'
8
+ require 'geera/commands/fix'
9
+ require 'geera/commands/take'
10
+ require 'geera/commands/show'
11
+ require 'geera/commands/filters'
12
+ require 'geera/commands/list'
13
+ require 'geera/commands/estimate'
14
+
15
+ module Geera
16
+ VERSION = '1.2.3'
17
+ end
18
+
19
+ # Total hacks for shutting up Jira4R
20
+ class Jira4R::JiraTool
21
+ def puts *args
22
+ end
23
+ end