eac_launcher 0.2.2 → 0.3.0
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
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7c5a7b375361961ba04d494e5951f67f9a3fef5b
|
4
|
+
data.tar.gz: 8346f75d6b450beaca58be9b77a8468fff5b115b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: eb45c7cffc1795bf357ed5eaafa1110d95ca070e5ea7b816881d75b44af0b77337a05125c29520277fcb6cc37e5dad27624ee8cfa7e7bc5a09a75182bea5f988
|
7
|
+
data.tar.gz: 2b0e5822b3addeee9bbf09619569caba0f5def8bc2843a4ef8ab33c3b5732aa05cd2591ee1c7e2ed23dde7457741a96e84cc5e572e414b5c3e2d5dbf0f0f4a5a
|
@@ -6,6 +6,8 @@ module EacLauncher
|
|
6
6
|
include ::Eac::SimpleCache
|
7
7
|
include ::EacRubyUtils::Console::Speaker
|
8
8
|
|
9
|
+
CHECKERS = %w[publish_remote_no_exist remote_equal remote_following local_following].freeze
|
10
|
+
|
9
11
|
def initialize(instance)
|
10
12
|
@instance = instance
|
11
13
|
end
|
@@ -13,27 +15,49 @@ module EacLauncher
|
|
13
15
|
protected
|
14
16
|
|
15
17
|
def internal_check
|
16
|
-
if
|
17
|
-
|
18
|
-
elsif remote_equal_or_following?
|
19
|
-
::EacLauncher::Publish::CheckResult.updated('Remote equal or following')
|
20
|
-
elsif local_following?
|
21
|
-
::EacLauncher::Publish::CheckResult.pending('Local following')
|
22
|
-
else
|
23
|
-
divergent_result
|
24
|
-
end
|
18
|
+
CHECKERS.each { |checker| return send("#{checker}_check_result") if send("#{checker}?") }
|
19
|
+
divergent_result_check_result
|
25
20
|
end
|
26
21
|
|
27
22
|
private
|
28
23
|
|
29
|
-
def
|
24
|
+
def publish_remote_no_exist?
|
25
|
+
!sgit.remote_exist?(::EacLauncher::Git::WarpBase::TARGET_REMOTE)
|
26
|
+
end
|
27
|
+
|
28
|
+
def publish_remote_no_exist_check_result
|
29
|
+
::EacLauncher::Publish::CheckResult.blocked('Remote does not exist')
|
30
|
+
end
|
31
|
+
|
32
|
+
def remote_equal?
|
33
|
+
remote_sha.present? && remote_sha == local_sha
|
34
|
+
end
|
35
|
+
|
36
|
+
def remote_equal_check_result
|
37
|
+
::EacLauncher::Publish::CheckResult.updated('Remote equal')
|
38
|
+
end
|
39
|
+
|
40
|
+
def remote_following?
|
41
|
+
remote_sha.present? && sgit.descendant?(remote_sha, local_sha)
|
42
|
+
end
|
43
|
+
|
44
|
+
def remote_following_check_result
|
45
|
+
::EacLauncher::Publish::CheckResult.outdated('Remote following')
|
46
|
+
end
|
47
|
+
|
48
|
+
def divergent_result_check_result
|
30
49
|
::EacLauncher::Publish::CheckResult.blocked(
|
31
50
|
"Divergent (L: #{local_sha}, R: #{remote_sha})"
|
32
51
|
)
|
33
52
|
end
|
34
53
|
|
35
|
-
def
|
36
|
-
|
54
|
+
def local_following?
|
55
|
+
return true if remote_sha.blank?
|
56
|
+
sgit.descendant?(local_sha, remote_sha)
|
57
|
+
end
|
58
|
+
|
59
|
+
def local_following_check_result
|
60
|
+
::EacLauncher::Publish::CheckResult.pending('Local following')
|
37
61
|
end
|
38
62
|
|
39
63
|
def sgit_uncached
|
@@ -47,16 +71,6 @@ module EacLauncher
|
|
47
71
|
info 'Pushed!'
|
48
72
|
end
|
49
73
|
|
50
|
-
def remote_equal_or_following?
|
51
|
-
return false if remote_sha.blank?
|
52
|
-
remote_sha == local_sha || sgit.descendant?(remote_sha, local_sha)
|
53
|
-
end
|
54
|
-
|
55
|
-
def local_following?
|
56
|
-
return true if remote_sha.blank?
|
57
|
-
sgit.descendant?(local_sha, remote_sha)
|
58
|
-
end
|
59
|
-
|
60
74
|
def local_sha
|
61
75
|
sgit.git.object('HEAD').sha
|
62
76
|
end
|
@@ -1,41 +1,55 @@
|
|
1
|
+
require 'eac/listable'
|
2
|
+
|
1
3
|
module EacLauncher
|
2
4
|
module Publish
|
3
5
|
class CheckResult
|
4
|
-
|
5
|
-
|
6
|
-
|
6
|
+
include ::Eac::Listable
|
7
|
+
|
8
|
+
lists.add_string :status, :updated, :pending, :blocked, :outdated
|
7
9
|
|
8
|
-
|
10
|
+
lists.status.values.each do |status|
|
11
|
+
class_eval <<-RUBY_EVAL, __FILE__, __LINE__ + 1
|
12
|
+
def self.#{status}(message)
|
13
|
+
new('#{status}', message)
|
14
|
+
end
|
15
|
+
RUBY_EVAL
|
16
|
+
end
|
9
17
|
|
10
18
|
class << self
|
11
|
-
def
|
12
|
-
|
19
|
+
def updated_color
|
20
|
+
'green'
|
21
|
+
end
|
22
|
+
|
23
|
+
def pending_color
|
24
|
+
'yellow'
|
13
25
|
end
|
14
26
|
|
15
|
-
def
|
16
|
-
|
27
|
+
def blocked_color
|
28
|
+
'red'
|
17
29
|
end
|
18
30
|
|
19
|
-
def
|
20
|
-
|
31
|
+
def outdated_color
|
32
|
+
'light_blue'
|
21
33
|
end
|
22
34
|
end
|
23
35
|
|
24
36
|
attr_reader :status, :message
|
25
37
|
|
26
38
|
def initialize(status, message)
|
27
|
-
raise "Status \"#{status}\" not in #{
|
39
|
+
raise "Status \"#{status}\" not in #{self.class.lists.status.values}" unless
|
40
|
+
self.class.lists.status.values.include?(status)
|
28
41
|
@status = status
|
29
42
|
@message = message
|
30
43
|
end
|
31
44
|
|
32
45
|
def to_s
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
46
|
+
message.light_white.send("on_#{background_color}")
|
47
|
+
end
|
48
|
+
|
49
|
+
private
|
50
|
+
|
51
|
+
def background_color
|
52
|
+
self.class.send("#{status}_color")
|
39
53
|
end
|
40
54
|
end
|
41
55
|
end
|
@@ -12,19 +12,47 @@ module EacLauncher
|
|
12
12
|
protected
|
13
13
|
|
14
14
|
def internal_check
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
15
|
+
gem_published? ? internal_check_gem_published : internal_check_gem_unpublished
|
16
|
+
end
|
17
|
+
|
18
|
+
private
|
19
|
+
|
20
|
+
def internal_check_gem_published
|
21
|
+
if version_published?
|
22
|
+
outdated_version? ? outdated_version_check_result : version_published_check_result
|
21
23
|
else
|
22
|
-
|
23
|
-
'in RubyGems')
|
24
|
+
version_unpublished_check_result
|
24
25
|
end
|
25
26
|
end
|
26
27
|
|
27
|
-
|
28
|
+
def internal_check_gem_unpublished
|
29
|
+
if new_gem_allowed?
|
30
|
+
version_unpublished_check_result
|
31
|
+
else
|
32
|
+
new_gem_disallowed_check_result
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
def new_gem_disallowed_check_result
|
37
|
+
::EacLauncher::Publish::CheckResult.blocked(
|
38
|
+
"#{gem_spec.full_name} does not exist in RubyGems"
|
39
|
+
)
|
40
|
+
end
|
41
|
+
|
42
|
+
def version_published_check_result
|
43
|
+
::EacLauncher::Publish::CheckResult.updated("#{gem_spec.full_name} already pushed")
|
44
|
+
end
|
45
|
+
|
46
|
+
def outdated_version_check_result
|
47
|
+
::EacLauncher::Publish::CheckResult.outdated(
|
48
|
+
"#{gem_spec.full_name} is outdated (Max: #{gem_version_max})"
|
49
|
+
)
|
50
|
+
end
|
51
|
+
|
52
|
+
def version_unpublished_check_result
|
53
|
+
::EacLauncher::Publish::CheckResult.pending("#{gem_spec.full_name} not found " \
|
54
|
+
'in RubyGems')
|
55
|
+
end
|
28
56
|
|
29
57
|
def source_uncached
|
30
58
|
@instance.warped
|
@@ -45,18 +73,22 @@ module EacLauncher
|
|
45
73
|
gem_build.close
|
46
74
|
end
|
47
75
|
|
48
|
-
def
|
49
|
-
|
76
|
+
def new_gem_allowed?
|
77
|
+
::EacLauncher::Context.current.publish_options[:new]
|
50
78
|
end
|
51
79
|
|
52
|
-
def
|
80
|
+
def gem_published?
|
53
81
|
gem_versions.any?
|
54
82
|
end
|
55
83
|
|
56
|
-
def
|
84
|
+
def version_published?
|
57
85
|
gem_versions.any? { |v| v['number'] == gem_spec.version }
|
58
86
|
end
|
59
87
|
|
88
|
+
def outdated_version?
|
89
|
+
gem_version_max.present? && ::Gem::Version.new(gem_spec.version) < gem_version_max
|
90
|
+
end
|
91
|
+
|
60
92
|
def gem_versions_uncached
|
61
93
|
http = Curl.get("https://rubygems.org/api/v1/versions/#{gem_spec.name}.json")
|
62
94
|
return JSON.parse!(http.body_str) if /\A2/ =~ http.status
|
@@ -64,6 +96,10 @@ module EacLauncher
|
|
64
96
|
raise "#{http} code error: #{http.status}"
|
65
97
|
end
|
66
98
|
|
99
|
+
def gem_version_max_uncached
|
100
|
+
gem_versions.map { |v| ::Gem::Version.new(v['number']) }.max
|
101
|
+
end
|
102
|
+
|
67
103
|
def push_gem
|
68
104
|
info("Pushing gem #{gem_spec}...")
|
69
105
|
command = ['gem', 'push', gem_build.output_file]
|
data/lib/eac_launcher/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eac_launcher
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-05-
|
11
|
+
date: 2018-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|