captive-release 0.16.4 → 0.17.1

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: ee8c3f00a3a506e332e7db04b0566dacb21c9865b38ac76ca08ef591049ec540
4
- data.tar.gz: 240e9128f724f932cdb96b05586abd09e87b1776b5ef2fd27a9e4232c4f492b3
3
+ metadata.gz: 2df99fcc517bafca108d34683c4329c57e7f6b535334799ca26e9413d12d2cba
4
+ data.tar.gz: d5356a1e70961d23c213b08f1d5e89daa45942d0743e936deaa39cf4cf9757c6
5
5
  SHA512:
6
- metadata.gz: c7f8edef4ccb729148debbfa08eb87709b0091c04cc814185878f5e882db1036b08164cbdbf64b5bc99fe6ab318a3272d3ae2e280bd9a62a49adda4caa8a2d17
7
- data.tar.gz: bdc89f8df5c2ccac587bac93ca0cbb372597e7b114d29735e4cd93928f38a3f96a2386d4b2f298551b682d5631d5249ceaed5dfb263e751b4e7d3ac3775ea344
6
+ metadata.gz: eb8856f58b568b22212898178938ce53d45c620b5ca88b74931662cde870fb9739b8f4c8e9d90b82ac6d48390f9279cd02b88b7824ec51cc9cd601089a33b806
7
+ data.tar.gz: 4c6a21bb1be54eeb5eb8d8e1ac3e8add804d8c1855dca50d8df43daf2e872fe974a1fbcac561f47f2dee53db373c0ab5fd6b40dd791504ec8cf7d270d59d59bc
@@ -13,8 +13,7 @@ module CaptiveRelease
13
13
  @keys = keys
14
14
  end
15
15
 
16
- def call(libelles)
17
- rang = 0
16
+ def call(libelles, rang = 0)
18
17
  loop do
19
18
  draw(libelles, rang)
20
19
  touche = @keys.read
@@ -13,7 +13,7 @@ module CaptiveRelease
13
13
  def call(framework, workflow_par_defaut)
14
14
  titre = "\n#{@terminal.bold(Messages.t(:framework_detected, framework: framework))} " \
15
15
  "#{Messages.t(:configure_build)}"
16
- return nil unless Menu.new(terminal: @terminal).choose(titre, Messages.t(:yes) => true, Messages.t(:no) => false)
16
+ return nil unless Menu.new(terminal: @terminal).choose(titre, { Messages.t(:yes) => true, Messages.t(:no) => false })
17
17
 
18
18
  BuildConfig.new(build_workflow: workflow(workflow_par_defaut))
19
19
  end
@@ -13,10 +13,11 @@ module CaptiveRelease
13
13
  end
14
14
 
15
15
  # entries : un Hash {libellé affiché => valeur rendue}, dans l'ordre d'affichage.
16
- def choose(title, entries)
16
+ def choose(title, entries, default: 0)
17
17
  @terminal.say "#{title}\n"
18
18
  libelles = entries.keys
19
- entries.values[@keys.interactive? ? ArrowSelect.new(terminal: @terminal, keys: @keys).call(libelles) : numbered(libelles)]
19
+ rang = @keys.interactive? ? ArrowSelect.new(terminal: @terminal, keys: @keys).call(libelles, default) : numbered(libelles)
20
+ entries.values[rang]
20
21
  end
21
22
 
22
23
  private
@@ -15,7 +15,7 @@ module CaptiveRelease
15
15
  ReleasePreconditions.new(terminal: @terminal).verifier!
16
16
  DefaultBranchGuard.new(terminal: @terminal).verifier! if confirmation
17
17
  suggestion = ReleaseOverview.new(terminal: @terminal).call(courante)
18
- prochaine = VersionChoice.new(terminal: @terminal).call(courante, bump_arg)
18
+ prochaine = VersionChoice.new(terminal: @terminal).call(courante, bump_arg, suggestion)
19
19
  PrereleaseGuard.new(terminal: @terminal).verifier!(prochaine, @version_files)
20
20
  ReleaseConfirmation.new(terminal: @terminal).verifier!(suggestion, courante, prochaine) if confirmation
21
21
  prochaine
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CaptiveRelease
4
- VERSION = "0.16.4"
4
+ VERSION = "0.17.1"
5
5
  end
@@ -14,8 +14,8 @@ module CaptiveRelease
14
14
  @terminal = terminal
15
15
  end
16
16
 
17
- def call(current, bump_arg)
18
- bump_arg ? resolve(current, bump_arg) : ask(current)
17
+ def call(current, bump_arg, suggestion = nil)
18
+ bump_arg ? resolve(current, bump_arg) : ask(current, suggestion)
19
19
  end
20
20
 
21
21
  private
@@ -26,11 +26,21 @@ module CaptiveRelease
26
26
  refuse(Messages.t(:invalid_bump_type, type: type))
27
27
  end
28
28
 
29
- def ask(current)
30
- choisi = Menu.new(terminal: @terminal).choose(Messages.t(:choose_release_type), candidates_for(current))
29
+ # Le curseur part sur le bump suggéré par les commits, s'il fait partie des candidats.
30
+ def ask(current, suggestion)
31
+ candidats = candidates_for(current)
32
+ defaut = candidats.values.index(suggested_version(current, suggestion)) if suggestion
33
+ choisi = Menu.new(terminal: @terminal).choose(Messages.t(:choose_release_type), candidats, default: defaut || 0)
31
34
  choisi == CUSTOM ? type_it : choisi
32
35
  end
33
36
 
37
+ # Depuis une pré-release, un minor suggéré n'a pas de version : le curseur reste sur le premier choix.
38
+ def suggested_version(current, suggestion)
39
+ VersionBumper.bump(current, suggestion)
40
+ rescue ArgumentError
41
+ nil
42
+ end
43
+
34
44
  # La valeur rendue est la version elle-même, sauf pour Custom qui n'en a pas encore une.
35
45
  # Depuis une pré-release, seules l'itération et la promotion sont proposées : patch, minor et major y
36
46
  # prêteraient à confusion.
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: captive-release
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.16.4
4
+ version: 0.17.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Captive Studio