avm 0.56.0 → 0.57.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/data/callbacks.rb +37 -0
- data/lib/avm/data/package.rb +15 -7
- data/lib/avm/data/unit.rb +2 -23
- data/lib/avm/entries/uri_builder.rb +3 -1
- data/lib/avm/instances/base/auto_values/data.rb +1 -1
- data/lib/avm/instances/data/files_unit.rb +55 -0
- data/lib/avm/{data/instance → instances/data}/package.rb +2 -2
- data/lib/avm/instances/data/unit.rb +14 -0
- data/lib/avm/instances/data.rb +11 -0
- data/lib/avm/version.rb +1 -1
- metadata +11 -10
- data/lib/avm/data/instance/files_unit.rb +0 -41
- data/lib/avm/data/instance/unit.rb +0 -17
- data/lib/avm/data/instance.rb +0 -11
    
        checksums.yaml
    CHANGED
    
    | @@ -1,7 +1,7 @@ | |
| 1 1 | 
             
            ---
         | 
| 2 2 | 
             
            SHA256:
         | 
| 3 | 
            -
              metadata.gz:  | 
| 4 | 
            -
              data.tar.gz:  | 
| 3 | 
            +
              metadata.gz: 563904ca1b51a6a150dea04c0b6ae22e465fdd51ab6528743e33d62a6565b92c
         | 
| 4 | 
            +
              data.tar.gz: 0b81dcf8b1b4f1442141d464ed4f4f94cbaa889f61cb386dada4cd31e81093c1
         | 
| 5 5 | 
             
            SHA512:
         | 
| 6 | 
            -
              metadata.gz:  | 
| 7 | 
            -
              data.tar.gz:  | 
| 6 | 
            +
              metadata.gz: a4cb6348291b7ae8c74957a6cfa9448a034077e6ea755ed49079e991be4abce66c33ad55983faa452ced6d28ce294e0f6d787caf2edc634f0d9edf6317e5c9c5
         | 
| 7 | 
            +
              data.tar.gz: 07525e34146d9e712aaa8157cbafb8e9c2fdd83aa2b381931399306aa0592d8d839c272b0851eb8fa0d5bc46538f350e2367da48d1821d00413873f2524772fb
         | 
| @@ -0,0 +1,37 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'active_support/callbacks'
         | 
| 4 | 
            +
            require 'eac_ruby_utils/core_ext'
         | 
| 5 | 
            +
             | 
| 6 | 
            +
            module Avm
         | 
| 7 | 
            +
              module Data
         | 
| 8 | 
            +
                module Callbacks
         | 
| 9 | 
            +
                  common_concern do
         | 
| 10 | 
            +
                    include ::ActiveSupport::Callbacks
         | 
| 11 | 
            +
             | 
| 12 | 
            +
                    %i[dump load].each do |action|
         | 
| 13 | 
            +
                      define_callbacks action
         | 
| 14 | 
            +
             | 
| 15 | 
            +
                      %i[before after].each do |callback|
         | 
| 16 | 
            +
                        method_name = "#{callback}_#{action}"
         | 
| 17 | 
            +
                        singleton_class.class_eval do
         | 
| 18 | 
            +
                          define_method method_name do |callback_method = nil, &block|
         | 
| 19 | 
            +
                            if callback_method
         | 
| 20 | 
            +
                              set_callback action, callback, callback_method
         | 
| 21 | 
            +
                            else
         | 
| 22 | 
            +
                              set_callback action, callback, &block
         | 
| 23 | 
            +
                            end
         | 
| 24 | 
            +
                            self
         | 
| 25 | 
            +
                          end
         | 
| 26 | 
            +
                        end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                        define_method method_name do |callback_method = nil, &block|
         | 
| 29 | 
            +
                          singleton_class.send(method_name, callback_method, &block)
         | 
| 30 | 
            +
                          self
         | 
| 31 | 
            +
                        end
         | 
| 32 | 
            +
                      end
         | 
| 33 | 
            +
                    end
         | 
| 34 | 
            +
                  end
         | 
| 35 | 
            +
                end
         | 
| 36 | 
            +
              end
         | 
