avm-eac_ruby_base1 0.22.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3dbe022e931d72a6273d17350c232661bb943b57a7b69f432e43fba5083088cf
4
- data.tar.gz: 6315d5afaff312e6a410e1f06cfa13f064e1f2a571c4e4d8362d1622154aa378
3
+ metadata.gz: 593b0984d6d71dda38fdf738b47b62a34203ffafaea53ef49677e3784f88b79c
4
+ data.tar.gz: 0ea5f59a0beaa510c80876bd7fbaca0882177a398ceaf413646fe7b0f125ea53
5
5
  SHA512:
6
- metadata.gz: d005ee107b7eadcfd496e76ec2a88afeefdba7443f819d9a8b3d2f96c3d27d37bacde960ce9e44055dc847cfc1a68df457b161a6a407d14db0d4109cf5d3bc58
7
- data.tar.gz: 228237474272dbc10f48062e96fa9adafce13709607d32e36d4fe195ce04456bce87fcf476d8693b74b5df73817dd5e35da0f644b9d96cf73ef7eb5b81f74ce6
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
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module Launcher
8
+ module Gem
9
+ require_sub __FILE__
10
+ end
11
+ end
12
+ end
13
+ end
@@ -0,0 +1,11 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module Launcher
8
+ require_sub __FILE__
9
+ end
10
+ end
11
+ end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRubyBase1
5
- VERSION = '0.22.0'
5
+ VERSION = '0.23.0'
6
6
  end
7
7
  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.22.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-10-02 00:00:00.000000000 Z
11
+ date: 2022-10-11 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.45'
19
+ version: '0.48'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.45'
26
+ version: '0.48'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: avm-eac_generic_base0
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -105,6 +105,10 @@ files:
105
105
  - lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_factory.rb
106
106
  - lib/avm/eac_ruby_base1/bundler/incompatible_parser/line_parser_base.rb
107
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
108
112
  - lib/avm/eac_ruby_base1/preferred_version_requirements.rb
109
113
  - lib/avm/eac_ruby_base1/rubocop.rb
110
114
  - lib/avm/eac_ruby_base1/rubocop/configured.rb