fgi 1.1.5 → 1.1.6
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.
- 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
|