eac_launcher 0.6.0 → 0.6.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/Gemfile +2 -0
- data/lib/eac_launcher/context.rb +3 -1
- data/lib/eac_launcher/context/instance_discovery.rb +5 -3
- data/lib/eac_launcher/context/instance_manager.rb +10 -5
- data/lib/eac_launcher/context/settings.rb +3 -0
- data/lib/eac_launcher/git.rb +2 -0
- data/lib/eac_launcher/git/base.rb +7 -2
- data/lib/eac_launcher/git/base/subrepo.rb +8 -2
- data/lib/eac_launcher/git/base/underlying.rb +2 -0
- data/lib/eac_launcher/git/error.rb +2 -0
- data/lib/eac_launcher/git/mirror_update.rb +2 -0
- data/lib/eac_launcher/git/publish_base.rb +3 -0
- data/lib/eac_launcher/git/sub_warp_base.rb +4 -0
- data/lib/eac_launcher/git/warp_base.rb +3 -1
- data/lib/eac_launcher/instances.rb +2 -0
- data/lib/eac_launcher/instances/base.rb +7 -0
- data/lib/eac_launcher/instances/base/cache.rb +3 -0
- data/lib/eac_launcher/instances/error.rb +2 -0
- data/lib/eac_launcher/instances/runner_helper.rb +3 -0
- data/lib/eac_launcher/instances/settings.rb +2 -0
- data/lib/eac_launcher/paths.rb +2 -0
- data/lib/eac_launcher/paths/logical.rb +6 -3
- data/lib/eac_launcher/paths/real.rb +5 -0
- data/lib/eac_launcher/project.rb +2 -0
- data/lib/eac_launcher/publish.rb +2 -0
- data/lib/eac_launcher/publish/base.rb +7 -4
- data/lib/eac_launcher/publish/check_result.rb +5 -2
- data/lib/eac_launcher/ruby.rb +2 -0
- data/lib/eac_launcher/ruby/gem.rb +2 -0
- data/lib/eac_launcher/ruby/gem/build.rb +7 -1
- data/lib/eac_launcher/ruby/gem/specification.rb +4 -0
- data/lib/eac_launcher/runner.rb +3 -1
- data/lib/eac_launcher/runner/instances.rb +8 -6
- data/lib/eac_launcher/runner/projects.rb +9 -6
- data/lib/eac_launcher/runner/publish.rb +4 -1
- data/lib/eac_launcher/stereotype.rb +2 -0
- data/lib/eac_launcher/stereotypes.rb +2 -0
- data/lib/eac_launcher/stereotypes/git.rb +2 -0
- data/lib/eac_launcher/stereotypes/git/publish.rb +3 -1
- data/lib/eac_launcher/stereotypes/git/warp.rb +2 -0
- data/lib/eac_launcher/stereotypes/git_subrepo.rb +2 -0
- data/lib/eac_launcher/stereotypes/git_subrepo/publish.rb +2 -0
- data/lib/eac_launcher/stereotypes/git_subrepo/warp.rb +4 -0
- data/lib/eac_launcher/stereotypes/git_subtree.rb +12 -3
- data/lib/eac_launcher/stereotypes/git_subtree/publish.rb +2 -0
- data/lib/eac_launcher/stereotypes/git_subtree/warp.rb +2 -0
- data/lib/eac_launcher/stereotypes/rails.rb +2 -0
- data/lib/eac_launcher/stereotypes/redmine_plugin.rb +2 -0
- data/lib/eac_launcher/stereotypes/ruby_gem.rb +2 -0
- data/lib/eac_launcher/stereotypes/ruby_gem/publish.rb +3 -0
- data/lib/eac_launcher/vendor.rb +2 -0
- data/lib/eac_launcher/vendor/github.rb +3 -0
- data/lib/eac_launcher/version.rb +1 -1
- metadata +9 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f453a237fe5a382f052500e8178c85135a8583557818ea13452d775f3579bddd
|
4
|
+
data.tar.gz: c51e91c7a7529219470a359a706f9655b5a5c2b5305ccbbb2a2a7b390032380c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9fbd53bb2c9c6b8b58fe1fe2de939a4f971df5c6afa0833fe5d75228008879cf8d02a279c02ff8df544988d8a6399fa7254504ea9631514af2f9177f24dff2a0
|
7
|
+
data.tar.gz: fd25983e2b02d4a216be0bba799e6b5a0d67f6557ca46034353e97b469474fbcdac419f6eddd10fcd0ce9e7e6341374069897ab1388678e182305b1145071c7a
|
data/Gemfile
CHANGED
data/lib/eac_launcher/context.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/core_ext/hash/indifferent_access'
|
2
4
|
require 'eac_ruby_utils/simple_cache'
|
3
5
|
require 'eac_ruby_utils/console/speaker'
|
@@ -12,7 +14,7 @@ module EacLauncher
|
|
12
14
|
include ::EacRubyUtils::SimpleCache
|
13
15
|
include ::EacRubyUtils::Console::Speaker
|
14
16
|
|
15
|
-
DEFAULT_PROJECTS_ROOT = '.'
|
17
|
+
DEFAULT_PROJECTS_ROOT = '.'
|
16
18
|
DEFAULT_SETTINGS_FILE = ::File.join(ENV['HOME'], '.config', 'eac_launcher', 'settings.yml')
|
17
19
|
DEFAULT_CACHE_ROOT = ::File.join(ENV['HOME'], '.cache', 'eac_launcher')
|
18
20
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'ruby-progressbar'
|
2
4
|
require 'eac_launcher/instances/base'
|
3
5
|
|
@@ -11,7 +13,7 @@ module EacLauncher
|
|
11
13
|
@progress = ::ProgressBar.create(title: 'Instance discovery', total: 1)
|
12
14
|
@instances = path_instances(@context.root, nil)
|
13
15
|
ensure
|
14
|
-
@progress
|
16
|
+
@progress&.finish
|
15
17
|
end
|
16
18
|
|
17
19
|
private
|
@@ -33,8 +35,8 @@ module EacLauncher
|
|
33
35
|
r = []
|
34
36
|
begin
|
35
37
|
yield(r) if path.included?
|
36
|
-
rescue StandardError =>
|
37
|
-
warn("#{path}: #{
|
38
|
+
rescue StandardError => e
|
39
|
+
warn("#{path}: #{e}")
|
38
40
|
end
|
39
41
|
r
|
40
42
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require('yaml')
|
2
4
|
|
3
5
|
module EacLauncher
|
@@ -24,7 +26,7 @@ module EacLauncher
|
|
24
26
|
private
|
25
27
|
|
26
28
|
def instances_uncached
|
27
|
-
(cached_instances
|
29
|
+
(cached_instances || search_instances).select(&:included?)
|
28
30
|
end
|
29
31
|
|
30
32
|
def search_instances
|
@@ -34,6 +36,7 @@ module EacLauncher
|
|
34
36
|
def cached_instances
|
35
37
|
return nil if @context.recache
|
36
38
|
return nil unless cached_instances_file_content
|
39
|
+
|
37
40
|
CachedInstances.new(cached_instances_file_content).instances
|
38
41
|
end
|
39
42
|
|
@@ -61,6 +64,7 @@ module EacLauncher
|
|
61
64
|
data = cached_instances_file_content
|
62
65
|
return false unless data[instance.logical]
|
63
66
|
return false unless data[instance.logical][:publish_state].is_a?(Hash)
|
67
|
+
|
64
68
|
data[instance.logical][:publish_state].any? do |_k, v|
|
65
69
|
::EacLauncher::Publish::CheckResult.pending_status?(v)
|
66
70
|
end
|
@@ -76,12 +80,13 @@ module EacLauncher
|
|
76
80
|
@content.keys.map { |k| by_logical_path(k) }
|
77
81
|
end
|
78
82
|
|
79
|
-
def by_logical_path(
|
80
|
-
return @instances[
|
81
|
-
|
83
|
+
def by_logical_path(key)
|
84
|
+
return @instances[key] if @instances.key?(key)
|
85
|
+
|
86
|
+
h = @content[key]
|
82
87
|
parent_instance = h[:parent] ? by_logical_path(h[:parent]) : nil
|
83
88
|
path = ::EacLauncher::Paths::Logical.from_h(@context, h)
|
84
|
-
@instances[
|
89
|
+
@instances[key] = ::EacLauncher::Instances::Base.instanciate(path, parent_instance)
|
85
90
|
end
|
86
91
|
end
|
87
92
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_ruby_utils/simple_cache'
|
2
4
|
require 'yaml'
|
3
5
|
require 'eac_launcher/instances/settings'
|
@@ -37,6 +39,7 @@ module EacLauncher
|
|
37
39
|
def node_value(data, path)
|
38
40
|
return data if path.empty?
|
39
41
|
return nil unless data.is_a?(Hash)
|
42
|
+
|
40
43
|
node_value(data[path.first], path.drop(1))
|
41
44
|
end
|
42
45
|
end
|
data/lib/eac_launcher/git.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_ruby_utils/simple_cache'
|
2
4
|
require 'eac_ruby_utils/envs'
|
3
5
|
require 'eac_launcher/paths/real'
|
@@ -22,6 +24,7 @@ module EacLauncher
|
|
22
24
|
r.strip! if r.is_a?(String)
|
23
25
|
return r if r.present?
|
24
26
|
return nil unless required
|
27
|
+
|
25
28
|
raise "Reference \"#{ref}\" not found"
|
26
29
|
end
|
27
30
|
|
@@ -41,6 +44,7 @@ module EacLauncher
|
|
41
44
|
def descendant?(descendant, ancestor)
|
42
45
|
base = merge_base(descendant, ancestor)
|
43
46
|
return false if base.blank?
|
47
|
+
|
44
48
|
revparse = execute!('rev-parse', '--verify', ancestor).strip
|
45
49
|
base == revparse
|
46
50
|
end
|
@@ -50,6 +54,7 @@ module EacLauncher
|
|
50
54
|
while refs.count > 1
|
51
55
|
refs[1] = merge_base_pair(refs[0], refs[1])
|
52
56
|
return nil if refs[1].blank?
|
57
|
+
|
53
58
|
refs.shift
|
54
59
|
end
|
55
60
|
refs.first
|
@@ -105,8 +110,8 @@ module EacLauncher
|
|
105
110
|
|
106
111
|
private
|
107
112
|
|
108
|
-
def merge_base_pair(
|
109
|
-
execute!('merge-base',
|
113
|
+
def merge_base_pair(commit1, commit2)
|
114
|
+
execute!('merge-base', commit1, commit2, exit_outputs: { 256 => '' }).strip
|
110
115
|
end
|
111
116
|
end
|
112
117
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/core_ext/object'
|
2
4
|
|
3
5
|
module EacLauncher
|
@@ -7,8 +9,10 @@ module EacLauncher
|
|
7
9
|
def subrepo_status(subrepo_path)
|
8
10
|
s = execute!('subrepo', 'status', subrepo_path.gsub(%r{\A/}, ''))
|
9
11
|
raise s.strip.to_s if s.include?('is not a subrepo')
|
12
|
+
|
10
13
|
r = subrepo_status_parse_output(s)
|
11
14
|
raise "Empty subrepo status for |#{s}|\n" unless r.any?
|
15
|
+
|
12
16
|
r
|
13
17
|
end
|
14
18
|
|
@@ -16,16 +20,18 @@ module EacLauncher
|
|
16
20
|
h = subrepo_status(subrepo_path)
|
17
21
|
url = h['Remote URL']
|
18
22
|
return url if url.present?
|
23
|
+
|
19
24
|
raise "Remote URL is blank for subrepo \"#{subrepo_path}\" (Subrepo status: #{h})"
|
20
25
|
end
|
21
26
|
|
22
27
|
private
|
23
28
|
|
24
|
-
def subrepo_status_parse_output(
|
29
|
+
def subrepo_status_parse_output(output)
|
25
30
|
r = {}.with_indifferent_access
|
26
|
-
|
31
|
+
output.each_line do |l|
|
27
32
|
m = /\A([^\:]+)\:(.*)\z/.match(l.strip)
|
28
33
|
next unless m && m[2].present?
|
34
|
+
|
29
35
|
r[m[1].strip] = m[2].strip
|
30
36
|
end
|
31
37
|
r
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_ruby_utils/simple_cache'
|
2
4
|
require 'eac_ruby_utils/simple_cache'
|
3
5
|
require 'eac_launcher/publish/base'
|
@@ -51,6 +53,7 @@ module EacLauncher
|
|
51
53
|
|
52
54
|
def local_following?
|
53
55
|
return true if remote_sha.blank?
|
56
|
+
|
54
57
|
sgit.descendant?(local_sha, remote_sha)
|
55
58
|
end
|
56
59
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_launcher/instances/error'
|
2
4
|
|
3
5
|
module EacLauncher
|
@@ -8,11 +10,13 @@ module EacLauncher
|
|
8
10
|
def parent_instance_uncached
|
9
11
|
r = find_parent_instance(instance.parent)
|
10
12
|
return r if r
|
13
|
+
|
11
14
|
::EacLauncher::Instances::Error.new('Git parent not found')
|
12
15
|
end
|
13
16
|
|
14
17
|
def find_parent_instance(current)
|
15
18
|
return current if current.stereotype?(::EacLauncher::Stereotypes::Git)
|
19
|
+
|
16
20
|
current.parent ? find_parent_instance(current.parent) : nil
|
17
21
|
end
|
18
22
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_launcher/git/mirror_update'
|
2
4
|
require 'eac_launcher/vendor/github'
|
3
5
|
|
@@ -10,7 +12,7 @@ module EacLauncher
|
|
10
12
|
class WarpBase < ::EacLauncher::Paths::Real
|
11
13
|
include ::EacRubyUtils::SimpleCache
|
12
14
|
|
13
|
-
TARGET_REMOTE = 'target'
|
15
|
+
TARGET_REMOTE = 'target'
|
14
16
|
|
15
17
|
def initialize(instance)
|
16
18
|
@instance = instance
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require_relative 'base/cache'
|
2
4
|
|
3
5
|
module EacLauncher
|
@@ -14,6 +16,7 @@ module EacLauncher
|
|
14
16
|
def instanciate(path, parent)
|
15
17
|
unless path.is_a?(::EacLauncher::Instances::Base)
|
16
18
|
raise "#{path} is not a project" unless path.project?
|
19
|
+
|
17
20
|
path.extend(::EacLauncher::Instances::Base)
|
18
21
|
path.parent = parent
|
19
22
|
end
|
@@ -33,6 +36,7 @@ module EacLauncher
|
|
33
36
|
|
34
37
|
def to_parent_path
|
35
38
|
return self unless @parent
|
39
|
+
|
36
40
|
logical.gsub(/\A#{Regexp.quote(@parent.logical)}/, '')
|
37
41
|
end
|
38
42
|
|
@@ -43,6 +47,7 @@ module EacLauncher
|
|
43
47
|
def publish_run
|
44
48
|
stereotypes.each do |s|
|
45
49
|
next unless publish?(s)
|
50
|
+
|
46
51
|
infov(name, "publishing #{s.stereotype_name_in_color}")
|
47
52
|
s.publish_class.new(self).run
|
48
53
|
end
|
@@ -51,6 +56,7 @@ module EacLauncher
|
|
51
56
|
def publish_check
|
52
57
|
stereotypes.each do |s|
|
53
58
|
next unless publish?(s)
|
59
|
+
|
54
60
|
puts "#{name.to_s.cyan}|#{s.stereotype_name_in_color}|" \
|
55
61
|
"#{s.publish_class.new(self).check}"
|
56
62
|
end
|
@@ -72,6 +78,7 @@ module EacLauncher
|
|
72
78
|
|
73
79
|
def publish?(stereotype)
|
74
80
|
return false unless stereotype.publish_class
|
81
|
+
|
75
82
|
filter = ::EacLauncher::Context.current.publish_options[:stereotype]
|
76
83
|
filter.blank? ? true : filter == stereotype.name.demodulize
|
77
84
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module EacLauncher
|
2
4
|
module Instances
|
3
5
|
module Base
|
@@ -9,6 +11,7 @@ module EacLauncher
|
|
9
11
|
def cache_key(key, &block)
|
10
12
|
v = cache_key_get(key)
|
11
13
|
return v if v.present? || block.nil?
|
14
|
+
|
12
15
|
v = yield
|
13
16
|
cache_key_write(key, v)
|
14
17
|
v
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_ruby_utils/console/docopt_runner'
|
2
4
|
require 'eac_ruby_utils/console/speaker'
|
3
5
|
|
@@ -17,6 +19,7 @@ module EacLauncher
|
|
17
19
|
def find_instance!(instance_path)
|
18
20
|
instance = find_instance(instance_path)
|
19
21
|
return instance if instance
|
22
|
+
|
20
23
|
raise "Instance not found in \"#{instance_path}\""
|
21
24
|
end
|
22
25
|
|
data/lib/eac_launcher/paths.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_launcher/paths/real'
|
2
4
|
require 'eac_launcher/stereotypes'
|
3
5
|
|
@@ -7,9 +9,9 @@ module EacLauncher
|
|
7
9
|
include ::EacRubyUtils::SimpleCache
|
8
10
|
|
9
11
|
class << self
|
10
|
-
def from_h(context,
|
11
|
-
parent_path =
|
12
|
-
new(context, parent_path,
|
12
|
+
def from_h(context, hash)
|
13
|
+
parent_path = hash[:parent_path] ? from_h(context, hash[:parent_path]) : nil
|
14
|
+
new(context, parent_path, hash[:real], hash[:logical])
|
13
15
|
end
|
14
16
|
end
|
15
17
|
|
@@ -40,6 +42,7 @@ module EacLauncher
|
|
40
42
|
c_path = ::File.join(warped, c)
|
41
43
|
next unless ::File.directory?(c_path)
|
42
44
|
next if c.start_with?('.')
|
45
|
+
|
43
46
|
r << build_child(c)
|
44
47
|
end
|
45
48
|
r
|
@@ -1,8 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module EacLauncher
|
2
4
|
module Paths
|
3
5
|
class Real < String
|
4
6
|
def initialize(path)
|
5
7
|
raise "Argument path is not a string: \"#{path}\"|#{path.class}" unless path.is_a?(String)
|
8
|
+
|
6
9
|
super(path)
|
7
10
|
end
|
8
11
|
|
@@ -16,12 +19,14 @@ module EacLauncher
|
|
16
19
|
|
17
20
|
def dirname
|
18
21
|
return nil if self == '/'
|
22
|
+
|
19
23
|
self.class.new(::File.dirname(self))
|
20
24
|
end
|
21
25
|
|
22
26
|
def find_file_with_extension(extension)
|
23
27
|
r = find_files_with_extension(extension)
|
24
28
|
return r.first if r.any?
|
29
|
+
|
25
30
|
raise "Extension \"#{extension}\" not found in directory \"#{self}\""
|
26
31
|
end
|
27
32
|
|
data/lib/eac_launcher/project.rb
CHANGED
data/lib/eac_launcher/publish.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_launcher/instances/error'
|
2
4
|
|
3
5
|
module EacLauncher
|
@@ -13,6 +15,7 @@ module EacLauncher
|
|
13
15
|
s = check
|
14
16
|
info("Check: #{s}")
|
15
17
|
return unless s.status == ::EacLauncher::Publish::CheckResult::STATUS_PENDING
|
18
|
+
|
16
19
|
publish
|
17
20
|
end
|
18
21
|
|
@@ -32,10 +35,10 @@ module EacLauncher
|
|
32
35
|
|
33
36
|
def check_with_rescue
|
34
37
|
internal_check
|
35
|
-
rescue ::EacLauncher::Instances::Error =>
|
36
|
-
::EacLauncher::Publish::CheckResult.blocked("Error: #{
|
37
|
-
rescue ::EacLauncher::Git::Error =>
|
38
|
-
::EacLauncher::Publish::CheckResult.blocked("Git error: #{
|
38
|
+
rescue ::EacLauncher::Instances::Error => e
|
39
|
+
::EacLauncher::Publish::CheckResult.blocked("Error: #{e}")
|
40
|
+
rescue ::EacLauncher::Git::Error => e
|
41
|
+
::EacLauncher::Publish::CheckResult.blocked("Git error: #{e}")
|
39
42
|
end
|
40
43
|
end
|
41
44
|
end
|
@@ -1,11 +1,13 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/concern' # Missing on "eac/listable"
|
2
4
|
require 'active_support/hash_with_indifferent_access'
|
3
|
-
require '
|
5
|
+
require 'eac_ruby_utils/listable'
|
4
6
|
|
5
7
|
module EacLauncher
|
6
8
|
module Publish
|
7
9
|
class CheckResult
|
8
|
-
include ::
|
10
|
+
include ::EacRubyUtils::Listable
|
9
11
|
|
10
12
|
lists.add_string :status, :updated, :pending, :blocked, :outdated
|
11
13
|
|
@@ -44,6 +46,7 @@ module EacLauncher
|
|
44
46
|
def initialize(status, message)
|
45
47
|
raise "Status \"#{status}\" not in #{self.class.lists.status.values}" unless
|
46
48
|
self.class.lists.status.values.include?(status)
|
49
|
+
|
47
50
|
@status = status
|
48
51
|
@message = message
|
49
52
|
end
|
data/lib/eac_launcher/ruby.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'tmpdir'
|
2
4
|
require 'eac_ruby_utils/console/speaker'
|
3
5
|
require 'eac_ruby_utils/envs'
|
@@ -15,6 +17,7 @@ module EacLauncher
|
|
15
17
|
|
16
18
|
def output_file
|
17
19
|
return nil unless @gem_root
|
20
|
+
|
18
21
|
@gem_root.find_files_with_extension('.gem').first
|
19
22
|
end
|
20
23
|
|
@@ -24,6 +27,7 @@ module EacLauncher
|
|
24
27
|
|
25
28
|
def build
|
26
29
|
return if builded?
|
30
|
+
|
27
31
|
copy_gem_files
|
28
32
|
build_gem
|
29
33
|
check_gem_empty_size
|
@@ -85,12 +89,14 @@ module EacLauncher
|
|
85
89
|
def check_gem_version
|
86
90
|
spec = ::EacLauncher::Ruby::Gem::Specification.new(gemspec_file)
|
87
91
|
return if ::File.basename(output_file, '.gem') == spec.full_name
|
92
|
+
|
88
93
|
raise("Builded gem is not the same version of gemspec (#{spec}, #{output_file})")
|
89
94
|
end
|
90
95
|
|
91
96
|
def bundle_dependencies
|
92
97
|
gemfile = @gem_root.subpath('Gemfile')
|
93
98
|
return unless ::File.exist?(gemfile)
|
99
|
+
|
94
100
|
Dir.chdir(@gem_root) do
|
95
101
|
EacRubyUtils::Envs.local.command('bundle', 'install').execute!
|
96
102
|
end
|
@@ -105,7 +111,7 @@ module EacLauncher
|
|
105
111
|
old_values.keys.each { |k| ENV.delete(k) }
|
106
112
|
yield
|
107
113
|
ensure
|
108
|
-
old_values
|
114
|
+
old_values&.each { |k, v| ENV[k] = v }
|
109
115
|
end
|
110
116
|
|
111
117
|
def envvars_starting_with(start_with_vars)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'active_support/core_ext/object'
|
2
4
|
|
3
5
|
module EacLauncher
|
@@ -21,6 +23,7 @@ module EacLauncher
|
|
21
23
|
def version
|
22
24
|
v = self.class.parse_version_file(version_file)
|
23
25
|
return v if v.present?
|
26
|
+
|
24
27
|
raise "Version not found on file \"#{version_file}\""
|
25
28
|
end
|
26
29
|
|
@@ -45,6 +48,7 @@ module EacLauncher
|
|
45
48
|
def version_file
|
46
49
|
f = ::File.join(gem_root, 'lib', *namespace_parts, 'version.rb')
|
47
50
|
return f if ::File.exist?(f)
|
51
|
+
|
48
52
|
raise "Version file \"#{f}\" does not exist"
|
49
53
|
end
|
50
54
|
|
data/lib/eac_launcher/runner.rb
CHANGED
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_ruby_utils/console/docopt_runner'
|
2
4
|
require 'eac_launcher/runner/instances'
|
3
5
|
require 'eac_launcher/runner/projects'
|
@@ -5,7 +7,7 @@ require 'eac_launcher/runner/publish'
|
|
5
7
|
|
6
8
|
module EacLauncher
|
7
9
|
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
8
|
-
DOC = <<DOCOPT
|
10
|
+
DOC = <<DOCOPT
|
9
11
|
Utilities to deploy applications and libraries.
|
10
12
|
|
11
13
|
Usage:
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_launcher/instances/runner_helper'
|
2
4
|
|
3
5
|
module EacLauncher
|
4
6
|
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
5
7
|
class Instances < ::EacLauncher::Instances::RunnerHelper
|
6
|
-
DOC = <<DOCOPT
|
8
|
+
DOC = <<DOCOPT
|
7
9
|
Mostra informações sobre instâncias.
|
8
10
|
|
9
11
|
Usage:
|
@@ -24,11 +26,11 @@ DOCOPT
|
|
24
26
|
|
25
27
|
private
|
26
28
|
|
27
|
-
def show_instance(
|
28
|
-
puts instance_label(
|
29
|
-
infov(' * Parent', (
|
30
|
-
infov(' * Git current revision',
|
31
|
-
infov(' * Git publish remote',
|
29
|
+
def show_instance(instance)
|
30
|
+
puts instance_label(instance)
|
31
|
+
infov(' * Parent', (instance.parent ? instance_label(instance.parent) : '-'))
|
32
|
+
infov(' * Git current revision', instance.options.git_current_revision)
|
33
|
+
infov(' * Git publish remote', instance.options.git_publish_remote)
|
32
34
|
end
|
33
35
|
|
34
36
|
def instance_path
|
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_launcher/context'
|
2
4
|
require 'eac_launcher/instances/runner_helper'
|
3
5
|
|
4
6
|
module EacLauncher
|
5
7
|
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
6
8
|
class Projects < ::EacLauncher::Instances::RunnerHelper
|
7
|
-
DOC = <<DOCOPT
|
9
|
+
DOC = <<DOCOPT
|
8
10
|
Shows available projects.
|
9
11
|
|
10
12
|
Usage:
|
@@ -27,16 +29,17 @@ DOCOPT
|
|
27
29
|
|
28
30
|
private
|
29
31
|
|
30
|
-
def show_project(
|
31
|
-
puts project_label(
|
32
|
+
def show_project(project)
|
33
|
+
puts project_label(project)
|
32
34
|
return unless options['--instances']
|
33
|
-
|
35
|
+
|
36
|
+
project.instances.each do |i|
|
34
37
|
puts " * #{instance_label(i)}"
|
35
38
|
end
|
36
39
|
end
|
37
40
|
|
38
|
-
def project_label(
|
39
|
-
|
41
|
+
def project_label(project)
|
42
|
+
project.to_s.cyan.to_s
|
40
43
|
end
|
41
44
|
end
|
42
45
|
end
|
@@ -1,7 +1,9 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module EacLauncher
|
2
4
|
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
3
5
|
class Publish < ::EacLauncher::Instances::RunnerHelper
|
4
|
-
DOC = <<DOCOPT
|
6
|
+
DOC = <<DOCOPT
|
5
7
|
Publica projetos ou instâncias.
|
6
8
|
|
7
9
|
Usage:
|
@@ -27,6 +29,7 @@ DOCOPT
|
|
27
29
|
build_publish_options
|
28
30
|
instances.each do |i|
|
29
31
|
next unless i.options.publishable?
|
32
|
+
|
30
33
|
i.send(instance_method)
|
31
34
|
end
|
32
35
|
end
|
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_launcher/git/publish_base'
|
2
4
|
|
3
5
|
module EacLauncher
|
4
6
|
module Stereotypes
|
5
7
|
class Git
|
6
8
|
class Publish < ::EacLauncher::Git::PublishBase
|
7
|
-
PUBLISH_GIT_REMOTE_NAME = 'publish'
|
9
|
+
PUBLISH_GIT_REMOTE_NAME = 'publish'
|
8
10
|
end
|
9
11
|
end
|
10
12
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_ruby_utils/simple_cache'
|
2
4
|
require 'eac_launcher/git/sub_warp_base'
|
3
5
|
require 'eac_launcher/instances/error'
|
@@ -28,6 +30,7 @@ module EacLauncher
|
|
28
30
|
def check_parent
|
29
31
|
return if parent_git_warped.rev_parse(subrepo_parent_hash) &&
|
30
32
|
parent_git_warped.descendant?('HEAD', subrepo_parent_hash)
|
33
|
+
|
31
34
|
raise EacLauncher::Instances::Error, "Subrepo parent hash \"#{subrepo_parent_hash}\""\
|
32
35
|
" not found in \"#{parent_git_warped}\""
|
33
36
|
end
|
@@ -36,6 +39,7 @@ module EacLauncher
|
|
36
39
|
data = parent_git_warped.subrepo_status(to_parent_git_path)
|
37
40
|
h = data['Pull Parent']
|
38
41
|
return h if h.present?
|
42
|
+
|
39
43
|
raise EacLauncher::Instances::Error, "Subrepo parent hash is blank: #{data}"
|
40
44
|
end
|
41
45
|
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'eac_launcher/stereotype'
|
2
4
|
require 'eac_launcher/stereotypes/git'
|
3
5
|
|
@@ -10,8 +12,10 @@ module EacLauncher
|
|
10
12
|
def match?(path)
|
11
13
|
return false if other_git_stereotype?(path)
|
12
14
|
return false unless other_nogit_stereotype?(path)
|
15
|
+
|
13
16
|
parent = parent_git(path.parent_path)
|
14
17
|
return false unless parent
|
18
|
+
|
15
19
|
::Git.open(parent.real).remote(path.real.basename).url ? true : false
|
16
20
|
end
|
17
21
|
|
@@ -19,9 +23,14 @@ module EacLauncher
|
|
19
23
|
:green
|
20
24
|
end
|
21
25
|
|
22
|
-
def parent_git(
|
23
|
-
return nil unless
|
24
|
-
|
26
|
+
def parent_git(parent_path)
|
27
|
+
return nil unless parent_path
|
28
|
+
|
29
|
+
if ::EacLauncher::Stereotypes::Git.match?(parent_path)
|
30
|
+
parent_path
|
31
|
+
else
|
32
|
+
parent_git(parent_path.parent_path)
|
33
|
+
end
|
25
34
|
end
|
26
35
|
|
27
36
|
def other_git_stereotype?(path)
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'curb'
|
2
4
|
require 'json'
|
3
5
|
require 'eac_ruby_utils/simple_cache'
|
@@ -98,6 +100,7 @@ module EacLauncher
|
|
98
100
|
http = Curl.get("https://rubygems.org/api/v1/versions/#{gem_spec.name}.json")
|
99
101
|
return JSON.parse!(http.body_str) if /\A2/ =~ http.status
|
100
102
|
return [] if /\A4/ =~ http.status
|
103
|
+
|
101
104
|
raise "#{http} code error: #{http.status}"
|
102
105
|
end
|
103
106
|
|
data/lib/eac_launcher/vendor.rb
CHANGED
@@ -1,9 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module EacLauncher
|
2
4
|
module Vendor
|
3
5
|
module Github
|
4
6
|
class << self
|
5
7
|
def to_ssh_url(url)
|
6
8
|
return nil if url.blank?
|
9
|
+
|
7
10
|
m = %r{\Ahttps://github.com/([^/]+)/([^/]+)\z}.match(url.to_s)
|
8
11
|
m ? "git@github.com:#{m[1]}/#{m[2]}.git" : url
|
9
12
|
end
|
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.6.
|
4
|
+
version: 0.6.1
|
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: 2019-
|
11
|
+
date: 2019-08-21 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: activesupport
|
@@ -59,39 +59,25 @@ dependencies:
|
|
59
59
|
- !ruby/object:Gem::Version
|
60
60
|
version: 0.9.4
|
61
61
|
- !ruby/object:Gem::Dependency
|
62
|
-
name:
|
62
|
+
name: eac_ruby_utils
|
63
63
|
requirement: !ruby/object:Gem::Requirement
|
64
64
|
requirements:
|
65
65
|
- - "~>"
|
66
66
|
- !ruby/object:Gem::Version
|
67
|
-
version: '0.
|
67
|
+
version: '0.10'
|
68
68
|
- - ">="
|
69
69
|
- !ruby/object:Gem::Version
|
70
|
-
version: 0.1
|
70
|
+
version: 0.10.1
|
71
71
|
type: :runtime
|
72
72
|
prerelease: false
|
73
73
|
version_requirements: !ruby/object:Gem::Requirement
|
74
74
|
requirements:
|
75
75
|
- - "~>"
|
76
76
|
- !ruby/object:Gem::Version
|
77
|
-
version: '0.
|
77
|
+
version: '0.10'
|
78
78
|
- - ">="
|
79
79
|
- !ruby/object:Gem::Version
|
80
|
-
version: 0.1
|
81
|
-
- !ruby/object:Gem::Dependency
|
82
|
-
name: eac_ruby_utils
|
83
|
-
requirement: !ruby/object:Gem::Requirement
|
84
|
-
requirements:
|
85
|
-
- - "~>"
|
86
|
-
- !ruby/object:Gem::Version
|
87
|
-
version: '0.7'
|
88
|
-
type: :runtime
|
89
|
-
prerelease: false
|
90
|
-
version_requirements: !ruby/object:Gem::Requirement
|
91
|
-
requirements:
|
92
|
-
- - "~>"
|
93
|
-
- !ruby/object:Gem::Version
|
94
|
-
version: '0.7'
|
80
|
+
version: 0.10.1
|
95
81
|
- !ruby/object:Gem::Dependency
|
96
82
|
name: git
|
97
83
|
requirement: !ruby/object:Gem::Requirement
|
@@ -140,14 +126,14 @@ dependencies:
|
|
140
126
|
requirements:
|
141
127
|
- - "~>"
|
142
128
|
- !ruby/object:Gem::Version
|
143
|
-
version: 0.
|
129
|
+
version: '0.74'
|
144
130
|
type: :development
|
145
131
|
prerelease: false
|
146
132
|
version_requirements: !ruby/object:Gem::Requirement
|
147
133
|
requirements:
|
148
134
|
- - "~>"
|
149
135
|
- !ruby/object:Gem::Version
|
150
|
-
version: 0.
|
136
|
+
version: '0.74'
|
151
137
|
description:
|
152
138
|
email:
|
153
139
|
executables:
|