avm 0.3.2 → 0.4.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: 664fd8172f0c55acb9025054087777483a8442028c94cf287fa4c868e9dcb19b
4
- data.tar.gz: 4d7bd04f6ee20c46b1abbbebe2cab10a3cf786cb4b34a557cf157d72d565b2a7
3
+ metadata.gz: 0a5a8832847c76afcae4e76ef3e8f7d1391d7cfb0b13788c3dc7273f9ef879f1
4
+ data.tar.gz: 0b89bd147edb92e0e3e4d158d16f0995ef41f0544a680beb053f9fa55b96a282
5
5
  SHA512:
6
- metadata.gz: '08719226470ae5fd2c38ae2c9afd83e259a1f9517f17c8e2c18ffd56b7ae8cee593097d2e1afbf82dfeb05125c208c02ff4b71cae5eed858c7ad213a66c22d0d'
7
- data.tar.gz: 4b7cc1247fb8bcb7f289a28f6b1be1dcb7249e28286b02450ad17d830599347b52a26e00e800c3d714e6bb05a1dab614b57c9e675c04299fa4307be322f6a61c
6
+ metadata.gz: a70af189af9aee66a693706ba031e5eb7c6d4c8533144099f325dfe2b88b9ef08daae16de8d2f09857f194816d653d3669527d6bc9c07d173566c9ab9121c3f6
7
+ data.tar.gz: d66a1741ec6295f54166a2007a4d168eddd4e7de30f538f87329067b580faf2572514d99302bb467e0b408dfe1a44dd54a9e4e2abaaed0292b3a7ba69bb02b95
@@ -0,0 +1,45 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_git'
4
+ require 'eac_ruby_utils/core_ext'
5
+
6
+ module Avm
7
+ module AppSrc
8
+ class Base
9
+ enable_simple_cache
10
+ enable_listable
11
+ lists.add_symbol :option, :parent
12
+ common_constructor :path, :options, default: [{}] do
13
+ self.path = path.to_pathname
14
+ self.options = self.class.lists.option.hash_keys_validate!(options)
15
+ end
16
+
17
+ delegate :to_s, to: :path
18
+
19
+ # @return [Avm::AppSrc::Base]
20
+ def parent
21
+ options[OPTION_PARENT]
22
+ end
23
+
24
+ # @return [Pathname]
25
+ def relative_path
26
+ return path if parent.blank?
27
+
28
+ path.relative_path_from(parent.path)
29
+ end
30
+
31
+ # @return [Enumerable<Avm::AppSrc::Base>]
32
+ def subs
33
+ git_repo.subrepos
34
+ .map { |subrepo| self.class.new(subrepo.subpath.expand_path(path), parent: self) }
35
+ end
36
+
37
+ private
38
+
39
+ # @return [EacGit::Local]
40
+ def git_repo_uncached
41
+ ::EacGit::Local.new(path)
42
+ end
43
+ end
44
+ end
45
+ end
@@ -0,0 +1,16 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/patches/eac_ruby_gems_utils/gem'
4
+ require 'i18n'
5
+
6
+ module Avm
7
+ module AppSrc
8
+ class Configuration < ::EacConfig::OldConfigs
9
+ LOCALE_KEY = :locale
10
+
11
+ def locale
12
+ read_entry(LOCALE_KEY) || ::I18n.default_locale
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,24 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Avm
4
+ module AppSrc
5
+ class Configuration < ::EacConfig::OldConfigs
6
+ RUBOCOP_COMMAND_KEY = 'ruby.rubocop.command'
7
+ RUBOCOP_GEMFILE_KEY = 'ruby.rubocop.gemfile'
8
+
9
+ def rubocop_command
10
+ read_command(RUBOCOP_COMMAND_KEY)
11
+ end
12
+
13
+ def rubocop_gemfile
14
+ gemfile_path = read_entry(RUBOCOP_GEMFILE_KEY)
15
+ return nil if gemfile_path.blank?
16
+
17
+ gemfile_path = gemfile_path.to_pathname.expand_path(storage_path.parent)
18
+ return gemfile_path if gemfile_path.file?
19
+
20
+ raise "Gemfile path \"#{gemfile_path}\" does not exist or is not a file"
21
+ end
22
+ end
23
+ end
24
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/patches/eac_ruby_gems_utils/gem'
4
+
5
+ module Avm
6
+ module AppSrc
7
+ class Configuration < ::EacConfig::OldConfigs
8
+ BUNDLE_TEST_COMMAND_KEY = 'test.bundle_command'
9
+ TEST_COMMAND_KEY = 'test.command'
10
+
11
+ def any_test_command
12
+ bundle_test_command || test_command
13
+ end
14
+
15
+ def test_command
16
+ read_command(TEST_COMMAND_KEY)
17
+ end
18
+
19
+ def bundle_test_command
20
+ read_entry(BUNDLE_TEST_COMMAND_KEY).if_present do |v|
21
+ args = v.is_a?(::Enumerable) ? v.map(&:to_s) : ::Shellwords.split(v)
22
+ ::EacRubyGemsUtils::Gem.new(::File.dirname(storage_path)).bundle(*args).chdir_root
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,55 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_config/old_configs'
4
+ require 'eac_ruby_utils/core_ext'
5
+ require 'yaml'
6
+
7
+ module Avm
8
+ module AppSrc
9
+ class Configuration < ::EacConfig::OldConfigs
10
+ require_sub __FILE__
11
+
12
+ FILENAMES = %w[.avm.yml .avm.yaml].freeze
13
+
14
+ class << self
15
+ def find_by_path(path)
16
+ path = ::Pathname.new(path.to_s) unless path.is_a?(::Pathname)
17
+ internal_find_path(path.expand_path)
18
+ end
19
+
20
+ def find_in_path(path)
21
+ absolute_pathname = path.to_pathname.expand_path
22
+ if absolute_pathname.directory?
23
+ FILENAMES.each do |filename|
24
+ file = absolute_pathname.join(filename)
25
+ return new(file) if file.exist?
26
+ end
27
+ end
28
+ nil
29
+ end
30
+
31
+ private
32
+
33
+ def internal_find_path(absolute_pathname)
34
+ r = find_in_path(absolute_pathname)
35
+ return r if r.present?
36
+
37
+ internal_find_path(absolute_pathname.dirname) unless absolute_pathname.root?
38
+ end
39
+ end
40
+
41
+ def initialize(path)
42
+ super(nil, storage_path: path)
43
+ end
44
+
45
+ # Utility to read a configuration as a [EacRubyUtils::Envs::Command].
46
+ # @return [EacRubyUtils::Envs::Command]
47
+ def read_command(key)
48
+ read_entry(key).if_present do |v|
49
+ args = v.is_a?(::Enumerable) ? v.map(&:to_s) : ::Shellwords.split(v)
50
+ ::EacRubyUtils::Envs.local.command(args).chdir(::File.dirname(storage_path))
51
+ end
52
+ end
53
+ end
54
+ end
55
+ end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module AppSrc
7
+ require_sub __FILE__
8
+ end
9
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/files/info'
3
+ require 'eac_fs/file_info'
4
4
  require 'ostruct'