| 37 | 
            +
            end
         | 
    
        data/lib/avm/data/package.rb
    CHANGED
    
    | @@ -1,15 +1,15 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            -
            require 'avm/data/ | 
| 4 | 
            -
            require ' | 
| 3 | 
            +
            require 'avm/data/callbacks'
         | 
| 4 | 
            +
            require 'eac_ruby_utils/core_ext'
         | 
| 5 5 |  | 
| 6 6 | 
             
            module Avm
         | 
| 7 7 | 
             
              module Data
         | 
| 8 8 | 
             
                class Package
         | 
| 9 | 
            -
                   | 
| 9 | 
            +
                  require_sub __FILE__
         | 
| 10 | 
            +
                  include ::Avm::Data::Callbacks
         | 
| 10 11 |  | 
| 11 12 | 
             
                  def initialize(options)
         | 
| 12 | 
            -
                    @units = {}
         | 
| 13 13 | 
             
                    options = options.to_options_consumer
         | 
| 14 14 | 
             
                    units = options.consume(:units)
         | 
| 15 15 | 
             
                    options.validate
         | 
| @@ -19,7 +19,7 @@ module Avm | |
| 19 19 | 
             
                  end
         | 
| 20 20 |  | 
| 21 21 | 
             
                  def add_unit(identifier, unit)
         | 
| 22 | 
            -
                     | 
| 22 | 
            +
                    units[identifier.to_sym] = unit
         | 
| 23 23 | 
             
                  end
         | 
| 24 24 |  | 
| 25 25 | 
             
                  def dump(data_path, options = {})
         | 
| @@ -31,11 +31,19 @@ module Avm | |
| 31 31 | 
             
                  end
         | 
| 32 32 |  | 
| 33 33 | 
             
                  def dump_units_to_directory(directory)
         | 
| 34 | 
            -
                     | 
| 34 | 
            +
                    run_callbacks :dump do
         | 
| 35 | 
            +
                      units.each { |identifier, unit| unit.dump_to_directory(directory, identifier) }
         | 
| 36 | 
            +
                    end
         | 
| 35 37 | 
             
                  end
         | 
| 36 38 |  | 
| 37 39 | 
             
                  def load_units_from_directory(directory)
         | 
| 38 | 
            -
                     | 
| 40 | 
            +
                    run_callbacks :load do
         | 
| 41 | 
            +
                      units.each { |identifier, unit| unit.load_from_directory(directory, identifier) }
         | 
| 42 | 
            +
                    end
         | 
| 43 | 
            +
                  end
         | 
| 44 | 
            +
             | 
| 45 | 
            +
                  def units
         | 
| 46 | 
            +
                    @units ||= {}
         | 
| 39 47 | 
             
                  end
         | 
| 40 48 | 
             
                end
         | 
| 41 49 | 
             
              end
         | 
    
        data/lib/avm/data/unit.rb
    CHANGED
    
    | @@ -1,14 +1,13 @@ | |
| 1 1 | 
             
            # frozen_string_literal: true
         | 
| 2 2 |  | 
| 3 | 
            +
            require 'avm/data/callbacks'
         | 
| 3 4 | 
             
            require 'eac_ruby_utils/core_ext'
         | 
| 4 | 
            -
            require 'active_support/callbacks'
         | 
| 5 5 |  | 
| 6 6 | 
             
            module Avm
         | 
| 7 7 | 
             
              module Data
         | 
| 8 8 | 
             
                class Unit
         | 
| 9 | 
            -
                  include :: | 
| 9 | 
            +
                  include ::Avm::Data::Callbacks
         | 
| 10 10 |  | 
| 11 | 
            -
                  define_callbacks :dump, :load
         | 
| 12 11 | 
             
                  enable_speaker
         | 
| 13 12 |  | 
| 14 13 | 
             
                  %w[dump load].each do |action|
         | 
| @@ -20,26 +19,6 @@ module Avm | |
| 20 19 | 
             
                        fail "\\"#{method_name}\\" is a abstract method. Override in #{singleton_class}."
         | 
| 21 20 | 
             
                      end
         | 
| 22 21 | 
             
                    CODE
         | 
