fogbugz 1.0.4 → 1.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/bin/fogbugz +2 -0
- data/bin/fogbugz-areas +3 -0
- data/bin/fogbugz-assign +3 -0
- data/bin/fogbugz-categories +3 -0
- data/bin/fogbugz-close +5 -51
- data/bin/fogbugz-edit +12 -4
- data/bin/fogbugz-filter +4 -29
- data/bin/fogbugz-filters +3 -0
- data/bin/fogbugz-list +7 -2
- data/bin/fogbugz-login +3 -0
- data/bin/fogbugz-logoff +3 -0
- data/bin/fogbugz-milestones +3 -0
- data/bin/fogbugz-open +5 -1
- data/bin/fogbugz-people +3 -0
- data/bin/fogbugz-priorities +3 -0
- data/bin/fogbugz-projects +3 -0
- data/bin/fogbugz-reactivate +5 -51
- data/bin/fogbugz-reopen +5 -51
- data/bin/fogbugz-resolve +60 -5
- data/bin/fogbugz-show +6 -1
- data/bin/fogbugz-start +3 -0
- data/bin/fogbugz-statuses +3 -0
- data/bin/fogbugz-stop +3 -0
- data/lib/fogbugz/common.rb +17 -8
- metadata +78 -59
data/bin/fogbugz
CHANGED
data/bin/fogbugz-areas
CHANGED
data/bin/fogbugz-assign
CHANGED
data/bin/fogbugz-categories
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'fogbugz/common'
|
3
3
|
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
6
|
+
|
4
7
|
parse_opts "usage: #{File::basename(__FILE__)} [options]", 0
|
5
8
|
do_api('listCategories').elements.each('/response/categories/category') do |c|
|
6
9
|
puts c.elements['sCategory'].text
|
data/bin/fogbugz-close
CHANGED
@@ -1,55 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
require 'fogbugz/common'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
require 'uri'
|
6
|
-
require 'rexml/document'
|
7
|
-
require 'optparse'
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
8
6
|
|
9
|
-
|
10
|
-
unless api_url
|
11
|
-
puts "Environment variable FOGBUGZ_API_URL must be set."
|
12
|
-
exit 1
|
13
|
-
end
|
7
|
+
parse_opts "usage: #{File::basename(__FILE__)} [options] <case>", 1
|
14
8
|
|
15
|
-
|
16
|
-
unless api_token
|
17
|
-
puts "Environment variable FOGBUGZ_API_TOKEN must be set."
|
18
|
-
exit 1
|
19
|
-
end
|
20
|
-
|
21
|
-
options = {}
|
22
|
-
optparse = OptionParser.new do |opts|
|
23
|
-
opts.banner = "usage: #{File::basename(__FILE__)} [options] <case>"
|
24
|
-
|
25
|
-
opts.on_tail('-h', '--help') do
|
26
|
-
puts optparse.help
|
27
|
-
exit 1
|
28
|
-
end
|
29
|
-
end
|
30
|
-
optparse.parse!
|
31
|
-
|
32
|
-
unless ARGV.length == 1
|
33
|
-
puts optparse.help
|
34
|
-
exit 1
|
35
|
-
end
|
36
|
-
|
37
|
-
uri = URI format("#{api_url}?cmd=close&token=%s&ixBug=%s",
|
38
|
-
URI.escape(api_token), URI.escape(ARGV[0]))
|
39
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
40
|
-
if uri.scheme == 'https'
|
41
|
-
http.use_ssl = true
|
42
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
43
|
-
end
|
44
|
-
response = http.start { |h| h.request Net::HTTP::Get.new(uri.request_uri) }
|
45
|
-
if response.code != '200'
|
46
|
-
puts "HTTP request to #{api_url} failed with code #{response.code}."
|
47
|
-
exit 1
|
48
|
-
end
|
49
|
-
|
50
|
-
result = REXML::Document.new(response.body)
|
51
|
-
error = result.elements['/response/error']
|
52
|
-
if error
|
53
|
-
puts "Failed with error: #{error.text}."
|
54
|
-
exit 1
|
55
|
-
end
|
9
|
+
do_api('close', { :ixBug => ARGV[0] })
|
data/bin/fogbugz-edit
CHANGED
@@ -1,10 +1,16 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'fogbugz/common'
|
3
3
|
|
4
|
-
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
6
|
+
|
7
|
+
options =
|
8
|
+
parse_stdin_opts "usage: #{File::basename(__FILE__)} [options] <case> [-]", 1
|
5
9
|
|
6
10
|
result = do_api('search', :max => 1, :q => ARGV[0],
|
7
|
-
:cols => 'ixBug,ixBugParent,tags,sTitle,sProject,sArea,
|
11
|
+
:cols => 'ixBug,ixBugParent,tags,sTitle,sProject,sArea,' +
|
12
|
+
'sFixFor,sCategory,sPersonAssignedTo,sPriority,' +
|
13
|
+
'hrsCurrEst,dtDue,events')
|
8
14
|
bug = result.elements["/response/cases/case[@ixBug='#{ARGV[0]}']"]
|
9
15
|
unless bug
|
10
16
|
puts "Case #{ARGV[0]} does not exist."
|
@@ -15,7 +21,8 @@ template = "# Fill in metadata for the case.\n"
|
|
15
21
|
template << maybe_append('title', bug.elements['sTitle'])
|
16
22
|
template << maybe_append('assignee', bug.elements['sPersonAssignedTo'])
|
17
23
|
template << maybe_append('parent', bug.elements['ixBugParent'])
|
18
|
-
template << maybe_array('tags',
|
24
|
+
template << maybe_array('tags',
|
25
|
+
bug.elements.collect('tags/tag') { |t| t.text })
|
19
26
|
template << maybe_append('project', bug.elements['sProject'])
|
20
27
|
template << maybe_append('area', bug.elements['sArea'])
|
21
28
|
template << maybe_append('milestone', bug.elements['sFixFor'])
|
@@ -26,7 +33,8 @@ template << maybe_append('estimate', bug.elements['hrsCurrEst'])
|
|
26
33
|
|
27
34
|
template << "\n"
|
28
35
|
bug.elements.each('events/event') do |event|
|
29
|
-
template << maybe_event(event.elements['evtDescription'],
|
36
|
+
template << maybe_event(event.elements['evtDescription'],
|
37
|
+
event.elements['dt'])
|
30
38
|
template << maybe_literal(event.elements['sChanges'])
|
31
39
|
template << maybe_literal(event.elements['s'])
|
32
40
|
template << "\n"
|
data/bin/fogbugz-filter
CHANGED
@@ -1,38 +1,13 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
require 'fogbugz/common'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
require 'uri'
|
6
|
-
require 'rexml/document'
|
7
|
-
require 'optparse'
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
8
6
|
|
9
7
|
api_url = ENV['FOGBUGZ_API_URL']
|
10
|
-
unless api_url
|
11
|
-
puts "Environment variable FOGBUGZ_API_URL must be set."
|
12
|
-
exit 1
|
13
|
-
end
|
14
|
-
|
15
8
|
api_token = ENV['FOGBUGZ_API_TOKEN']
|
16
|
-
unless api_token
|
17
|
-
puts "Environment variable FOGBUGZ_API_TOKEN must be set."
|
18
|
-
exit 1
|
19
|
-
end
|
20
9
|
|
21
|
-
|
22
|
-
optparse = OptionParser.new do |opts|
|
23
|
-
opts.banner = "usage: #{File::basename(__FILE__)} [options] <filter>"
|
24
|
-
|
25
|
-
opts.on_tail('-h', '--help') do
|
26
|
-
puts optparse.help
|
27
|
-
exit 1
|
28
|
-
end
|
29
|
-
end
|
30
|
-
optparse.parse!
|
31
|
-
|
32
|
-
unless ARGV.length == 1
|
33
|
-
puts optparse.help
|
34
|
-
exit 1
|
35
|
-
end
|
10
|
+
parse_opts "usage: #{File::basename(__FILE__)} [options] <filter>", 1
|
36
11
|
|
37
12
|
uri = URI format("#{api_url}?cmd=listFilters&token=%s", URI.escape(api_token))
|
38
13
|
http = Net::HTTP.new(uri.host, uri.port)
|
data/bin/fogbugz-filters
CHANGED
data/bin/fogbugz-list
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'fogbugz/common'
|
3
3
|
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
6
|
+
|
4
7
|
options = {}
|
5
8
|
optparse = OptionParser.new do |opts|
|
6
9
|
opts.banner = "usage: #{File::basename(__FILE__)} [options] [query]"
|
@@ -24,7 +27,8 @@ end
|
|
24
27
|
params = {}
|
25
28
|
params[:max] = options[:max] if options[:max]
|
26
29
|
params[:q] = ARGV[0] if ARGV.length == 1
|
27
|
-
params[:cols] = 'ixBug,sPersonAssignedTo,sFixFor,sStatus,dtDue,sTitle,
|
30
|
+
params[:cols] = 'ixBug,sPersonAssignedTo,sFixFor,sStatus,dtDue,sTitle,' +
|
31
|
+
'dtDue,plugin_projectbacklog_at_fogcreek_com_ibacklog'
|
28
32
|
|
29
33
|
result = do_api('search', params)
|
30
34
|
|
@@ -59,6 +63,7 @@ result.elements.to_a('/response/cases/case').sort { |a,b|
|
|
59
63
|
''
|
60
64
|
end,
|
61
65
|
time_short_string(bug.elements['dtDue'].text),
|
62
|
-
bug.elements['
|
66
|
+
bug.elements['plugin_projectbacklog_at_' +
|
67
|
+
'fogcreek_com_ibacklog'].text,
|
63
68
|
bug.elements['sTitle'].text).strip!
|
64
69
|
end
|
data/bin/fogbugz-login
CHANGED
data/bin/fogbugz-logoff
CHANGED
data/bin/fogbugz-milestones
CHANGED
data/bin/fogbugz-open
CHANGED
@@ -1,7 +1,11 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'fogbugz/common'
|
3
3
|
|
4
|
-
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
6
|
+
|
7
|
+
options =
|
8
|
+
parse_stdin_opts "usage: #{File::basename(__FILE__)} [options] [-]", 0
|
5
9
|
|
6
10
|
data = get_editor_content options, <<HERE
|
7
11
|
# Fill in metadata for the case.
|
data/bin/fogbugz-people
CHANGED
data/bin/fogbugz-priorities
CHANGED
@@ -1,6 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'fogbugz/common'
|
3
3
|
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
6
|
+
|
4
7
|
parse_opts "usage: #{File::basename(__FILE__)} [options]", 0
|
5
8
|
do_api('listPriorities').elements.each('/response/priorities/priority') do |p|
|
6
9
|
puts p.elements['sPriority'].text
|
data/bin/fogbugz-projects
CHANGED
data/bin/fogbugz-reactivate
CHANGED
@@ -1,55 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
require 'fogbugz/common'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
require 'uri'
|
6
|
-
require 'rexml/document'
|
7
|
-
require 'optparse'
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
8
6
|
|
9
|
-
|
10
|
-
unless api_url
|
11
|
-
puts "Environment variable FOGBUGZ_API_URL must be set."
|
12
|
-
exit 1
|
13
|
-
end
|
7
|
+
parse_opts "usage: #{File::basename(__FILE__)} [options] <case>", 1
|
14
8
|
|
15
|
-
|
16
|
-
unless api_token
|
17
|
-
puts "Environment variable FOGBUGZ_API_TOKEN must be set."
|
18
|
-
exit 1
|
19
|
-
end
|
20
|
-
|
21
|
-
options = {}
|
22
|
-
optparse = OptionParser.new do |opts|
|
23
|
-
opts.banner = "usage: #{File::basename(__FILE__)} [options] <case>"
|
24
|
-
|
25
|
-
opts.on_tail('-h', '--help') do
|
26
|
-
puts optparse.help
|
27
|
-
exit 1
|
28
|
-
end
|
29
|
-
end
|
30
|
-
optparse.parse!
|
31
|
-
|
32
|
-
unless ARGV.length == 1
|
33
|
-
puts optparse.help
|
34
|
-
exit 1
|
35
|
-
end
|
36
|
-
|
37
|
-
uri = URI format("#{api_url}?cmd=reactivate&token=%s&ixBug=%s",
|
38
|
-
URI.escape(api_token), URI.escape(ARGV[0]))
|
39
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
40
|
-
if uri.scheme == 'https'
|
41
|
-
http.use_ssl = true
|
42
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
43
|
-
end
|
44
|
-
response = http.start { |h| h.request Net::HTTP::Get.new(uri.request_uri) }
|
45
|
-
if response.code != '200'
|
46
|
-
puts "HTTP request to #{api_url} failed with code #{response.code}."
|
47
|
-
exit 1
|
48
|
-
end
|
49
|
-
|
50
|
-
result = REXML::Document.new(response.body)
|
51
|
-
error = result.elements['/response/error']
|
52
|
-
if error
|
53
|
-
puts "Failed with error: #{error.text}."
|
54
|
-
exit 1
|
55
|
-
end
|
9
|
+
do_api('reactivate', { :ixBug => ARGV[0] })
|
data/bin/fogbugz-reopen
CHANGED
@@ -1,55 +1,9 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
|
+
require 'fogbugz/common'
|
2
3
|
|
3
|
-
|
4
|
-
|
5
|
-
require 'uri'
|
6
|
-
require 'rexml/document'
|
7
|
-
require 'optparse'
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
8
6
|
|
9
|
-
|
10
|
-
unless api_url
|
11
|
-
puts "Environment variable FOGBUGZ_API_URL must be set."
|
12
|
-
exit 1
|
13
|
-
end
|
7
|
+
parse_opts "usage: #{File::basename(__FILE__)} [options] <case>", 1
|
14
8
|
|
15
|
-
|
16
|
-
unless api_token
|
17
|
-
puts "Environment variable FOGBUGZ_API_TOKEN must be set."
|
18
|
-
exit 1
|
19
|
-
end
|
20
|
-
|
21
|
-
options = {}
|
22
|
-
optparse = OptionParser.new do |opts|
|
23
|
-
opts.banner = "usage: #{File::basename(__FILE__)} [options] <case>"
|
24
|
-
|
25
|
-
opts.on_tail('-h', '--help') do
|
26
|
-
puts optparse.help
|
27
|
-
exit 1
|
28
|
-
end
|
29
|
-
end
|
30
|
-
optparse.parse!
|
31
|
-
|
32
|
-
unless ARGV.length == 1
|
33
|
-
puts optparse.help
|
34
|
-
exit 1
|
35
|
-
end
|
36
|
-
|
37
|
-
uri = URI format("#{api_url}?cmd=reopen&token=%s&ixBug=%s",
|
38
|
-
URI.escape(api_token), URI.escape(ARGV[0]))
|
39
|
-
http = Net::HTTP.new(uri.host, uri.port)
|
40
|
-
if uri.scheme == 'https'
|
41
|
-
http.use_ssl = true
|
42
|
-
http.verify_mode = OpenSSL::SSL::VERIFY_NONE
|
43
|
-
end
|
44
|
-
response = http.start { |h| h.request Net::HTTP::Get.new(uri.request_uri) }
|
45
|
-
if response.code != '200'
|
46
|
-
puts "HTTP request to #{api_url} failed with code #{response.code}."
|
47
|
-
exit 1
|
48
|
-
end
|
49
|
-
|
50
|
-
result = REXML::Document.new(response.body)
|
51
|
-
error = result.elements['/response/error']
|
52
|
-
if error
|
53
|
-
puts "Failed with error: #{error.text}."
|
54
|
-
exit 1
|
55
|
-
end
|
9
|
+
do_api('reopen', { :ixBug => ARGV[0] })
|
data/bin/fogbugz-resolve
CHANGED
@@ -1,15 +1,70 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'fogbugz/common'
|
3
3
|
|
4
|
-
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
5
6
|
|
6
|
-
|
7
|
-
|
7
|
+
options =
|
8
|
+
parse_stdin_opts("usage: #{File::basename(__FILE__)} [options] <case> " +
|
9
|
+
"<status> [-]", 2)
|
8
10
|
|
11
|
+
result = do_api 'listStatuses', :fResolved => '1'
|
12
|
+
status = result.elements["/response/statuses/status[sStatus=\"#{ARGV[1]}\"]"]
|
9
13
|
unless status
|
10
14
|
puts "#{ARGV[1]} is not a resolved status."
|
11
15
|
exit 1
|
12
16
|
end
|
13
17
|
|
14
|
-
do_api('
|
15
|
-
|
18
|
+
result = do_api('search', :max => 1, :q => ARGV[0],
|
19
|
+
:cols => 'ixBug,ixBugParent,tags,sTitle,sStatus,sProject,' +
|
20
|
+
'sArea,sFixFor,sCategory,sPersonAssignedTo,' +
|
21
|
+
'sPriority,hrsCurrEst,dtDue,events')
|
22
|
+
bug = result.elements["/response/cases/case[@ixBug='#{ARGV[0]}']"]
|
23
|
+
unless bug
|
24
|
+
puts "Case #{ARGV[0]} does not exist."
|
25
|
+
exit 1
|
26
|
+
end
|
27
|
+
|
28
|
+
template = "# Fill in metadata for the case.\n"
|
29
|
+
template << maybe_append('title', bug.elements['sTitle'])
|
30
|
+
template << maybe_append('assignee', bug.elements['sPersonAssignedTo'])
|
31
|
+
template << maybe_append('parent', bug.elements['ixBugParent'])
|
32
|
+
template << maybe_array('tags',
|
33
|
+
bug.elements.collect('tags/tag') { |t| t.text })
|
34
|
+
template << maybe_append('project', bug.elements['sProject'])
|
35
|
+
template << maybe_append('area', bug.elements['sArea'])
|
36
|
+
template << maybe_append('milestone', bug.elements['sFixFor'])
|
37
|
+
template << maybe_append('category', bug.elements['sCategory'])
|
38
|
+
template << maybe_append('priority', bug.elements['sPriority'])
|
39
|
+
template << maybe_time('due', bug.elements['dtDue'])
|
40
|
+
template << maybe_append('estimate', bug.elements['hrsCurrEst'])
|
41
|
+
|
42
|
+
template << "\n"
|
43
|
+
bug.elements.each('events/event') do |event|
|
44
|
+
template << maybe_event(event.elements['evtDescription'],
|
45
|
+
event.elements['dt'])
|
46
|
+
template << maybe_literal(event.elements['sChanges'])
|
47
|
+
template << maybe_literal(event.elements['s'])
|
48
|
+
template << "\n"
|
49
|
+
end
|
50
|
+
template << <<HERE
|
51
|
+
# Enter an additional note for the case after the dashes.
|
52
|
+
---
|
53
|
+
HERE
|
54
|
+
data = get_editor_content options, template
|
55
|
+
|
56
|
+
params = { :ixBug => ARGV[0], :ixStatus => status.elements['ixStatus'].text }
|
57
|
+
params[:sTitle] = data['title'] if data['title']
|
58
|
+
params[:ixBugParent] = data['parent'] if data['parent']
|
59
|
+
params[:sTags] = data['tags'].join(',') if data['tags']
|
60
|
+
params[:sProject] = data['project'] if data['project']
|
61
|
+
params[:sArea] = data['area'] if data['area']
|
62
|
+
params[:sFixFor] = data['milestone'] if data['milestone']
|
63
|
+
params[:sCategory] = data['category'] if data['category']
|
64
|
+
params[:sPersonAssignedTo] = data['assignee'] if data['assignee']
|
65
|
+
params[:sPriority] = data['priority'] if data['priority']
|
66
|
+
params[:dtDue] = parse_time(data['due']) if parse_time(data['due'])
|
67
|
+
params[:hrsCurrEst] = data['estimate'] if data['estimate']
|
68
|
+
params[:sEvent] = data['body'] if data['body']
|
69
|
+
|
70
|
+
do_api('resolve', params)
|
data/bin/fogbugz-show
CHANGED
@@ -1,10 +1,15 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
require 'fogbugz/common'
|
3
3
|
|
4
|
+
check_api_url
|
5
|
+
check_api_token
|
6
|
+
|
4
7
|
options = parse_opts "usage: #{File::basename(__FILE__)} [options] <case>", 1
|
5
8
|
|
6
9
|
result = do_api('search', :max => 1, :q => ARGV[0],
|
7
|
-
:cols => 'ixBug,ixBugParent,tags,sTitle,sProject,sArea,
|
10
|
+
:cols => 'ixBug,ixBugParent,tags,sTitle,sProject,sArea,' +
|
11
|
+
'sFixFor,sCategory,sPersonAssignedTo,sPriority,' +
|
12
|
+
'hrsCurrEst,dtDue,events')
|
8
13
|
|
9
14
|
bug = result.elements["/response/cases/case[@ixBug='#{ARGV[0]}']"]
|
10
15
|
unless bug
|
data/bin/fogbugz-start
CHANGED
data/bin/fogbugz-statuses
CHANGED
data/bin/fogbugz-stop
CHANGED
data/lib/fogbugz/common.rb
CHANGED
@@ -23,14 +23,18 @@ def y; HighLine.use_color? ? HighLine::YELLOW : ''; end
|
|
23
23
|
def m; HighLine.use_color? ? HighLine::MAGENTA : ''; end
|
24
24
|
def c; HighLine.use_color? ? HighLine::CLEAR : ''; end
|
25
25
|
|
26
|
-
|
27
|
-
|
28
|
-
|
26
|
+
def check_api_url
|
27
|
+
unless ENV['FOGBUGZ_API_URL']
|
28
|
+
puts "Environment variable FOGBUGZ_API_URL must be set."
|
29
|
+
exit 1
|
30
|
+
end
|
29
31
|
end
|
30
32
|
|
31
|
-
|
32
|
-
|
33
|
-
|
33
|
+
def check_api_token
|
34
|
+
unless ENV['FOGBUGZ_API_TOKEN']
|
35
|
+
puts "Environment variable FOGBUGZ_API_TOKEN must be set."
|
36
|
+
exit 1
|
37
|
+
end
|
34
38
|
end
|
35
39
|
|
36
40
|
def parse_opts(usage, num_args)
|
@@ -64,13 +68,15 @@ def parse_stdin_opts(usage, num_args)
|
|
64
68
|
|
65
69
|
options[:file] = nil
|
66
70
|
opts.on('--file=<file>',
|
67
|
-
'Take the case content from the given file. Use - to read from
|
71
|
+
'Take the case content from the given file. Use - to read from ' +
|
72
|
+
'STDIN.') do |file|
|
68
73
|
options[:file] = file
|
69
74
|
end
|
70
75
|
|
71
76
|
options[:template] = nil
|
72
77
|
opts.on('--template=<template>',
|
73
|
-
'Use the file content or - for STDIN as the initial case
|
78
|
+
'Use the file content or - for STDIN as the initial case ' +
|
79
|
+
'content.') do |template|
|
74
80
|
options[:template] = template
|
75
81
|
end
|
76
82
|
end
|
@@ -363,6 +369,9 @@ HERE
|
|
363
369
|
elsif ARGV[0] and which("#{basename}-#{ARGV[0]}")
|
364
370
|
command = which("#{basename}-#{ARGV.shift}")
|
365
371
|
Process.wait(Process.fork { Process.exec(command, *ARGV) })
|
372
|
+
elsif ARGV[0].to_i.to_s == ARGV[0]
|
373
|
+
load "#{absolute}-show"
|
374
|
+
exit 0
|
366
375
|
else
|
367
376
|
puts usage
|
368
377
|
exit 1
|
metadata
CHANGED
@@ -1,49 +1,53 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: fogbugz
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
5
|
-
|
6
|
-
- 1
|
7
|
-
- 0
|
8
|
-
- 4
|
9
|
-
version: 1.0.4
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.0.5
|
5
|
+
prerelease:
|
10
6
|
platform: ruby
|
11
|
-
authors:
|
7
|
+
authors:
|
12
8
|
- Erik Charlebois
|
13
9
|
autorequire:
|
14
10
|
bindir: bin
|
15
11
|
cert_chain: []
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
dependencies:
|
20
|
-
- !ruby/object:Gem::Dependency
|
12
|
+
date: 2012-11-10 00:00:00.000000000 Z
|
13
|
+
dependencies:
|
14
|
+
- !ruby/object:Gem::Dependency
|
21
15
|
name: highline
|
22
|
-
|
23
|
-
|
24
|
-
requirements:
|
25
|
-
- -
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
|
28
|
-
- 0
|
29
|
-
version: "0"
|
16
|
+
requirement: !ruby/object:Gem::Requirement
|
17
|
+
none: false
|
18
|
+
requirements:
|
19
|
+
- - ! '>='
|
20
|
+
- !ruby/object:Gem::Version
|
21
|
+
version: '0'
|
30
22
|
type: :runtime
|
31
|
-
version_requirements: *id001
|
32
|
-
- !ruby/object:Gem::Dependency
|
33
|
-
name: chronic
|
34
23
|
prerelease: false
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
24
|
+
version_requirements: !ruby/object:Gem::Requirement
|
25
|
+
none: false
|
26
|
+
requirements:
|
27
|
+
- - ! '>='
|
28
|
+
- !ruby/object:Gem::Version
|
29
|
+
version: '0'
|
30
|
+
- !ruby/object:Gem::Dependency
|
31
|
+
name: chronic
|
32
|
+
requirement: !ruby/object:Gem::Requirement
|
33
|
+
none: false
|
34
|
+
requirements:
|
35
|
+
- - ! '>='
|
36
|
+
- !ruby/object:Gem::Version
|
37
|
+
version: '0'
|
42
38
|
type: :runtime
|
43
|
-
|
44
|
-
|
39
|
+
prerelease: false
|
40
|
+
version_requirements: !ruby/object:Gem::Requirement
|
41
|
+
none: false
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
46
|
+
description: ! 'This gem provides command line programs for manipulating FogBugz.
|
47
|
+
|
48
|
+
'
|
45
49
|
email: erikcharlebois@gmail.com
|
46
|
-
executables:
|
50
|
+
executables:
|
47
51
|
- fogbugz
|
48
52
|
- fogbugz-areas
|
49
53
|
- fogbugz-assign
|
@@ -68,40 +72,55 @@ executables:
|
|
68
72
|
- fogbugz-statuses
|
69
73
|
- fogbugz-stop
|
70
74
|
extensions: []
|
71
|
-
|
72
75
|
extra_rdoc_files: []
|
73
|
-
|
74
|
-
files:
|
76
|
+
files:
|
75
77
|
- lib/fogbugz/common.rb
|
76
|
-
|
78
|
+
- bin/fogbugz
|
79
|
+
- bin/fogbugz-areas
|
80
|
+
- bin/fogbugz-assign
|
81
|
+
- bin/fogbugz-categories
|
82
|
+
- bin/fogbugz-close
|
83
|
+
- bin/fogbugz-edit
|
84
|
+
- bin/fogbugz-filter
|
85
|
+
- bin/fogbugz-filters
|
86
|
+
- bin/fogbugz-list
|
87
|
+
- bin/fogbugz-login
|
88
|
+
- bin/fogbugz-logoff
|
89
|
+
- bin/fogbugz-milestones
|
90
|
+
- bin/fogbugz-open
|
91
|
+
- bin/fogbugz-people
|
92
|
+
- bin/fogbugz-priorities
|
93
|
+
- bin/fogbugz-projects
|
94
|
+
- bin/fogbugz-reactivate
|
95
|
+
- bin/fogbugz-reopen
|
96
|
+
- bin/fogbugz-resolve
|
97
|
+
- bin/fogbugz-show
|
98
|
+
- bin/fogbugz-start
|
99
|
+
- bin/fogbugz-statuses
|
100
|
+
- bin/fogbugz-stop
|
77
101
|
homepage: https://github.com/erikcharlebois/fogbugz
|
78
|
-
licenses:
|
102
|
+
licenses:
|
79
103
|
- BSD
|
80
104
|
post_install_message:
|
81
105
|
rdoc_options: []
|
82
|
-
|
83
|
-
require_paths:
|
106
|
+
require_paths:
|
84
107
|
- lib
|
85
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
requirements:
|
94
|
-
- -
|
95
|
-
- !ruby/object:Gem::Version
|
96
|
-
|
97
|
-
- 0
|
98
|
-
version: "0"
|
108
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
109
|
+
none: false
|
110
|
+
requirements:
|
111
|
+
- - ! '>='
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: '0'
|
114
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
115
|
+
none: false
|
116
|
+
requirements:
|
117
|
+
- - ! '>='
|
118
|
+
- !ruby/object:Gem::Version
|
119
|
+
version: '0'
|
99
120
|
requirements: []
|
100
|
-
|
101
121
|
rubyforge_project: nowarning
|
102
|
-
rubygems_version: 1.
|
122
|
+
rubygems_version: 1.8.24
|
103
123
|
signing_key:
|
104
124
|
specification_version: 3
|
105
125
|
summary: A command line interface to FogBugz.
|
106
126
|
test_files: []
|
107
|
-
|