5
5
 
6
6
  module Avm
@@ -50,7 +50,7 @@ module Avm
50
50
  end
51
51
 
52
52
  def match_by_type?(file)
53
- info = ::Avm::Files::Info.new(file)
53
+ info = ::EacFs::FileInfo.new(file)
54
54
  return unless info.content_type.type == 'text'
55
55
 
56
56
  valid_types.include?(info.content_type.subtype)
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/executables'
3
4
  require 'avm/files/formatter/formats/generic_plain'
4
5
 
5
6
  module Avm
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/executables'
3
4
  require 'avm/files/formatter/formats/generic_plain'
4
5
 
5
6
  module Avm
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/executables'
3
4
  require 'avm/files/formatter/formats/generic_plain'
4
5
 
5
6
  module Avm
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/executables'
3
4
  require 'avm/files/formatter/formats/generic_plain'
4
5
 
5
6
  module Avm
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/files/info'
3
+ require 'eac_fs/file_info'
4
4
 
5
5
  module Avm
6
6
  module Files
@@ -39,7 +39,7 @@ module Avm
39
39
  private
40
40
 
41
41
  def original_info_uncached
42
- ::Avm::Files::Info.new(path)
42
+ ::EacFs::FileInfo.new(path)
43
43
  end
44
44
 