| 23 | 
            -
             | 
| 24 | 
            -
                    # Callbacks
         | 
| 25 | 
            -
                    %w[before after].each do |callback|
         | 
| 26 | 
            -
                      method = "#{callback}_#{action}"
         | 
| 27 | 
            -
                      class_eval <<~CODE, __FILE__, __LINE__ + 1
         | 
| 28 | 
            -
                        def self.#{method}(callback_method = nil, &block)
         | 
| 29 | 
            -
                          if callback_method
         | 
| 30 | 
            -
                            set_callback :#{action}, :#{callback}, callback_method
         | 
| 31 | 
            -
                          else
         | 
| 32 | 
            -
                            set_callback :#{action}, :#{callback}, &block
         | 
| 33 | 
            -
                          end
         | 
| 34 | 
            -
                          self
         | 
| 35 | 
            -
                        end
         | 
| 36 | 
            -
             | 
| 37 | 
            -
                        def #{method}(callback_method = nil, &block)
         | 
| 38 | 
            -
                          singleton_class.#{method}(callback_method, &block)
         | 
| 39 | 
            -
                          self
         | 
| 40 | 
            -
                        end
         | 
| 41 | 
            -
                      CODE
         | 
| 42 | 
            -
                    end
         | 
| 43 22 | 
             
                  end
         | 
| 44 23 |  | 
| 45 24 | 
             
                  def extension
         | 
| @@ -0,0 +1,55 @@ | |
| 1 | 
            +
            # frozen_string_literal: true
         | 
| 2 | 
            +
             | 
| 3 | 
            +
            require 'avm/instances/data/unit'
         | 
| 4 | 
            +
             | 
| 5 | 
            +
            module Avm
         | 
| 6 | 
            +
              module Instances
         | 
| 7 | 
            +
                module Data
         | 
| 8 | 
            +
                  class FilesUnit < ::Avm::Instances::Data::Unit
         | 
| 9 | 
            +
                    EXTENSION = '.tar.gz'
         | 
| 10 | 
            +
             | 
| 11 | 
            +
                    enable_listable
         | 
| 12 | 
            +
                    lists.add_symbol :option, :sudo_user
         | 
| 13 | 
            +
             | 
| 14 | 
            +
                    common_constructor :instance, :fs_path_subpath, :options, default: [{}],
         | 
| 15 | 
            +
                                                                              super_args: -> { [instance] } do
         | 
| 16 | 
            +
                      self.fs_path_subpath = fs_path_subpath.to_pathname
         | 
| 17 | 
            +
                      self.options = self.class.lists.option.hash_keys_validate!(options)
         | 
| 18 | 
            +
                    end
         | 
| 19 | 
            +
             | 
| 20 | 
            +
                    before_load :clear_files
         | 
| 21 | 
            +
             | 
| 22 | 
            +
                    # @return [Pathname]
         | 
| 23 | 
            +
                    def files_path
         | 
| 24 | 
            +
                      fs_path_subpath
         | 
| 25 | 
            +
                        .expand_path(instance.read_entry(::Avm::Instances::EntryKeys::INSTALL_PATH))
         | 
| 26 | 
            +
                    end
         | 
| 27 | 
            +
             | 
| 28 | 
            +
                    def dump_command
         | 
| 29 | 
            +
                      instance_command('tar', '-czf', '-', '-C', files_path, '.')
         | 
| 30 | 
            +
                    end
         | 
| 31 | 
            +
             | 
| 32 | 
            +
                    def load_command
         | 
| 33 | 
            +
                      instance_command('tar', '-xzf', '-', '-C', files_path)
         | 
| 34 | 
            +
                    end
         | 
| 35 | 
            +
             | 
| 36 | 
            +
                    def clear_files
         | 
| 37 | 
            +
                      infom "Removing all files under #{files_path}..."
         | 
| 38 | 
            +
                      instance_command('mkdir', '-p', files_path).execute!
         | 
| 39 | 
            +
                      instance_command('find', files_path, '-mindepth', 1, '-delete').execute!
         | 
| 40 | 
            +
                    end
         | 
| 41 | 
            +
             | 
