avm-eac_ruby_base1 0.9.1 → 0.12.0

Sign up to get free protection for your applications and to get access to all the features.
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