45
45
  def original_charset_uncached
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/apps/sources/configuration'
3
+ require 'avm/app_src/configuration'
4
4
  require 'avm/result'
5
5
  require 'eac_ruby_utils/fs/temp'
6
6
 
@@ -36,7 +36,7 @@ module Avm
36
36
  end
37
37
 
38
38
  def configuration_uncached
39
- ::Avm::Apps::Sources::Configuration.find_by_path(@git)
39
+ ::Avm::AppSrc::Configuration.find_by_path(@git)
40
40
  end
41
41
  end
42
42
  end
@@ -1,6 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/fs_cache'
4
3
  require 'eac_ruby_utils/core_ext'
5
4
  require 'eac_ruby_utils/ruby'
6
5
 
@@ -53,8 +52,8 @@ module Avm
53
52
  end
54
53
 
55
54
  def root_cache
56
- ::Avm.fs_cache.child('git', 'revision_test', git_absolute_path.parameterize, sha1,
57
- options.fetch(:test_command).to_s.parameterize)
55
+ fs_cache.child(git_absolute_path.parameterize, sha1,
56
+ options.fetch(:test_command).to_s.parameterize)
58
57
  end
59
58
 
60
59
  def run_test
@@ -0,0 +1,62 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/jobs/variables_source'
4
+ require 'eac_cli/core_ext'
5
+
6
+ module Avm
7
+ module Jobs
8
+ module Base
9
+ common_concern do
10
+ include ::ActiveSupport::Callbacks
11
+
12
+ enable_speaker
13
+ enable_simple_cache
14
+ enable_listable
15
+ common_constructor :instance, :options, default: [{}] do
16
+ if option_list.present?
17
+ self.options = option_list.hash_keys_validate!(options.symbolize_keys)
18
+ end
19
+ end
20
+ define_callbacks(*jobs)
21
+ end
22
+
23
+ module ClassMethods
24
+ def jobs
25
+ const_get('JOBS').dup
26
+ end
27
+ end
28
+
29
+ module InstanceMethods
30
+ def option_list
31
+ nil
32
+ end
33
+
34
+ def run
35
+ start_banner if respond_to?(:start_banner)
36
+ run_jobs
37
+ ::Avm::Result.success('Done!')
38
+ rescue ::Avm::Result::Error => e
39
+ e.to_result
40
+ end
41
+
42
+ def variables_source
43
+ ::Avm::Jobs::VariablesSource.new(self, instance)
44
+ end
45
+
46
+ protected
47
+
48
+ def run_jobs
49
+ jobs.each do |job|
50
+ run_callbacks job do
51
+ send(job)
52
+ end
53
+ end
54
+ end
55
+
56
+ def jobs
57
+ self.class.jobs
58
+ end
59
+ end
60
+ end
61
+ end
62
+ end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Jobs
7
+ class VariablesSource
8
+ common_constructor :job, :instance
9
+
10
+ def read_entry(path, options = {})
11
+ entry_from_job(path) || instance.read_entry(path, options)
12
+ end
13
+
14
+ private
15
+
16
+ def entry_from_job(path)
17
+ method = path.gsub('.', '_').underscore
18
+ return job.send(method) if job.respond_to?(method, true)
19
+ end
20
+ end
21
+ end
22
+ end
data/lib/avm/jobs.rb ADDED
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avm
6
+ module Jobs
7
+ require_sub __FILE__
8
+ end
9
+ end
data/lib/avm/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avm
4
- VERSION = '0.3.2'
4
+ VERSION = '0.4.0'
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.2
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Eduardo H. Bogoni
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-09-06 00:00:00.000000000 Z
11
+ date: 2021-09-25 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: eac_docker
@@ -72,6 +72,54 @@ dependencies:
72
72
  - - ">="
