fgi 1.1.5 → 1.1.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/fgi +7 -3
- data/lib/fgi.rb +1 -1
- data/lib/fgi/git_service.rb +47 -17
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 91922d15f334ba84772f933b85794b8684e0e26a
|
4
|
+
data.tar.gz: ad27509e51ffc44569ca6baa93023770b9988621
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: af1d05fc79eb0889510fd949c6206ef0d48de344fb904b0e13e37fa5f372dfeb3a018326fb4987ffaa32c76998907630064f17bce1de8c96149250c3e7f488e9
|
7
|
+
data.tar.gz: 6d3fd9699f8b44ddbbff1e450f82f6ca5bd13a067b5e0082fa312b6e8a4b042f1229b656199172d8d87d8df0577ab621159ef98b719c5f4daa5c98e3e084e7fa
|
data/bin/fgi
CHANGED
@@ -19,7 +19,7 @@ options_parser = OptionParser.new do |fgi|
|
|
19
19
|
# NEW
|
20
20
|
fgi.separator "\nfgi new [ISSUE_NAME] [OPTIONS] : create the issue with the given name.\n\n"
|
21
21
|
fgi.on('-e', '--estimate [ESTIMATION]', 'How many time do you think you will spend on this issue ? (example: 1d13h37m05s)') do |estimate|
|
22
|
-
options[:
|
22
|
+
options[:duration] = estimate
|
23
23
|
end
|
24
24
|
fgi.on('-l', '--later', 'Tell FGI that you only want to create an issue but not to create and switch branch.') do
|
25
25
|
options[:later] = true
|
@@ -35,6 +35,9 @@ options_parser = OptionParser.new do |fgi|
|
|
35
35
|
fgi.on('-m', '--fix-message [MESSAGE]', %q(Add a custom message with the basic 'Fix #ID')) do |message|
|
36
36
|
options[:fix_message] = message
|
37
37
|
end
|
38
|
+
fgi.on('-s', '--spent [SPENT_TIME]', 'How many time have you spent on this issue ? (example: 1d13h37m05s)') do |spent|
|
39
|
+
options[:duration] = spent
|
40
|
+
end
|
38
41
|
# CURRENT
|
39
42
|
fgi.separator "\nfgi current [OPTIONS] : display the current branch and issue."
|
40
43
|
fgi.separator "\n -e, --estimate [ESTIMATION] Add/rewrite the estimation time on the current issue. See 'fgi new' options."
|
@@ -77,8 +80,9 @@ when 'fix'
|
|
77
80
|
when 'current'
|
78
81
|
current_branch = Fgi::GitService.current_branch
|
79
82
|
puts "Current branch : #{current_branch}"
|
80
|
-
if (defined? Fgi::ISSUES) && !options[:
|
81
|
-
Fgi::GitService.
|
83
|
+
if (defined? Fgi::ISSUES) && !options[:duration].nil?
|
84
|
+
res = Fgi::GitService.set_issue_time_trackers(issue_id: Fgi::ISSUES[current_branch][:id], duration: options[:duration], git_service: Fgi::CONFIG[:git_service_class].new, tracker: :estimate)
|
85
|
+
post_estimation_display(res['human_time_estimate'], options[:duration])
|
82
86
|
exit!
|
83
87
|
elsif Fgi::ISSUES
|
84
88
|
puts "Current issue : #{Fgi::ISSUES[current_branch][:title]}" || 'This branch do not match any FGI issue.'
|
data/lib/fgi.rb
CHANGED
@@ -14,7 +14,7 @@ module Fgi
|
|
14
14
|
require_relative 'fgi/configuration'
|
15
15
|
require_relative 'fgi/git_service'
|
16
16
|
|
17
|
-
VERSION = '1.1.
|
17
|
+
VERSION = '1.1.6'.freeze
|
18
18
|
|
19
19
|
# Add FGI user's current issues to the gitignore
|
20
20
|
if `cat .gitignore | grep '.current_issues.fgi.yml'`.empty?
|
data/lib/fgi/git_service.rb
CHANGED
@@ -34,11 +34,15 @@ module Fgi
|
|
34
34
|
branch_name = "#{options[:prefix]}/#{branch_name}" unless options[:prefix].nil?
|
35
35
|
save_issue(branch: branch_name, id: response['iid'], title: response['title'].tr("'", ' ').tr('_', ' '))
|
36
36
|
create_branch(name: branch_name, from_current: options[:from_current]) unless options[:later]
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
37
|
+
unless options[:duration].nil?
|
38
|
+
res = set_issue_time_trackers(
|
39
|
+
issue_id: response['iid'],
|
40
|
+
duration: options[:duration],
|
41
|
+
git_service: git_service,
|
42
|
+
tracker: :estimate
|
43
|
+
)
|
44
|
+
post_estimation_display(res['human_time_estimate'], options[:duration])
|
45
|
+
end
|
42
46
|
end
|
43
47
|
end
|
44
48
|
|
@@ -52,6 +56,7 @@ module Fgi
|
|
52
56
|
puts "We could not find any issues to fix on your current branch (#{current_branch})."
|
53
57
|
exit!
|
54
58
|
end
|
59
|
+
set_spent_time(options: options, issue_id: ISSUES[current_branch][:id])
|
55
60
|
git_remote = ask_for_remote
|
56
61
|
`git add .`
|
57
62
|
puts "Are you sure to want to close the issue #{ISSUES[current_branch][:title]} ?"
|
@@ -62,7 +67,7 @@ module Fgi
|
|
62
67
|
commit_message += " - #{options[:fix_message]}" unless options[:fix_message].nil?
|
63
68
|
`git commit -a --allow-empty -m '#{commit_message}'`
|
64
69
|
`git push #{git_remote} HEAD`
|
65
|
-
`git branch -u #{git_remote}/#{
|
70
|
+
`git branch -u #{git_remote}/#{ISSUES[current_branch]}` # Define the upstream branch
|
66
71
|
`git checkout #{CONFIG[:default_branch]}` # Be sure to be on the default branch.
|
67
72
|
remove_issue(current_branch)
|
68
73
|
puts "Congrat's ! You're now back to work on the default branch (#{CONFIG[:default_branch]})"
|
@@ -73,29 +78,34 @@ module Fgi
|
|
73
78
|
end
|
74
79
|
end
|
75
80
|
|
76
|
-
def current_branch
|
77
|
-
`git branch | grep '*'`.gsub('* ', '').chomp
|
78
|
-
end
|
79
|
-
|
80
81
|
# TODO, Make sure it works for all git services
|
81
82
|
# The method to set the estimation time to resolve the issue
|
82
83
|
# @param issue_id [Integer] the issue id to set its estimation time
|
83
84
|
# @param estimation [String] the estimation time given by the user
|
84
85
|
# @param git_service [Class] the git service class to use for this project
|
85
|
-
|
86
|
-
|
86
|
+
# @param tracker [Symbol] the tracker to set. Can be :estimate or :spent
|
87
|
+
def set_issue_time_trackers(issue_id:, duration:, git_service:, tracker:)
|
88
|
+
return if duration.nil? || !%i[estimate spent].include?(tracker)
|
87
89
|
# Since GitLab version isn't up to date, we should be able
|
88
|
-
# to add estimations in issues comments (/estimate)
|
89
|
-
|
90
|
+
# to add estimations and spent time in issues comments (/estimate, /spent)
|
91
|
+
api = if tracker == :spent
|
92
|
+
'add_spent_time'
|
93
|
+
else
|
94
|
+
'time_estimate'
|
95
|
+
end
|
96
|
+
url_with_querystring = "#{git_service.routes[:issues]}/#{issue_id}/#{api}?duration=#{duration}"
|
90
97
|
headers = { git_service.token_header => TOKEN, 'Content-Type' => 'application/json' }
|
91
98
|
response = post(url: url_with_querystring, headers: headers)
|
92
99
|
# GitLab sucks sometimes... This API is an example
|
93
100
|
begin
|
94
|
-
|
101
|
+
JSON.parse(response[:body])
|
95
102
|
rescue Exception
|
96
|
-
|
103
|
+
response[:body]
|
97
104
|
end
|
98
|
-
|
105
|
+
end
|
106
|
+
|
107
|
+
def current_branch
|
108
|
+
`git branch | grep '*'`.gsub('* ', '').chomp
|
99
109
|
end
|
100
110
|
|
101
111
|
private
|
@@ -127,6 +137,17 @@ module Fgi
|
|
127
137
|
end
|
128
138
|
end
|
129
139
|
|
140
|
+
def set_spent_time(options:, issue_id:)
|
141
|
+
return if options[:duration].nil?
|
142
|
+
res = set_issue_time_trackers(
|
143
|
+
issue_id: issue_id,
|
144
|
+
duration: options[:duration],
|
145
|
+
git_service: CONFIG[:git_service_class].new,
|
146
|
+
tracker: :spent
|
147
|
+
)
|
148
|
+
post_spent_display(res['human_time_estimate'], options[:duration])
|
149
|
+
end
|
150
|
+
|
130
151
|
# Save the current user's FGI created issue in the gitignored file 'current_issue.fgi.yml'
|
131
152
|
# @param id [Integer] the current issue id
|
132
153
|
# @param title [String] the current issue name
|
@@ -238,6 +259,15 @@ module Fgi
|
|
238
259
|
end
|
239
260
|
end
|
240
261
|
|
262
|
+
def post_spent_display(response_spent, spent_time)
|
263
|
+
if response_spent.nil?
|
264
|
+
puts "\nWe weren't able to save your spent time."
|
265
|
+
puts "You'll have to do it manually on #{CONFIG[:git_service].capitalize}."
|
266
|
+
else
|
267
|
+
puts "\nYou have spent #{spent_time} on this issue."
|
268
|
+
end
|
269
|
+
end
|
270
|
+
|
241
271
|
# The method used to commit the user's local changes
|
242
272
|
def commit_changes
|
243
273
|
puts 'Enter your commit message :'
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: fgi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.1.
|
4
|
+
version: 1.1.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Julien Philibin
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2017-10-
|
12
|
+
date: 2017-10-10 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: bundler
|