avm-eac_ruby_base1 0.9.1 → 0.12.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: 8a0defddeada92680a4688c0326e8d40f21eb9c12f4b0ede5e3785a4b2d1c074
4
- data.tar.gz: c2e29d312d303bc07c1b25bdb939bd218347d2fbb9519810b64e1223890ebc20
3
+ metadata.gz: e27f816ad7640d7c9616635938c93303c0d109e49540e35300ec0b8eac7c8605
4
+ data.tar.gz: 1ebc67af9c3e7f010c63eeda951036e5d027f10b903156c44954ac5a4297954a
5
5
  SHA512:
6
- metadata.gz: 3fc27304decd96a44a817b48dd149b537f0dd46ff61738e0467f3b70c1fac889536a206995063baf34832e03a1fa7317b0be8ef87fc2b4d7d7aa954875360723
7
- data.tar.gz: a07421f056431ab44b42803aa266df92d90acf79650f3fb0ace721920a7fecf33d4cbe7982b875562055ab62cf2c32814af72460bfcde0050071cedd55e47c92
6
+ metadata.gz: 5be8bf1240646abe6a2bf259e729000cdbbc2a8fb8c0a089f45385d406b58f90bf42e7e3057aa39bbad9bd28ad575db9a7e50734ccf0eb83028884b83e07d916
7
+ data.tar.gz: f10013e8d77b05db72cbf57dc14791f9442e966803c3df7328a72cf63a561c7ab3b6f1f108def93f132028aa6342de76850c32b745487243d18436ced7dff7b1
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module Rubygems
8
+ class Gemspec
9
+ class AddOrReplaceGemLine
10
+ enable_method_class
11
+ common_constructor :sender, :gem_name, :gem_specs
12
+ delegate :lines, to: :sender
13
+
14
+ DEPENDENCY_PREFIX = ' s.add_dependency'
15
+
16
+ def existing_gem_line_index
17
+ lines.index { |line| line.start_with?(gem_line_prefix) }
18
+ end
19
+
20
+ def result
21
+ if existing_gem_line_index.present?
22
+ replace_line
23
+ else
24
+ add_line
25
+ end
26
+ end
27
+
28
+ def add_line
29
+ lines.insert(add_line_index, new_gem_line)
30
+ end
31
+
32
+ def add_line_index
33
+ (gems_lines_start_index..(lines.count - 1)).each do |e|
34
+ return e if new_gem_line < lines[e]
35
+ end
36
+ lines.count
37
+ end
38
+
39
+ def gems_lines_start_index
40
+ lines.index { |line| line.start_with?(DEPENDENCY_PREFIX) } || lines.count
41
+ end
42
+
43
+ def new_gem_line
44
+ ([gem_line_prefix] + quoted_gem_specs).join(', ')
45
+ end
46
+
47
+ def gem_line_prefix
48
+ "#{DEPENDENCY_PREFIX} '#{gem_name}'"
49
+ end
50
+
51
+ def replace_line
52
+ lines[existing_gem_line_index] = new_gem_line
53
+ end
54
+
55
+ def quoted_gem_specs
56
+ gem_specs.map { |gem_spec| "'#{gem_spec}'" }
57
+ end
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,19 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module Rubygems
8
+ class Gemspec
9
+ class Dependency
10
+ common_constructor :gemspec, :gem_name
11
+
12
+ def version_specs=(version_specs)
13
+ gemspec.add_or_replace_gem_line(gem_name, version_specs)
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module EacRubyBase1
7
+ module Rubygems
8
+ class Gemspec
9
+ require_sub __FILE__, require_dependency: true
10
+
11
+ DEPENDENCY_LINE_PARSER = /s\.add_dependency\s*'(\S+)'/.to_parser { |m| m[1] }
12
+
13
+ class << self
14
+ def from_file(path)
15
+ new(path.read.each_line.map(&:rstrip))
16
+ end
17
+ end
18
+
19
+ common_constructor :lines
20
+
21
+ # @return [Avm::EacRubyBase1::Bundler::Gemfile::Dependency]
22
+ def dependency(gem_name)
23
+ ::Avm::EacRubyBase1::Rubygems::Gemspec::Dependency.new(self, gem_name)
24
+ end
25
+
26
+ # @return [Array<Avm::EacRubyBase1::Bundler::Gemfile::Dependency>]
27
+ def dependencies
28
+ lines.lazy.map { |line| DEPENDENCY_LINE_PARSER.parse(line) }.reject(&:blank?)
29
+ .map { |gem_name| dependency(gem_name) }.to_a
30
+ end
31
+
32
+ def write(path)
33
+ path.to_pathname.write(to_text)
34
+ end
35
+
36
+ def to_text
37
+ lines.map { |line| "#{line}\n" }.join
38
+ end
39
+ end
40
+ end
41
+ end
42
+ end
@@ -20,7 +20,7 @@ module Avm
20
20
 