| 42 | 
            +
                    # @return [EacRubyUtils::Envs::Command]
         | 
| 43 | 
            +
                    def instance_command(*args)
         | 
| 44 | 
            +
                      args = ['sudo', '-Hu', sudo_user] + args if sudo_user.present?
         | 
| 45 | 
            +
                      instance.host_env.command(*args)
         | 
| 46 | 
            +
                    end
         | 
| 47 | 
            +
             | 
| 48 | 
            +
                    # @return [String, nil]
         | 
| 49 | 
            +
                    def sudo_user
         | 
| 50 | 
            +
                      options[OPTION_SUDO_USER]
         | 
| 51 | 
            +
                    end
         | 
| 52 | 
            +
                  end
         | 
| 53 | 
            +
                end
         | 
| 54 | 
            +
              end
         | 
| 55 | 
            +
            end
         | 
    
        data/lib/avm/version.rb
    CHANGED
    
    
    
        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. | 
| 4 | 
            +
              version: 0.57.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: 2022-11- | 
| 11 | 
            +
            date: 2022-11-16 00:00:00.000000000 Z
         | 
| 12 12 | 
             
            dependencies:
         | 
| 13 13 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 14 14 | 
             
              name: aranha-parsers
         | 
| @@ -36,14 +36,14 @@ dependencies: | |
| 36 36 | 
             
                requirements:
         | 
| 37 37 | 
             
                - - "~>"
         | 
| 38 38 | 
             
                  - !ruby/object:Gem::Version
         | 
| 39 | 
            -
                    version: '0. | 
| 39 | 
            +
                    version: '0.30'
         | 
| 40 40 | 
             
              type: :runtime
         | 
| 41 41 | 
             
              prerelease: false
         | 
| 42 42 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 43 43 | 
             
                requirements:
         | 
| 44 44 | 
             
                - - "~>"
         | 
| 45 45 | 
             
                  - !ruby/object:Gem::Version
         | 
| 46 | 
            -
                    version: '0. | 
| 46 | 
            +
                    version: '0.30'
         | 
| 47 47 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 48 48 | 
             
              name: eac_config
         | 
| 49 49 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -92,14 +92,14 @@ dependencies: | |
| 92 92 | 
             
                requirements:
         | 
| 93 93 | 
             
                - - "~>"
         | 
| 94 94 | 
             
                  - !ruby/object:Gem::Version
         | 
| 95 | 
            -
                    version: '0. | 
| 95 | 
            +
                    version: '0.14'
         | 
| 96 96 | 
             
              type: :runtime
         | 
| 97 97 | 
             
              prerelease: false
         | 
| 98 98 | 
             
              version_requirements: !ruby/object:Gem::Requirement
         | 
| 99 99 | 
             
                requirements:
         | 
| 100 100 | 
             
                - - "~>"
         | 
| 101 101 | 
             
                  - !ruby/object:Gem::Version
         | 
| 102 | 
            -
                    version: '0. | 
| 102 | 
            +
                    version: '0.14'
         | 
| 103 103 | 
             
            - !ruby/object:Gem::Dependency
         | 
| 104 104 | 
             
              name: eac_ruby_utils
         | 
| 105 105 | 
             
              requirement: !ruby/object:Gem::Requirement
         | 
| @@ -263,10 +263,7 @@ files: | |
| 263 263 | 
             
            - lib/avm/applications/base.rb
         | 
| 264 264 | 
             
            - lib/avm/applications/base/publishing.rb
         | 
| 265 265 | 
             
            - lib/avm/applications/base/stereotype.rb
         | 
| 266 | 
            -
            - lib/avm/data/ | 
| 267 | 
            -
            - lib/avm/data/instance/files_unit.rb
         | 
| 268 | 
            -
            - lib/avm/data/instance/package.rb
         | 
| 269 | 
            -
            - lib/avm/data/instance/unit.rb
         | 
| 266 | 
            +
            - lib/avm/data/callbacks.rb
         | 
| 270 267 | 
             
            - lib/avm/data/package.rb
         | 
| 271 268 | 
             
            - lib/avm/data/package/dump.rb
         | 
| 272 269 | 
             
            - lib/avm/data/package/load.rb
         | 
