captive-release 0.6.0 → 0.7.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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 29aedc00590a519b9e739e62c78da5bb51369ef22871217b1d51b384584e6375
|
|
4
|
+
data.tar.gz: a52702e1b4cc59ae94b3baac8fe9a87a27e1fd0c76e715e212c67b540708f81a
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1cb2a9558aceaef25bf15340bc0918259b942bbb6c91a4b8a7311740441da5a7b6e7bccf1b5c53b7dc66a6d05c18c68f2627eabe0740ae6a73458fbc4ccc4eec
|
|
7
|
+
data.tar.gz: 7cadc0350772b0d766a27018fdca30b83a71d75e8c6096ee31918768a9e8d15136528689b37ca32d0ec591f34dab8c9356f518475652238943197930420061da
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module CaptiveRelease
|
|
4
|
+
# Remet Gemfile.lock d'aplomb après un bump : un .gemspec à la racine porte la version
|
|
5
|
+
# bumpée, donc Gemfile.lock devient périmé et --deployment le refuse en CI si personne ne
|
|
6
|
+
# le relance.
|
|
7
|
+
#
|
|
8
|
+
# Cette unité change quand la façon de détecter ou de relancer le lock change,
|
|
9
|
+
# ReleaseCommand quand la suite des étapes change.
|
|
10
|
+
class GemfileLockRefresh
|
|
11
|
+
LOCKFILE = "Gemfile.lock"
|
|
12
|
+
|
|
13
|
+
def initialize(files: RepoFiles.new("."))
|
|
14
|
+
@files = files
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
# rescue : une arborescence hostile ne doit jamais faire échouer la release, la détection
|
|
18
|
+
# n'est qu'une commodité. Une fois vraie, l'exécution du bundle lock, elle, échoue haut
|
|
19
|
+
# la main si elle rate.
|
|
20
|
+
def needed?
|
|
21
|
+
File.exist?(@files.path(LOCKFILE)) && @files.glob("*.gemspec").any? && !GitCommands.ignored?(LOCKFILE)
|
|
22
|
+
rescue StandardError
|
|
23
|
+
false
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def call
|
|
27
|
+
Shell.run! "bundle lock"
|
|
28
|
+
end
|
|
29
|
+
end
|
|
30
|
+
end
|
|
@@ -10,6 +10,10 @@ module CaptiveRelease
|
|
|
10
10
|
|
|
11
11
|
def self.remote_url = Shell.capture("git remote get-url origin 2>/dev/null")
|
|
12
12
|
|
|
13
|
+
# Une gem gitignore souvent son propre Gemfile.lock (convention de bundle gem) : le
|
|
14
|
+
# commiter quand même part en échec, git refusant d'ajouter un fichier ignoré.
|
|
15
|
+
def self.ignored?(chemin) = !Shell.capture("git check-ignore #{Shell.escape(chemin)} 2>/dev/null").empty?
|
|
16
|
+
|
|
13
17
|
def self.tag?(nom) = !Shell.capture("git tag -l #{nom} 2>/dev/null").empty?
|
|
14
18
|
|
|
15
19
|
# Les sujets de commit depuis le tag donné jusqu'à HEAD - la matière première de la
|
|
@@ -28,13 +28,24 @@ module CaptiveRelease
|
|
|
28
28
|
end
|
|
29
29
|
|
|
30
30
|
VersionFilesWriting.new(terminal: @terminal).call(prochaine, @config.version_files)
|
|
31
|
-
GitRelease.new(terminal: @terminal).call(prochaine,
|
|
31
|
+
GitRelease.new(terminal: @terminal).call(prochaine, chemins_a_commiter)
|
|
32
32
|
publication.call(prochaine)
|
|
33
33
|
@terminal.say "\n🎉 #{@terminal.bold("Version v#{prochaine} released successfully!")}\n"
|
|
34
34
|
end
|
|
35
35
|
|
|
36
36
|
private
|
|
37
37
|
|
|
38
|
+
def chemins_a_commiter
|
|
39
|
+
chemins = @config.version_files.map(&:path)
|
|
40
|
+
return chemins unless (refresh = GemfileLockRefresh.new).needed?
|
|
41
|
+
|
|
42
|
+
@terminal.say "\n#{@terminal.bold("Refreshing Gemfile.lock...")}"
|
|
43
|
+
refresh.call
|
|
44
|
+
@terminal.done GemfileLockRefresh::LOCKFILE
|
|
45
|
+
|
|
46
|
+
chemins + [ GemfileLockRefresh::LOCKFILE ]
|
|
47
|
+
end
|
|
48
|
+
|
|
38
49
|
def afficher_changements(courante)
|
|
39
50
|
lien = ChangesSince.url(courante)
|
|
40
51
|
return unless lien
|
data/lib/captive_release.rb
CHANGED
|
@@ -36,6 +36,7 @@ require_relative "captive_release/build_dispatch_run"
|
|
|
36
36
|
require_relative "captive_release/build_command"
|
|
37
37
|
require_relative "captive_release/menu"
|
|
38
38
|
require_relative "captive_release/version_choice"
|
|
39
|
+
require_relative "captive_release/gemfile_lock_refresh"
|
|
39
40
|
require_relative "captive_release/git_release"
|
|
40
41
|
require_relative "captive_release/changes_since"
|
|
41
42
|
require_relative "captive_release/release_publication"
|
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.
|
|
4
|
+
version: 0.7.1
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Captive Studio
|
|
@@ -34,6 +34,7 @@ files:
|
|
|
34
34
|
- lib/captive_release/config_loader.rb
|
|
35
35
|
- lib/captive_release/config_writer.rb
|
|
36
36
|
- lib/captive_release/framework_detector.rb
|
|
37
|
+
- lib/captive_release/gemfile_lock_refresh.rb
|
|
37
38
|
- lib/captive_release/git_commands.rb
|
|
38
39
|
- lib/captive_release/git_release.rb
|
|
39
40
|
- lib/captive_release/github_api.rb
|