avm-tools 0.140.0 → 0.142.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 +4 -4
- data/lib/avm/projects/stereotypes.rb +4 -0
- data/lib/avm/tools/runner/files/format.rb +2 -2
- data/lib/avm/tools/runner/git/commit.rb +2 -2
- data/lib/avm/tools/runner/git/deploy.rb +2 -2
- data/lib/avm/tools/runner/git.rb +2 -2
- data/lib/avm/tools/runner/launcher_stereotypes/list.rb +42 -0
- data/lib/avm/tools/runner/launcher_stereotypes.rb +16 -0
- data/lib/avm/tools/version.rb +1 -1
- metadata +10 -39
- data/lib/avm/launcher/git/base/class_methods.rb +0 -28
- data/lib/avm/launcher/git/base/dirty_files.rb +0 -23
- data/lib/avm/launcher/git/base/remotes.rb +0 -40
- data/lib/avm/launcher/git/base/subrepo.rb +0 -44
- data/lib/avm/launcher/git/base/underlying.rb +0 -63
- data/lib/avm/launcher/git/base.rb +0 -86
- data/lib/avm/launcher/git/error.rb +0 -13
- data/lib/avm/launcher/git/mirror_update.rb +0 -38
- data/lib/avm/launcher/git/publish_base.rb +0 -125
- data/lib/avm/launcher/git/remote.rb +0 -55
- data/lib/avm/launcher/git/sub_warp_base.rb +0 -33
- data/lib/avm/launcher/git/warp_base.rb +0 -67
- data/lib/avm/launcher/git.rb +0 -7
- data/lib/avm/launcher/ruby/gem/build.rb +0 -125
- data/lib/avm/launcher/ruby/gem/specification.rb +0 -63
- data/lib/avm/launcher/ruby/gem.rb +0 -4
- data/lib/avm/launcher/ruby.rb +0 -3
- data/lib/avm/projects/stereotype.rb +0 -63
- data/lib/avm/projects/stereotypes/git/local_project_mixin.rb +0 -19
- data/lib/avm/projects/stereotypes/git/publish.rb +0 -15
- data/lib/avm/projects/stereotypes/git/warp.rb +0 -27
- data/lib/avm/projects/stereotypes/git.rb +0 -25
- data/lib/avm/projects/stereotypes/git_subrepo/publish.rb +0 -14
- data/lib/avm/projects/stereotypes/git_subrepo/warp.rb +0 -88
- data/lib/avm/projects/stereotypes/git_subrepo.rb +0 -34
- data/lib/avm/projects/stereotypes/git_subtree/publish.rb +0 -14
- data/lib/avm/projects/stereotypes/git_subtree/warp.rb +0 -32
- data/lib/avm/projects/stereotypes/git_subtree.rb +0 -51
- data/lib/avm/projects/stereotypes/ruby_gem/local_project_mixin.rb +0 -28
- data/lib/avm/projects/stereotypes/ruby_gem/publish.rb +0 -129
- data/lib/avm/projects/stereotypes/ruby_gem.rb +0 -30
@@ -1,88 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/simple_cache'
|
4
|
-
require 'avm/launcher/git/sub_warp_base'
|
5
|
-
require 'avm/launcher/errors/base'
|
6
|
-
require 'avm/launcher/paths/real'
|
7
|
-
require 'avm/git/vendor/github'
|
8
|
-
|
9
|
-
module Avm
|
10
|
-
module Projects
|
11
|
-
module Stereotypes
|
12
|
-
class GitSubrepo
|
13
|
-
class Warp < ::Avm::Launcher::Paths::Real
|
14
|
-
include ::Avm::Launcher::Git::SubWarpBase
|
15
|
-
include ::EacRubyUtils::SimpleCache
|
16
|
-
|
17
|
-
attr_reader :instance
|
18
|
-
|
19
|
-
def initialize(instance)
|
20
|
-
@instance = instance
|
21
|
-
check_parent
|
22
|
-
init_aux
|
23
|
-
push_to_aux
|
24
|
-
reset
|
25
|
-
assert_target_remote
|
26
|
-
super(warped_git)
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def check_parent
|
32
|
-
return if parent_git_warped.rev_parse(subrepo_parent_hash) &&
|
33
|
-
parent_git_warped.descendant?('HEAD', subrepo_parent_hash)
|
34
|
-
|
35
|
-
raise Avm::Launcher::Errors::Base,
|
36
|
-
"Subrepo parent hash \"#{subrepo_parent_hash}\"" \
|
37
|
-
" not found in \"#{parent_git_warped}\""
|
38
|
-
end
|
39
|
-
|
40
|
-
def subrepo_parent_hash
|
41
|
-
data = parent_git_warped.subrepo_status(to_parent_git_path)
|
42
|
-
h = data['Pull Parent']
|
43
|
-
return h if h.present?
|
44
|
-
|
45
|
-
raise Avm::Launcher::Errors::Base, "Subrepo parent hash is blank: #{data}"
|
46
|
-
end
|
47
|
-
|
48
|
-
def init_aux
|
49
|
-
::Avm::Launcher::Git::Base.new(aux_path).init_bare
|
50
|
-
end
|
51
|
-
|
52
|
-
def parent_git_warped_uncached
|
53
|
-
::Avm::Launcher::Git::Base.new(parent_instance.warped)
|
54
|
-
end
|
55
|
-
|
56
|
-
def aux_path
|
57
|
-
instance.cache_path('subrepo_aux_git_repository')
|
58
|
-
end
|
59
|
-
|
60
|
-
def warped_git_uncached
|
61
|
-
::Avm::Launcher::Git::Base.new(instance.cache_path('git_repository'))
|
62
|
-
end
|
63
|
-
|
64
|
-
def push_to_aux
|
65
|
-
parent_git_warped.execute!('subrepo', 'branch', to_parent_git_path, '-fF')
|
66
|
-
h = parent_git_warped.rev_parse("subrepo/#{to_parent_git_path}", true)
|
67
|
-
parent_git_warped.execute!('push', aux_path, "#{h}:refs/heads/master", '--force')
|
68
|
-
end
|
69
|
-
|
70
|
-
def reset
|
71
|
-
::Avm::Launcher::Git::MirrorUpdate.new(warped_git, aux_path, 'master')
|
72
|
-
end
|
73
|
-
|
74
|
-
def assert_target_remote
|
75
|
-
warped_git.assert_remote_url(::Avm::Launcher::Git::WarpBase::TARGET_REMOTE,
|
76
|
-
target_remote_url)
|
77
|
-
end
|
78
|
-
|
79
|
-
def target_remote_url
|
80
|
-
::Avm::Git::Vendor::Github.to_ssh_url(
|
81
|
-
parent_git_warped.subrepo_remote_url(to_parent_git_path)
|
82
|
-
)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
88
|
-
end
|
@@ -1,34 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/launcher/git/error'
|
4
|
-
require 'eac_ruby_utils/core_ext'
|
5
|
-
require 'avm/projects/stereotype'
|
6
|
-
|
7
|
-
module Avm
|
8
|
-
module Projects
|
9
|
-
module Stereotypes
|
10
|
-
class GitSubrepo
|
11
|
-
require_sub __FILE__
|
12
|
-
include Avm::Projects::Stereotype
|
13
|
-
|
14
|
-
class << self
|
15
|
-
def match?(path)
|
16
|
-
File.exist?(path.real.subpath('.gitrepo')) && subrepo_url(path.real) != 'none'
|
17
|
-
end
|
18
|
-
|
19
|
-
def color
|
20
|
-
:light_cyan
|
21
|
-
end
|
22
|
-
|
23
|
-
def subrepo_url(path)
|
24
|
-
File.read(path.subpath('.gitrepo')).each_line do |l|
|
25
|
-
m = /remote\s*=\s(.+)/.match(l)
|
26
|
-
return m[1] if m
|
27
|
-
end
|
28
|
-
raise ::Avm::Launcher::Git::Error.new(path, '"remote = ... " not found')
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
end
|
@@ -1,32 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/launcher/git/warp_base'
|
4
|
-
require 'avm/launcher/git/sub_warp_base'
|
5
|
-
|
6
|
-
module Avm
|
7
|
-
module Projects
|
8
|
-
module Stereotypes
|
9
|
-
class GitSubtree
|
10
|
-
class Warp < ::Avm::Launcher::Git::WarpBase
|
11
|
-
include ::Avm::Launcher::Git::SubWarpBase
|
12
|
-
|
13
|
-
private
|
14
|
-
|
15
|
-
def current_ref
|
16
|
-
instance.cache_key("git_subtree.parent.#{cache_git.git.object('HEAD').sha}") do
|
17
|
-
cache_git.subtree_split(to_parent_git_path)
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
def source_instance
|
22
|
-
parent_instance
|
23
|
-
end
|
24
|
-
|
25
|
-
def source_remote_name
|
26
|
-
instance.project_name
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|
32
|
-
end
|
@@ -1,51 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/projects/stereotype'
|
4
|
-
require 'avm/projects/stereotypes/git'
|
5
|
-
require 'eac_ruby_utils/core_ext'
|
6
|
-
|
7
|
-
module Avm
|
8
|
-
module Projects
|
9
|
-
module Stereotypes
|
10
|
-
class GitSubtree
|
11
|
-
require_sub __FILE__
|
12
|
-
include Avm::Projects::Stereotype
|
13
|
-
|
14
|
-
class << self
|
15
|
-
def match?(path)
|
16
|
-
return false if other_git_stereotype?(path)
|
17
|
-
return false unless other_nogit_stereotype?(path)
|
18
|
-
|
19
|
-
parent = parent_git(path.parent_path)
|
20
|
-
return false unless parent
|
21
|
-
|
22
|
-
::Git.open(parent.real).remote(path.real.basename).url ? true : false
|
23
|
-
end
|
24
|
-
|
25
|
-
def color
|
26
|
-
:green
|
27
|
-
end
|
28
|
-
|
29
|
-
def parent_git(parent_path)
|
30
|
-
return nil unless parent_path
|
31
|
-
|
32
|
-
if ::Avm::Projects::Stereotypes::Git.match?(parent_path)
|
33
|
-
parent_path
|
34
|
-
else
|
35
|
-
parent_git(parent_path.parent_path)
|
36
|
-
end
|
37
|
-
end
|
38
|
-
|
39
|
-
def other_git_stereotype?(path)
|
40
|
-
::Avm::Projects::Stereotypes::Git.match?(path) ||
|
41
|
-
::Avm::Projects::Stereotypes::GitSubrepo.match?(path)
|
42
|
-
end
|
43
|
-
|
44
|
-
def other_nogit_stereotype?(path)
|
45
|
-
Avm::Projects::Stereotype.nogit_stereotypes.any? { |s| s.match?(path) }
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
51
|
-
end
|
@@ -1,28 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/eac_ruby_base1/sources/base'
|
4
|
-
require 'avm/version_number'
|
5
|
-
require 'eac_ruby_utils/core_ext'
|
6
|
-
|
7
|
-
module Avm
|
8
|
-
module Projects
|
9
|
-
module Stereotypes
|
10
|
-
class RubyGem
|
11
|
-
module LocalProjectMixin
|
12
|
-
# @return [Avm::EacRubyBase1::Sources::Base]
|
13
|
-
def ruby_gem
|
14
|
-
@ruby_gem ||= ::Avm::EacRubyBase1::Sources::Base.new(path)
|
15
|
-
end
|
16
|
-
|
17
|
-
def version
|
18
|
-
ruby_gem.version.if_present { |v| ::Avm::VersionNumber.new(v) }
|
19
|
-
end
|
20
|
-
|
21
|
-
def version=(value)
|
22
|
-
ruby_gem.version_file.value = value
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
@@ -1,129 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'curb'
|
4
|
-
require 'json'
|
5
|
-
require 'eac_ruby_utils/simple_cache'
|
6
|
-
require 'rubygems'
|
7
|
-
require 'eac_cli/speaker'
|
8
|
-
require 'avm/launcher/publish/base'
|
9
|
-
require 'avm/launcher/publish/check_result'
|
10
|
-
require 'avm/launcher/ruby/gem'
|
11
|
-
|
12
|
-
module Avm
|
13
|
-
module Projects
|
14
|
-
module Stereotypes
|
15
|
-
class RubyGem
|
16
|
-
class Publish < ::Avm::Launcher::Publish::Base
|
17
|
-
include ::EacRubyUtils::SimpleCache
|
18
|
-
enable_speaker
|
19
|
-
|
20
|
-
protected
|
21
|
-
|
22
|
-
def internal_check
|
23
|
-
gem_published? ? internal_check_gem_published : internal_check_gem_unpublished
|
24
|
-
end
|
25
|
-
|
26
|
-
private
|
27
|
-
|
28
|
-
def internal_check_gem_published
|
29
|
-
if version_published?
|
30
|
-
outdated_version? ? outdated_version_check_result : version_published_check_result
|
31
|
-
else
|
32
|
-
version_unpublished_check_result
|
33
|
-
end
|
34
|
-
end
|
35
|
-
|
36
|
-
def internal_check_gem_unpublished
|
37
|
-
if new_gem_allowed?
|
38
|
-
version_unpublished_check_result
|
39
|
-
else
|
40
|
-
new_gem_disallowed_check_result
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
def new_gem_disallowed_check_result
|
45
|
-
::Avm::Launcher::Publish::CheckResult.blocked(
|
46
|
-
"#{gem_spec.full_name} does not exist in RubyGems"
|
47
|
-
)
|
48
|
-
end
|
49
|
-
|
50
|
-
def version_published_check_result
|
51
|
-
::Avm::Launcher::Publish::CheckResult.updated("#{gem_spec.full_name} already pushed")
|
52
|
-
end
|
53
|
-
|
54
|
-
def outdated_version_check_result
|
55
|
-
::Avm::Launcher::Publish::CheckResult.outdated(
|
56
|
-
"#{gem_spec.full_name} is outdated (Max: #{gem_version_max})"
|
57
|
-
)
|
58
|
-
end
|
59
|
-
|
60
|
-
def version_unpublished_check_result
|
61
|
-
::Avm::Launcher::Publish::CheckResult.pending("#{gem_spec.full_name} not found " \
|
62
|
-
'in RubyGems')
|
63
|
-
end
|
64
|
-
|
65
|
-
def source_uncached
|
66
|
-
instance.warped
|
67
|
-
end
|
68
|
-
|
69
|
-
def gem_spec_uncached
|
70
|
-
::Avm::Projects::Stereotypes::RubyGem.load_gemspec(gemspec)
|
71
|
-
end
|
72
|
-
|
73
|
-
def gem_build_uncached
|
74
|
-
::Avm::Launcher::Ruby::Gem::Build.new(source)
|
75
|
-
end
|
76
|
-
|
77
|
-
def publish
|
78
|
-
gem_build.build
|
79
|
-
push_gem
|
80
|
-
ensure
|
81
|
-
gem_build.close
|
82
|
-
end
|
83
|
-
|
84
|
-
def new_gem_allowed?
|
85
|
-
::Avm::Launcher::Context.current.publish_options[:new]
|
86
|
-
end
|
87
|
-
|
88
|
-
def gem_published?
|
89
|
-
gem_versions.any?
|
90
|
-
end
|
91
|
-
|
92
|
-
def version_published?
|
93
|
-
gem_versions.any? { |v| v['number'] == gem_spec.version }
|
94
|
-
end
|
95
|
-
|
96
|
-
def outdated_version?
|
97
|
-
gem_version_max.present? && ::Gem::Version.new(gem_spec.version) < gem_version_max
|
98
|
-
end
|
99
|
-
|
100
|
-
def gem_versions_uncached
|
101
|
-
http = Curl.get("https://rubygems.org/api/v1/versions/#{gem_spec.name}.json")
|
102
|
-
return JSON.parse!(http.body_str) if /\A2/ =~ http.status
|
103
|
-
return [] if /\A4/ =~ http.status
|
104
|
-
|
105
|
-
raise "#{http} code error: #{http.status}"
|
106
|
-
end
|
107
|
-
|
108
|
-
def gem_version_max_uncached
|
109
|
-
gem_versions.map { |v| ::Gem::Version.new(v['number']) }.max
|
110
|
-
end
|
111
|
-
|
112
|
-
def push_gem
|
113
|
-
info("Pushing gem #{gem_spec}...")
|
114
|
-
command = ['gem', 'push', gem_build.output_file]
|
115
|
-
unless ::Avm::Launcher::Context.current.publish_options[:confirm]
|
116
|
-
command = %w[echo] + command + %w[(Dry-run)]
|
117
|
-
end
|
118
|
-
EacRubyUtils::Envs.local.command(command).system
|
119
|
-
info('Pushed!')
|
120
|
-
end
|
121
|
-
|
122
|
-
def gemspec_uncached
|
123
|
-
source.find_file_with_extension('.gemspec')
|
124
|
-
end
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|
129
|
-
end
|
@@ -1,30 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'avm/projects/stereotype'
|
4
|
-
require 'avm/launcher/ruby/gem/specification'
|
5
|
-
require 'eac_ruby_utils/core_ext'
|
6
|
-
|
7
|
-
module Avm
|
8
|
-
module Projects
|
9
|
-
module Stereotypes
|
10
|
-
class RubyGem
|
11
|
-
require_sub __FILE__
|
12
|
-
include Avm::Projects::Stereotype
|
13
|
-
|
14
|
-
class << self
|
15
|
-
def match?(path)
|
16
|
-
Dir.glob(File.join(path.real, '*.gemspec')).any?
|
17
|
-
end
|
18
|
-
|
19
|
-
def color
|
20
|
-
:red
|
21
|
-
end
|
22
|
-
|
23
|
-
def load_gemspec(gemspec_file)
|
24
|
-
::Avm::Launcher::Ruby::Gem::Specification.new(gemspec_file)
|
25
|
-
end
|
26
|
-
end
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|