| @@ -316,6 +313,10 @@ files: | |
| 316 313 | 
             
            - lib/avm/instances/base/entry_keys.rb
         | 
| 317 314 | 
             
            - lib/avm/instances/base/install.rb
         | 
| 318 315 | 
             
            - lib/avm/instances/base/web.rb
         | 
| 316 | 
            +
            - lib/avm/instances/data.rb
         | 
| 317 | 
            +
            - lib/avm/instances/data/files_unit.rb
         | 
| 318 | 
            +
            - lib/avm/instances/data/package.rb
         | 
| 319 | 
            +
            - lib/avm/instances/data/unit.rb
         | 
| 319 320 | 
             
            - lib/avm/instances/docker_image.rb
         | 
| 320 321 | 
             
            - lib/avm/instances/entry_keys.rb
         | 
| 321 322 | 
             
            - lib/avm/instances/ids.rb
         | 
| @@ -1,41 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'avm/data/instance/unit'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module Avm
         | 
| 6 | 
            -
              module Data
         | 
| 7 | 
            -
                module Instance
         | 
| 8 | 
            -
                  class FilesUnit < ::Avm::Data::Instance::Unit
         | 
| 9 | 
            -
                    EXTENSION = '.tar.gz'
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                    attr_reader :fs_path_subpath
         | 
| 12 | 
            -
             | 
| 13 | 
            -
                    def initialize(instance, fs_path_subpath)
         | 
| 14 | 
            -
                      super(instance)
         | 
| 15 | 
            -
                      @fs_path_subpath = fs_path_subpath
         | 
| 16 | 
            -
                    end
         | 
| 17 | 
            -
             | 
| 18 | 
            -
                    before_load :clear_files
         | 
| 19 | 
            -
             | 
| 20 | 
            -
                    def files_path
         | 
| 21 | 
            -
                      ::File.join(instance.read_entry(::Avm::Instances::EntryKeys::INSTALL_PATH),
         | 
| 22 | 
            -
                                  fs_path_subpath)
         | 
| 23 | 
            -
                    end
         | 
| 24 | 
            -
             | 
| 25 | 
            -
                    def dump_command
         | 
| 26 | 
            -
                      instance.host_env.command('tar', '-czf', '-', '-C', files_path, '.')
         | 
| 27 | 
            -
                    end
         | 
| 28 | 
            -
             | 
| 29 | 
            -
                    def load_command
         | 
| 30 | 
            -
                      instance.host_env.command('tar', '-xzf', '-', '-C', files_path)
         | 
| 31 | 
            -
                    end
         | 
| 32 | 
            -
             | 
| 33 | 
            -
                    def clear_files
         | 
| 34 | 
            -
                      infom "Removing all files under #{files_path}..."
         | 
| 35 | 
            -
                      instance.host_env.command('mkdir', '-p', files_path).execute!
         | 
| 36 | 
            -
                      instance.host_env.command('find', files_path, '-mindepth', 1, '-delete').execute!
         | 
| 37 | 
            -
                    end
         | 
| 38 | 
            -
                  end
         | 
| 39 | 
            -
                end
         | 
| 40 | 
            -
              end
         | 
| 41 | 
            -
            end
         | 
| @@ -1,17 +0,0 @@ | |
| 1 | 
            -
            # frozen_string_literal: true
         | 
| 2 | 
            -
             | 
| 3 | 
            -
            require 'avm/data/unit'
         | 
| 4 | 
            -
             | 
| 5 | 
            -
            module Avm
         | 
| 6 | 
            -
              module Data
         | 
| 7 | 
            -
                module Instance
         | 
| 8 | 
            -
                  class Unit < ::Avm::Data::Unit
         | 
| 9 | 
            -
                    attr_reader :instance
         | 
| 10 | 
            -
             | 
| 11 | 
            -
                    def initialize(instance)
         | 
| 12 | 
            -
                      @instance = instance
         | 
| 13 | 
            -
                    end
         | 
| 14 | 
            -
                  end
         | 
| 15 | 
            -
                end
         | 
| 16 | 
            -
              end
         | 
| 17 | 
            -
            end
         |