73
73
  - !ruby/object:Gem::Version
74
74
  version: 0.1.1
75
+ - !ruby/object:Gem::Dependency
76
+ name: filesize
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '0.2'
82
+ type: :runtime
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '0.2'
89
+ - !ruby/object:Gem::Dependency
90
+ name: htmlbeautifier
91
+ requirement: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '1.3'
96
+ - - ">="
97
+ - !ruby/object:Gem::Version
98
+ version: 1.3.1
99
+ type: :runtime
100
+ prerelease: false
101
+ version_requirements: !ruby/object:Gem::Requirement
102
+ requirements:
103
+ - - "~>"
104
+ - !ruby/object:Gem::Version
105
+ version: '1.3'
106
+ - - ">="
107
+ - !ruby/object:Gem::Version
108
+ version: 1.3.1
109
+ - !ruby/object:Gem::Dependency
110
+ name: minitar
111
+ requirement: !ruby/object:Gem::Requirement
112
+ requirements:
113
+ - - "~>"
114
+ - !ruby/object:Gem::Version
115
+ version: '0.9'
116
+ type: :runtime
117
+ prerelease: false
118
+ version_requirements: !ruby/object:Gem::Requirement
119
+ requirements:
120
+ - - "~>"
121
+ - !ruby/object:Gem::Version
122
+ version: '0.9'
75
123
  - !ruby/object:Gem::Dependency
76
124
  name: aranha-parsers
77
125
  requirement: !ruby/object:Gem::Requirement
@@ -113,6 +161,12 @@ extensions: []
113
161
  extra_rdoc_files: []
114
162
  files:
115
163
  - lib/avm.rb
164
+ - lib/avm/app_src.rb
165
+ - lib/avm/app_src/base.rb
166
+ - lib/avm/app_src/configuration.rb
167
+ - lib/avm/app_src/configuration/_locale.rb
168
+ - lib/avm/app_src/configuration/_rubocop.rb
169
+ - lib/avm/app_src/configuration/_tests.rb
116
170
  - lib/avm/docker.rb
117
171
  - lib/avm/docker/container.rb
118
172
  - lib/avm/docker/image.rb
@@ -139,7 +193,6 @@ files:
139
193
  - lib/avm/files/formatter/formats/ruby.rb
140
194
  - lib/avm/files/formatter/formats/xml.rb
141
195
  - lib/avm/files/formatter/utf8_assert.rb
142
- - lib/avm/files/info.rb
143
196
  - lib/avm/files/rotate.rb
144
197
  - lib/avm/git.rb
145
198
  - lib/avm/git/auto_commit/commit_info.rb
@@ -183,6 +236,9 @@ files:
183
236
  - lib/avm/git/subrepo_check/show_result.rb
184
237
  - lib/avm/git/subrepo_checks.rb
185
238
  - lib/avm/instances/docker_image.rb
239
+ - lib/avm/jobs.rb
240
+ - lib/avm/jobs/base.rb
241
+ - lib/avm/jobs/variables_source.rb
186
242
  - lib/avm/result.rb
187
243
  - lib/avm/version.rb
188
244
  - lib/avm/version_number.rb
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/executables'
4
- require 'eac_ruby_utils/core_ext'
5
- require 'content-type'
6
-
7
- module Avm
8
- module Files
9
- class Info
10
- enable_simple_cache
11
- common_constructor :path
12
-
13
- private
14
-
15
- def content_type_uncached
16
- ::ContentType.parse(
17
- ::Avm::Executables.file.command.append(['-ib', path]).execute!.strip
18
- )
19
- rescue Parslet::ParseFailed
20
- ::ContentType.parse('application/unknown')
21
- end
22
- end
23
- end
24
- end