avm-eac_ruby_base1 0.21.0 → 0.23.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/eac_ruby_base1/launcher/gem/build.rb +125 -0
- data/lib/avm/eac_ruby_base1/launcher/gem/specification.rb +63 -0
- data/lib/avm/eac_ruby_base1/launcher/gem.rb +13 -0
- data/lib/avm/eac_ruby_base1/launcher.rb +11 -0
- data/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_local.rb +21 -4
- data/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock/git.rb +60 -0
- data/lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock.rb +89 -0
- data/lib/avm/eac_ruby_base1/version.rb +1 -1
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 593b0984d6d71dda38fdf738b47b62a34203ffafaea53ef49677e3784f88b79c
|
4
|
+
data.tar.gz: 0ea5f59a0beaa510c80876bd7fbaca0882177a398ceaf413646fe7b0f125ea53
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 0da3cca9255f6720eca645cff4b1e1bb315e3f3cb152011feb3e9cbe28d045b0d57b248ac1139a1747b55102e663982c86dbde9c6db081880444e4f17cd0e825
|
7
|
+
data.tar.gz: aa6e632bdf53ff895ef761f2e8a9001ec1e764584b53eab34da6b68f8a1efb4fa0a194239c8210a3f0349bda2c33552df04d18644feb8198d8d6ab157cb26f4e
|
@@ -0,0 +1,125 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'tmpdir'
|
4
|
+
require 'eac_cli/speaker'
|
5
|
+
require 'eac_ruby_utils/envs'
|
6
|
+
require 'avm/eac_ruby_base1/launcher/gem/specification'
|
7
|
+
|
8
|
+
module Avm
|
9
|
+
module EacRubyBase1
|
10
|
+
module Launcher
|
11
|
+
module Gem
|
12
|
+
class Build
|
13
|
+
enable_speaker
|
14
|
+
|
15
|
+
def initialize(original_gem_root)
|
16
|
+
@original_gem_root = original_gem_root
|
17
|
+
end
|
18
|
+
|
19
|
+
def output_file
|
20
|
+
return nil unless @gem_root
|
21
|
+
|
22
|
+
@gem_root.find_files_with_extension('.gem').first
|
23
|
+
end
|
24
|
+
|
25
|
+
def builded?
|
26
|
+
output_file.present? && ::File.exist?(output_file)
|
27
|
+
end
|
28
|
+
|
29
|
+
def build
|
30
|
+
return if builded?
|
31
|
+
|
32
|
+
copy_gem_files
|
33
|
+
build_gem
|
34
|
+
check_gem_empty_size
|
35
|
+
check_gem_version
|
36
|
+
end
|
37
|
+
|
38
|
+
def close
|
39
|
+
::FileUtils.remove_entry(@gem_root) if @gem_root && ::File.directory?(@gem_root)
|
40
|
+
@gem_root = nil
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def copy_gem_files
|
46
|
+
@gem_root = ::Avm::Launcher::Paths::Real.new(::Dir.mktmpdir)
|
47
|
+
FileUtils.cp_r "#{@original_gem_root}/.", @gem_root
|
48
|
+
end
|
49
|
+
|
50
|
+
def build_gem
|
51
|
+
info("Building gemspec #{gemspec_file}...")
|
52
|
+
clear_gems
|
53
|
+
Dir.chdir @gem_root do
|
54
|
+
isolated_build_gem
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def isolated_build_gem
|
59
|
+
on_clean_ruby do
|
60
|
+
EacRubyUtils::Envs.local.command('gem', 'build', gemspec_file).execute!
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def check_gem_empty_size
|
65
|
+
Dir.mktmpdir do |dir|
|
66
|
+
Dir.chdir dir do
|
67
|
+
EacRubyUtils::Envs.local.command('gem', 'unpack', gem).system
|
68
|
+
gs = File.join(dir, File.basename(gem, '.gem'))
|
69
|
+
if (Dir.entries(gs) - %w[. ..]).empty?
|
70
|
+
raise "\"#{dir}\" (Unpacked from #{gem}) has no source code"
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
|
76
|
+
def clear_gems
|
77
|
+
@gem_root.find_files_with_extension('.gem').each do |f|
|
78
|
+
FileUtils.rm_rf(f)
|
79
|
+
end
|
80
|
+
end
|
81
|
+
|
82
|
+
def gemspec_file
|
83
|
+
@gem_root.find_file_with_extension('.gemspec')
|
84
|
+
end
|
85
|
+
|
86
|
+
def gem
|
87
|
+
@gem_root.find_file_with_extension('.gem')
|
88
|
+
end
|
89
|
+
|
90
|
+
def check_gem_version
|
91
|
+
spec = ::Avm::EacRubyBase1::Launcher::Gem::Specification.new(gemspec_file)
|
92
|
+
return if ::File.basename(output_file, '.gem') == spec.full_name
|
93
|
+
|
94
|
+
raise("Builded gem is not the same version of gemspec (#{spec}, #{output_file})")
|
95
|
+
end
|
96
|
+
|
97
|
+
def bundle_dependencies
|
98
|
+
gemfile = @gem_root.subpath('Gemfile')
|
99
|
+
return unless ::File.exist?(gemfile)
|
100
|
+
|
101
|
+
Dir.chdir(@gem_root) do
|
102
|
+
EacRubyUtils::Envs.local.command('bundle', 'install').execute!
|
103
|
+
end
|
104
|
+
end
|
105
|
+
|
106
|
+
def on_clean_ruby
|
107
|
+
on_clear_envvars('BUNDLE', 'RUBY') { yield }
|
108
|
+
end
|
109
|
+
|
110
|
+
def on_clear_envvars(*start_with_vars)
|
111
|
+
old_values = envvars_starting_with(start_with_vars)
|
112
|
+
old_values.each_key { |k| ENV.delete(k) }
|
113
|
+
yield
|
114
|
+
ensure
|
115
|
+
old_values&.each { |k, v| ENV[k] = v }
|
116
|
+
end
|
117
|
+
|
118
|
+
def envvars_starting_with(start_with_vars)
|
119
|
+
ENV.select { |k, _v| start_with_vars.any? { |var| k.start_with?(var) } }
|
120
|
+
end
|
121
|
+
end
|
122
|
+
end
|
123
|
+
end
|
124
|
+
end
|
125
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/core_ext/object'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module EacRubyBase1
|
7
|
+
module Launcher
|
8
|
+
module Gem
|
9
|
+
class Specification
|
10
|
+
class << self
|
11
|
+
def parse_version_file(file)
|
12
|
+
s = ::File.read(file)
|
13
|
+
m = /VERSION\s*=\s*[\'\"]([^\'\"]+)[\'\"]/.match(s)
|
14
|
+
m ? m[1] : nil
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
attr_reader :gemspec_file
|
19
|
+
|
20
|
+
def initialize(gemspec_file)
|
21
|
+
@gemspec_file = gemspec_file
|
22
|
+
end
|
23
|
+
|
24
|
+
def version
|
25
|
+
v = self.class.parse_version_file(version_file)
|
26
|
+
return v if v.present?
|
27
|
+
|
28
|
+
raise "Version not found on file \"#{version_file}\""
|
29
|
+
end
|
30
|
+
|
31
|
+
def name
|
32
|
+
::File.basename(gemspec_file).gsub(/\.gemspec\z/, '')
|
33
|
+
end
|
34
|
+
|
35
|
+
def full_name
|
36
|
+
"#{name}-#{version}"
|
37
|
+
end
|
38
|
+
|
39
|
+
def to_s
|
40
|
+
full_name
|
41
|
+
end
|
42
|
+
|
43
|
+
private
|
44
|
+
|
45
|
+
def gem_root
|
46
|
+
::File.dirname(gemspec_file)
|
47
|
+
end
|
48
|
+
|
49
|
+
def version_file
|
50
|
+
f = ::File.join(gem_root, 'lib', *namespace_parts, 'version.rb')
|
51
|
+
return f if ::File.exist?(f)
|
52
|
+
|
53
|
+
raise "Version file \"#{f}\" does not exist"
|
54
|
+
end
|
55
|
+
|
56
|
+
def namespace_parts
|
57
|
+
name.split('-')
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
@@ -29,17 +29,34 @@ module Avm
|
|
29
29
|
siblings.map { |s| sibling_gemfile_local_line(s) }.join
|
30
30
|
end
|
31
31
|
|
32
|
+
def on_unexisting_gemfile_local
|
33
|
+
return yield unless gemfile_local_path.exist?
|
34
|
+
|
35
|
+
::EacRubyUtils::Fs::Temp.on_file do |temp_file|
|
36
|
+
::FileUtils.cp(gemfile_local_path, temp_file)
|
37
|
+
begin
|
38
|
+
::FileUtils.rm_f(gemfile_local_path)
|
39
|
+
yield
|
40
|
+
ensure
|
41
|
+
::FileUtils.cp(temp_file, gemfile_local_path)
|
42
|
+
end
|
43
|
+
end
|
44
|
+
end
|
45
|
+
|
32
46
|
def run_bundle
|
33
|
-
|
34
|
-
|
35
|
-
|
47
|
+
on_unexisting_gemfile_local do
|
48
|
+
the_source.bundle.execute!
|
49
|
+
rescue ::RuntimeError
|
50
|
+
the_source.bundle('update').execute!
|
51
|
+
end
|
36
52
|
end
|
37
53
|
|
38
54
|
def sibling_gemfile_local_line(sibling)
|
39
55
|
["gem '#{sibling.gem_name}'",
|
40
56
|
"path: ::File.expand_path('" +
|
41
57
|
sibling.path.relative_path_from(the_source.path).to_path +
|
42
|
-
"', __dir__)"
|
58
|
+
"', __dir__)",
|
59
|
+
'require: false'].join(', ') + "\n"
|
43
60
|
end
|
44
61
|
|
45
62
|
def start_banner
|
@@ -0,0 +1,60 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module EacRubyBase1
|
7
|
+
module Sources
|
8
|
+
module Runners
|
9
|
+
class Bundler
|
10
|
+
class GemfileLock
|
11
|
+
module Git
|
12
|
+
private
|
13
|
+
|
14
|
+
def git_continue
|
15
|
+
infom "Adding \"#{gemfile_lock}\"..."
|
16
|
+
git_repo.command('add', gemfile_lock).execute!
|
17
|
+
if rebase_conflict?
|
18
|
+
git_continue_run('rebase')
|
19
|
+
elsif cherry_conflict?
|
20
|
+
git_continue_run('cherry-pick')
|
21
|
+
else
|
22
|
+
raise 'Unknown how to continue'
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
def git_continue_run(command)
|
27
|
+
infom "\"#{command}\" --continue..."
|
28
|
+
cmd = git_repo.command(command, '--continue')
|
29
|
+
.envvar('GIT_EDITOR', 'true')
|
30
|
+
return unless !cmd.system && !conflict?
|
31
|
+
|
32
|
+
fatal_error "\"#{cmd}\" failed and there is no conflict"
|
33
|
+
end
|
34
|
+
|
35
|
+
def git_repo
|
36
|
+
instance.scm.git_repo
|
37
|
+
end
|
38
|
+
|
39
|
+
def git_reset_checkout
|
40
|
+
git_reset_gemfile_lock
|
41
|
+
git_checkout_gemfile_lock
|
42
|
+
end
|
43
|
+
|
44
|
+
def git_checkout_gemfile_lock
|
45
|
+
infom 'Checkouting...'
|
46
|
+
git_repo.command('checkout', '--', gemfile_lock).system!
|
47
|
+
end
|
48
|
+
|
49
|
+
def git_reset_gemfile_lock
|
50
|
+
infom 'Reseting...'
|
51
|
+
git_repo.command('reset', gemfile_lock).system! if
|
52
|
+
::File.exist?(gemfile_lock)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
@@ -0,0 +1,89 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_cli/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module EacRubyBase1
|
7
|
+
module Sources
|
8
|
+
module Runners
|
9
|
+
class Bundler
|
10
|
+
class GemfileLock
|
11
|
+
require_sub __FILE__, include_modules: true
|
12
|
+
runner_with :help do
|
13
|
+
desc 'Manipulage a "Gemfile.lock" file.'
|
14
|
+
bool_opt '-c', '--continue', 'Continue Git rebase/cherry-pick.'
|
15
|
+
bool_opt '-i', '--install', 'Run "bundle install".'
|
16
|
+
bool_opt '-u', '--update', 'Run "bundle update".'
|
17
|
+
bool_opt '-r', '--recursive', 'Run until Git rebase/cherry-pick is finished.'
|
18
|
+
bool_opt '-a', '--all', 'Same as "-cirud".'
|
19
|
+
bool_opt '-d', '--delete', 'Delete Gemfile.lock'
|
20
|
+
end
|
21
|
+
|
22
|
+
def run
|
23
|
+
loop do
|
24
|
+
git_reset_checkout
|
25
|
+
delete_gemfile_lock
|
26
|
+
bundle_update
|
27
|
+
bundle_install
|
28
|
+
git_continue
|
29
|
+
break if complete?
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def complete?
|
36
|
+
!option_or_all?(:recursive) || !conflict?
|
37
|
+
end
|
38
|
+
|
39
|
+
def delete_gemfile_lock
|
40
|
+
::FileUtils.rm_f(gemfile_lock)
|
41
|
+
end
|
42
|
+
|
43
|
+
def rebasing?
|
44
|
+
git_repo.root_path.join('.git', 'rebase-merge').exist?
|
45
|
+
end
|
46
|
+
|
47
|
+
def bundle_install
|
48
|
+
infom '"bundle install"...'
|
49
|
+
bundle_run('install')
|
50
|
+
end
|
51
|
+
|
52
|
+
def bundle_update
|
53
|
+
infom '"bundle update"...'
|
54
|
+
bundle_run('update')
|
55
|
+
end
|
56
|
+
|
57
|
+
def gemfile_lock
|
58
|
+
'Gemfile.lock'
|
59
|
+
end
|
60
|
+
|
61
|
+
def bundle_run(*args)
|
62
|
+
instance.bundle(*args).system!
|
63
|
+
end
|
64
|
+
|
65
|
+
def conflict?
|
66
|
+
rebase_conflict? || cherry_conflict?
|
67
|
+
end
|
68
|
+
|
69
|
+
def rebase_conflict?
|
70
|
+
git_repo.root_path.join('.git', 'REBASE_HEAD').exist?
|
71
|
+
end
|
72
|
+
|
73
|
+
def cherry_conflict?
|
74
|
+
git_repo.root_path.join('.git', 'CHERRY_PICK_HEAD').exist?
|
75
|
+
end
|
76
|
+
|
77
|
+
def option_or_all?(option)
|
78
|
+
parsed[option] || parsed.all?
|
79
|
+
end
|
80
|
+
|
81
|
+
def instance
|
82
|
+
runner_context.call(:subject)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avm-eac_ruby_base1
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.23.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Put here the authors
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: avm
|
@@ -16,20 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: '0.
|
20
|
-
- - ">="
|
21
|
-
- !ruby/object:Gem::Version
|
22
|
-
version: 0.41.1
|
19
|
+
version: '0.48'
|
23
20
|
type: :runtime
|
24
21
|
prerelease: false
|
25
22
|
version_requirements: !ruby/object:Gem::Requirement
|
26
23
|
requirements:
|
27
24
|
- - "~>"
|
28
25
|
- !ruby/object:Gem::Version
|
29
|
-
version: '0.
|
30
|
-
- - ">="
|
31
|
-
- !ruby/object:Gem::Version
|
32
|
-
version: 0.41.1
|
26
|
+
version: '0.48'
|
33
27
|
- !ruby/object:Gem::Dependency
|
34
28
|
name: avm-eac_generic_base0
|
35
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -50,14 +44,14 @@ dependencies:
|
|
50
44
|
requirements:
|
51
45
|
- - "~>"
|
52
46
|
- !ruby/object:Gem::Version
|
53
|
-
version: '0.
|
47
|
+
version: '0.104'
|
54
48
|
type: :runtime
|
55
49
|
prerelease: false
|
56
50
|
version_requirements: !ruby/object:Gem::Requirement
|
57
51
|
requirements:
|
58
52
|
- - "~>"
|
59
53
|
- !ruby/object:Gem::Version
|
60
|
-
version: '0.
|
54
|
+
version: '0.104'
|
61
55
|
- !ruby/object:Gem::Dependency
|
62
56
|
name: aranha-parsers
|
63
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -111,6 +105,10 @@ files:
|
|
111
105
|
- lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_factory.rb
|
112
106
|
- lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_parser_base.rb
|
113
107
|
- lib/avm/eac_ruby_base1/bundler/incompatible_parser/version_requirement.rb
|
108
|
+
- lib/avm/eac_ruby_base1/launcher.rb
|
109
|
+
- lib/avm/eac_ruby_base1/launcher/gem.rb
|
110
|
+
- lib/avm/eac_ruby_base1/launcher/gem/build.rb
|
111
|
+
- lib/avm/eac_ruby_base1/launcher/gem/specification.rb
|
114
112
|
- lib/avm/eac_ruby_base1/preferred_version_requirements.rb
|
115
113
|
- lib/avm/eac_ruby_base1/rubocop.rb
|
116
114
|
- lib/avm/eac_ruby_base1/rubocop/configured.rb
|
@@ -139,6 +137,8 @@ files:
|
|
139
137
|
- lib/avm/eac_ruby_base1/sources/runners.rb
|
140
138
|
- lib/avm/eac_ruby_base1/sources/runners/bundler.rb
|
141
139
|
- lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_local.rb
|
140
|
+
- lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock.rb
|
141
|
+
- lib/avm/eac_ruby_base1/sources/runners/bundler/gemfile_lock/git.rb
|
142
142
|
- lib/avm/eac_ruby_base1/sources/runners/bundler/incompatible.rb
|
143
143
|
- lib/avm/eac_ruby_base1/sources/runners/update_dependencies_requirements.rb
|
144
144
|
- lib/avm/eac_ruby_base1/sources/tests.rb
|