fgi 1.1.4 → 1.1.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.
Files changed (5) hide show
  1. checksums.yaml +4 -4
  2. data/bin/fgi +30 -22
  3. data/lib/fgi.rb +1 -1
  4. data/lib/fgi/git_service.rb +28 -25
  5. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 33608108acb7c3f2ecd4c83270135f5e06740287
4
- data.tar.gz: fa341ad5f16c126722c08201f4bb959cd2436c8c
3
+ metadata.gz: d59a2d5cf5f06e8ac7234bd5e997f2979dee1c23
4
+ data.tar.gz: 87c72213d77138f9f9e2f962763d08c2c75cf310
5
5
  SHA512:
6
- metadata.gz: 81a4ef11f6164af60057df09b2196de60e616350bc0d23e0792c254dd92c451169322f83aaa97c942254a012865e890c8aa792e869a687bce39a3e282be1605e
7
- data.tar.gz: 12e636b5a22cb8db4b4c27ce199952a601e6d759bcdf6b4b3362495cba261b4f5ac59a87adb2d5e50deabdd6645ef4af97ec34a5440c0a1260053dc0a69ac733
6
+ metadata.gz: 80a6daec4ed632e0ab6a8c73cfeabad5592c3fa7c67cbde92e42557d76c49a32a96632bce0b79ea362483d8f11a7d034fecd64321b7eef41b3485ac8e783888b
7
+ data.tar.gz: f443b71afe99c46d12b2bd9f305d7aed2c1f806142f3013473df725fe4540f580344354d328dcfcf0063dcfac2d366d126c5b0bdacd8aeb97c5c0a7090a3448d
data/bin/fgi CHANGED
@@ -11,43 +11,40 @@ argv = ARGV
11
11
 
12
12
  options = {}
13
13
  options_parser = OptionParser.new do |fgi|
14
- fgi.banner = 'Usage: fgi COMMAND [OPTION]'
15
- fgi.separator ''
16
- fgi.separator 'Commands'
17
- fgi.separator ' config : run the FGI configurator.'
18
- fgi.separator ' token [TOKEN] : define the new user token.'
19
- fgi.separator ' new [ISSUE_NAME] : create the issue with the given name.'
20
- fgi.separator ' fix : fix the current issue.'
21
- fgi.separator ' ... more comming soon ...'
22
- fgi.separator ''
23
- fgi.separator 'Options'
24
-
25
- fgi.on('-h', '--help', 'Display the FGI manual')
26
-
27
- fgi.on('-v', '--version', 'Display the FGI version') do
28
- puts "FGI #{Fgi::VERSION}"
29
- exit!
30
- end
31
-
14
+ fgi.banner = 'Usage: fgi COMMAND [OPTIONS]'
15
+ # CONFIG
16
+ fgi.separator "\nfgi config : run the FGI configurator."
17
+ # TOKEN
18
+ fgi.separator "\nfgi token [TOKEN] : define the new user token."
19
+ # NEW
20
+ fgi.separator "\nfgi new [ISSUE_NAME] [OPTIONS] : create the issue with the given name.\n\n"
32
21
  fgi.on('-e', '--estimate [ESTIMATION]', 'How many time do you think you will spend on this issue ? (example: 1d13h37m05s)') do |estimate|
33
22
  options[:estimate] = estimate
34
23
  end
35
-
36
24
  fgi.on('-l', '--later', 'Tell FGI that you only want to create an issue but not to create and switch branch.') do
37
25
  options[:later] = true
38
26
  end
39
-
40
27
  fgi.on('-p', '--prefix [PREFIX]', 'Tell FGI that you want to add a prefix to the branch name.') do |prefix|
41
28
  options[:prefix] = prefix
42
29
  end
43
-
44
30
  fgi.on('--from-current', 'Tell FGI to create the new issue from a specific branch.') do
45
31
  options[:from_current] = true
46
32
  end
47
-
33
+ # FIX
34
+ fgi.separator "\nfgi fix [OPTIONS] : fix the current issue.\n\n"
48
35
  fgi.on('-m', '--fix-message [MESSAGE]', %q(Add a custom message with the basic 'Fix #ID')) do |message|
49
36
  options[:fix_message] = message
50
37
  end
38
+ # CURRENT
39
+ fgi.separator "\nfgi current [OPTIONS] : display the current branch and issue."
40
+ fgi.separator "\n -e, --estimate [ESTIMATION] Add/rewrite the estimation time on the current issue. See 'fgi new' options."
41
+ # COMMON OPTIONS
42
+ fgi.separator "\nCommon options :\n\n"
43
+ fgi.on('-h', '--help', 'Display the FGI manual')
44
+ fgi.on('-v', '--version', 'Display the FGI version') do
45
+ puts "FGI #{Fgi::VERSION}"
46
+ exit!
47
+ end
51
48
  end
52
49
  options_parser.parse!
53
50
 
@@ -77,6 +74,17 @@ when 'token'
77
74
  Fgi::Tokens.add_token(argv[1])
78
75
  when 'fix'
79
76
  Fgi::GitService.fix_issue(options)