21
21
  # @return [String]
22
22
  def configured_gemfile_path
23
- configuration.entry(CONFIGURED_GEMFILE_PATH_ENTRY_KEY).value
23
+ configuration_entry(CONFIGURED_GEMFILE_PATH_ENTRY_KEY).value
24
24
  end
25
25
 
26
26
  # @return [String]
@@ -9,6 +9,9 @@ module Avm
9
9
  class Base < ::Avm::EacGenericBase0::Sources::Base
10
10
  module Rake
11
11
  RAKEFILE_BASENAME = 'Rakefile'
12
+ RAKE_TASKS_LINE_PARSER = /\Arake\s+(\S+)\s+/.to_parser do |m|
13
+ m[1]
14
+ end
12
15
 
13
16
  # @return [Avm::EacRubyBase1::Sources::Base::BundleCommand]
14
17
  def rake(*args)
@@ -21,6 +24,17 @@ module Avm
21
24
  def rakefile_path
22
25
  path.join(RAKEFILE_BASENAME)
23
26
  end
27
+
28
+ # @return [Boolean]
29
+ def rake_task?(task_name)
30
+ rake_tasks.include?(task_name)
31
+ end
32
+
33
+ # @return [Array<String>]
34
+ def rake_tasks
35
+ rake('--all', '--tasks').execute!.each_line
36
+ .map { |line| RAKE_TASKS_LINE_PARSER.parse!(line) }
37
+ end
24
38
  end
25
39
  end
26
40
  end
@@ -36,6 +36,18 @@ module Avm
36
36
  self
37
37
  end
38
38
 
39
+ # @return [Avm::EacRubyBase1::Source::Base]
40
+ def ruby_parent
41
+ a_parent = parent
42
+
43
+ loop do
44
+ raise 'No Ruby parent found' if a_parent.blank?
45
+ return a_parent if a_parent.is_a?(::Avm::EacRubyBase1::Sources::Base)
46
+
47
+ a_parent = a_parent.parent
48
+ end
49
+ end
50
+
39
51
  # @return [EacRubyUtils::Envs::Command]
40
52
  def rspec_test_command
41
53
  bundle('exec', 'rspec', '--fail-fast').chdir_root
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacRubyBase1
5
- VERSION = '0.9.1'
5
+ VERSION = '0.12.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.9.1
4
+ version: 0.12.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-07-18 00:00:00.000000000 Z
11
+ date: 2022-08-02 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.23'
19
+ version: '0.26'
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.23'
26
+ version: '0.26'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: avm-eac_generic_base0
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -116,6 +116,9 @@ files:
116
116
  - lib/avm/eac_ruby_base1/rubocop/envvar.rb
117
117
  - lib/avm/eac_ruby_base1/rubocop/gemfile.rb
118
118
  - lib/avm/eac_ruby_base1/rubygems.rb
119
+ - lib/avm/eac_ruby_base1/rubygems/gemspec.rb
120
+ - lib/avm/eac_ruby_base1/rubygems/gemspec/add_or_replace_gem_line.rb
121
+ - lib/avm/eac_ruby_base1/rubygems/gemspec/dependency.rb
119
122
  - lib/avm/eac_ruby_base1/rubygems/version_file.rb
120
123
  - lib/avm/eac_ruby_base1/sources.rb
121
124
  - lib/avm/eac_ruby_base1/sources/base.rb