77
+ when 'current'
78
+ current_branch = Fgi::GitService.current_branch
79
+ puts "Current branch : #{current_branch}"
80
+ if (defined? Fgi::ISSUES) && !options[:estimate].nil?
81
+ Fgi::GitService.set_issue_estimation(issue_id: Fgi::ISSUES[current_branch][:id], estimation: options[:estimate], git_service: Fgi::CONFIG[:git_service_class].new)
82
+ exit!
83
+ elsif Fgi::ISSUES
84
+ puts "Current issue : #{Fgi::ISSUES[current_branch][:title]}" || 'This branch do not match any FGI issue.'
85
+ else
86
+ puts 'This is not an FGI branch. There is no FGI issue for this one.'
87
+ end
80
88
  else
81
89
  puts options_parser
82
90
  end
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.4'.freeze
17
+ VERSION = '1.1.5'.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?
@@ -32,7 +32,7 @@ module Fgi
32
32
  elsif !response['iid'].nil?
33
33
  branch_name = snakify(title)
34
34
  branch_name = "#{options[:prefix]}/#{branch_name}" unless options[:prefix].nil?
35
- save_issue(branch: branch_name, id: response['iid'], title: response['title'].tr("'", ' '))
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
37
  set_issue_estimation(
38
38
  issue_id: response['iid'],
@@ -48,7 +48,6 @@ module Fgi
48
48
  # => Return to the default project branch
49
49
  # @param options [Hash] the options given by the user in the command line
50
50
  def fix_issue(options)
51
- current_branch = `git branch | grep '*'`.gsub('* ', '').chomp
52
51
  if ISSUES[current_branch].nil?
53
52
  puts "We could not find any issues to fix on your current branch (#{current_branch})."
54
53
  exit!
@@ -74,6 +73,31 @@ module Fgi
74
73
  end
75
74
  end
76
75
 
76
+ def current_branch
77
+ `git branch | grep '*'`.gsub('* ', '').chomp
78
+ end
79
+
80
+ # TODO, Make sure it works for all git services
81
+ # The method to set the estimation time to resolve the issue
82
+ # @param issue_id [Integer] the issue id to set its estimation time
83
+ # @param estimation [String] the estimation time given by the user
84
+ # @param git_service [Class] the git service class to use for this project
85
+ def set_issue_estimation(issue_id:, estimation:, git_service:)
86
+ return if estimation.nil?
87
+ # Since GitLab version isn't up to date, we should be able
88
+ # to add estimations in issues comments (/estimate)
89
+ url_with_querystring = "#{git_service.routes[:issues]}/#{issue_id}/time_estimate?duration=#{estimation}"
90
+ headers = { git_service.token_header => TOKEN, 'Content-Type' => 'application/json' }
91
+ response = post(url: url_with_querystring, headers: headers)
92
+ # GitLab sucks sometimes... This API is an example
93
+ begin
94
+ response_body = JSON.parse(response[:body])
95
+ rescue Exception
96
+ response_body = response[:body]
97
+ end
98
+ post_estimation_display(response_body['human_time_estimate'], estimation)
99
+ end
100
+
77
101
  private
78
102
 
79
103
  def ask_for_remote
@@ -128,26 +152,6 @@ module Fgi
128
152
  File.open('.current_issues.fgi.yml', 'w') { |f| f.write(issues.to_yaml) }
129
153
  end
130
154
 
131
- # TODO, Make sure it works for all git services
132
- # The method to set the estimation time to resolve the issue
133
- # @param issue_id [Integer] the issue id to set its estimation time
134
- # @param estimation [String] the estimation time given by the user
135
- # @param git_service [Class] the git service class to use for this project
136
- def set_issue_estimation(issue_id:, estimation:, git_service:)
137
- return if estimation.nil?
138
- # Since GitLab version isn't up to date, we should be able
139
- # to add estimations in issues comments (/estimate)
140
- url_with_querystring = "#{git_service.routes[:issues]}/#{issue_id}/time_estimate?duration=#{estimation}"
141
- response = post(url: url_with_querystring, headers: headers)
142
- # GitLab sucks sometimes... This API is an example
143
- begin
144
- response_body = JSON.parse(response[:body])
145
- rescue Exception
146
- response_body = response[:body]
147
- end
148
- post_estimation_display(response_body['human_time_estimate'], estimation)
149
- end
150
-
151
155
  # TODO, Make sure it works for all git services
152
156
  # The method used to create issues
153
157
  # @param title [String] the issue title
@@ -170,7 +174,7 @@ module Fgi
170
174
  # @param name [String] the branch name
171
175
  def create_branch(name:, from_current:)
172
176
  from = if from_current
173
- `git branch | grep '*'`.gsub('* ', '').chomp
177
+ current_branch
174
178
  else
175
179
  CONFIG[:default_branch]
176
180
  end
@@ -179,8 +183,7 @@ module Fgi
179
183
  `git checkout #{from}` # Be sure to be on the default or specified branch.
180
184
  `git pull #{git_remote} HEAD` # Be sure to get the remote changes locally.
181
185
  `git checkout -b #{name}` # Create the new branch.
182
- to = `git branch | grep '*'`.gsub('* ', '').chomp
183
- puts "\nYou are now working on branch #{to} created from #{from} !"
186
+ puts "\nYou are now working on branch #{current_branch} created from #{from} !"
184
187
  end
185
188
 
186
189
  # The method used to get the issue description
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
4
+ version: 1.1.5
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-06 00:00:00.000000000 Z
12
+ date: 2017-10-09 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: bundler