avm 0.59.0 → 0.61.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/file_formats/base.rb +7 -0
- data/lib/avm/file_formats/search_formatter.rb +2 -12
- data/lib/avm/registry/file_formats.rb +4 -0
- data/lib/avm/rspec/setup.rb +2 -2
- data/lib/avm/rspec/shared_examples/avm_file_format_file_resource_name.rb +15 -0
- data/lib/avm/scms/auto_commit/file_resource_name.rb +9 -1
- data/lib/avm/scms/base/commits.rb +7 -0
- data/lib/avm/scms/commit_info.rb +13 -0
- data/lib/avm/scms/null/commit.rb +15 -0
- data/lib/avm/scms/null.rb +7 -0
- data/lib/avm/sources/base/configuration.rb +12 -6
- data/lib/avm/sources/base/locale.rb +7 -0
- data/lib/avm/sources/base/organizational.rb +32 -0
- data/lib/avm/sources/base/update.rb +43 -0
- data/lib/avm/sources/base/update_sub.rb +57 -0
- data/lib/avm/sources/base/version_bump.rb +29 -0
- data/lib/avm/sources/base.rb +1 -1
- data/lib/avm/version.rb +1 -1
- metadata +8 -3
- data/lib/avm/scms/auto_commit/file_resource_name/ruby.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fbd9a676670802e3c3904a555bc7255ab8637a1b474131e6f39190192d47d64d
|
4
|
+
data.tar.gz: 8f743999b2b25fe740cd813356e9104d9b29dcf03968c7a300afb31385babe83
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1a96c7da39855abf2991b203b697ff69e61d4bdb4b322bebccf06066df2e59ab843d3bc5ecefc2e3a3011d7c514ec1854635d98e8d116089a55075bd7d07e166
|
7
|
+
data.tar.gz: a066bec86aed66c6f2d8bd6f849534551c684340bc61fa67da7a94dd4fdcffc4ffc43b33cb237f184f20a418232587f762bea578f743095fd2eeb2155527c83e
|
@@ -8,6 +8,7 @@ module Avm
|
|
8
8
|
module FileFormats
|
9
9
|
class Base
|
10
10
|
enable_abstract_methods
|
11
|
+
compare_by :class
|
11
12
|
|
12
13
|
def apply(files)
|
13
14
|
old_content = Hash[files.map { |f| [f, File.read(f)] }]
|
@@ -15,6 +16,12 @@ module Avm
|
|
15
16
|
files.map { |f| build_file_result(f, old_content[f]) }
|
16
17
|
end
|
17
18
|
|
19
|
+
# @param path [Pathname]
|
20
|
+
# @return [Avm::FileFormats::FileWith]
|
21
|
+
def file_resource_name(path)
|
22
|
+
path.to_pathname.to_path
|
23
|
+
end
|
24
|
+
|
18
25
|
def name
|
19
26
|
self.class.name.demodulize
|
20
27
|
end
|
@@ -50,19 +50,9 @@ module Avm
|
|
50
50
|
@result = []
|
51
51
|
end
|
52
52
|
|
53
|
+
# @return [Avm::FileFormats::Base, nil]
|
53
54
|
def find_format(file)
|
54
|
-
|
55
|
-
return c if c.match?(file)
|
56
|
-
end
|
57
|
-
nil
|
58
|
-
end
|
59
|
-
|
60
|
-
def formats_uncached
|
61
|
-
formats_from_registry
|
62
|
-
end
|
63
|
-
|
64
|
-
def formats_from_registry
|
65
|
-
::Avm::Registry.file_formats.available.reverse.map(&:new)
|
55
|
+
::Avm::Registry.file_formats.detect_optional(file)
|
66
56
|
end
|
67
57
|
|
68
58
|
def search_files
|
@@ -5,6 +5,10 @@ require 'avm/registry/from_gems'
|
|
5
5
|
module Avm
|
6
6
|
module Registry
|
7
7
|
class FileFormats < ::Avm::Registry::FromGems
|
8
|
+
# @return [Avm::FileFormats::Base]
|
9
|
+
def class_detect(klass, detect_args)
|
10
|
+
klass.new if klass.new.match?(detect_args.first)
|
11
|
+
end
|
8
12
|
end
|
9
13
|
end
|
10
14
|
end
|
data/lib/avm/rspec/setup.rb
CHANGED
@@ -7,8 +7,8 @@ module Avm
|
|
7
7
|
module Rspec
|
8
8
|
module Setup
|
9
9
|
require_sub __FILE__
|
10
|
-
EXAMPLES = %w[avm_file_formats_with_fixtures
|
11
|
-
in_avm_registry not_in_avm_registry].freeze
|
10
|
+
EXAMPLES = %w[avm_file_formats_with_fixtures avm_file_format_file_resource_name
|
11
|
+
avm_source_generated entries_values in_avm_registry not_in_avm_registry].freeze
|
12
12
|
|
13
13
|
def self.extended(obj)
|
14
14
|
obj.setup_examples
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
::RSpec.shared_examples 'avm_file_format_file_resource_name' do |input_expected|
|
6
|
+
describe '#file_resource_name' do
|
7
|
+
input_expected.each do |path, expected_resource_name|
|
8
|
+
context "when path is \"#{path}\"" do
|
9
|
+
let(:instance) { described_class.new }
|
10
|
+
|
11
|
+
it { expect(instance.file_resource_name(path)).to eq(expected_resource_name) }
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
@@ -7,13 +7,14 @@ module Avm
|
|
7
7
|
module AutoCommit
|
8
8
|
class FileResourceName
|
9
9
|
require_sub __FILE__, include_modules: true
|
10
|
+
enable_simple_cache
|
10
11
|
common_constructor :source_root, :path do
|
11
12
|
self.source_root = source_root.to_pathname
|
12
13
|
self.path = path.to_pathname
|
13
14
|
end
|
14
15
|
|
15
16
|
def class_name
|
16
|
-
|
17
|
+
file_format.file_resource_name(path)
|
17
18
|
end
|
18
19
|
|
19
20
|
def commit_message
|
@@ -25,6 +26,13 @@ module Avm
|
|
25
26
|
def relative_path
|
26
27
|
path.expand_path.relative_path_from(source_root.expand_path)
|
27
28
|
end
|
29
|
+
|
30
|
+
private
|
31
|
+
|
32
|
+
# @return [Avm::FileFormats::Base]
|
33
|
+
def file_format_uncached
|
34
|
+
::Avm::Registry.file_formats.detect(path)
|
35
|
+
end
|
28
36
|
end
|
29
37
|
end
|
30
38
|
end
|
@@ -16,6 +16,13 @@ module Avm
|
|
16
16
|
raise_abstract_method __method__
|
17
17
|
end
|
18
18
|
|
19
|
+
# @param commit_to_reset [Avm::Scms::Commit]
|
20
|
+
# @param commit_info [Avm::Scms::CommitInfo]
|
21
|
+
# @return [Avm::Scms::Commit]
|
22
|
+
def reset_and_commit(_commit_to_reset, _commit_info)
|
23
|
+
raise_abstract_method __method__
|
24
|
+
end
|
25
|
+
|
19
26
|
# @param commit_info [Avm::Scms::CommitInfo]
|
20
27
|
# @return [Avm::Scms::Commit]
|
21
28
|
def run_commit(_commit_info)
|
data/lib/avm/scms/commit_info.rb
CHANGED
@@ -5,6 +5,19 @@ require 'eac_ruby_utils/core_ext'
|
|
5
5
|
module Avm
|
6
6
|
module Scms
|
7
7
|
class CommitInfo
|
8
|
+
class << self
|
9
|
+
# @param source [Avm::Scms::CommitInfo, String]
|
10
|
+
# @return [Avm::Scms::CommitInfo]
|
11
|
+
def assert(source)
|
12
|
+
return source if source.is_a?(self)
|
13
|
+
return new if source.nil?
|
14
|
+
return new.message(source) if source.is_a?(::String)
|
15
|
+
return assert(source.call) if source.is_a?(::Proc)
|
16
|
+
|
17
|
+
raise "Unmapped assertion for #{source.to_debug}"
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
8
21
|
enable_immutable
|
9
22
|
|
10
23
|
immutable_accessor :fixup, :message
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/scms/base'
|
4
|
+
require 'avm/scms/commit'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
|
7
|
+
module Avm
|
8
|
+
module Scms
|
9
|
+
class Null < ::Avm::Scms::Base
|
10
|
+
class Commit < ::Avm::Scms::Commit
|
11
|
+
common_constructor :scm
|
12
|
+
end
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
data/lib/avm/scms/null.rb
CHANGED
@@ -6,6 +6,13 @@ require 'eac_ruby_utils/core_ext'
|
|
6
6
|
module Avm
|
7
7
|
module Scms
|
8
8
|
class Null < ::Avm::Scms::Base
|
9
|
+
require_sub __FILE__
|
10
|
+
|
11
|
+
# @return [Avm::Scms::Null::Commit]
|
12
|
+
def head_commit
|
13
|
+
@head_commit ||= Avm::Scms::Null::Commit.new(self)
|
14
|
+
end
|
15
|
+
|
9
16
|
def update
|
10
17
|
# Do nothing
|
11
18
|
end
|
@@ -22,6 +22,13 @@ module Avm
|
|
22
22
|
configuration.entry(*entry_args)
|
23
23
|
end
|
24
24
|
|
25
|
+
# The possible absolute paths for configuration files.
|
26
|
+
#
|
27
|
+
# @return [Array<Pathname>]
|
28
|
+
def configuration_paths
|
29
|
+
CONFIGURATION_FILENAMES.map { |filename| path.join(filename) }
|
30
|
+
end
|
31
|
+
|
25
32
|
# @return [EacRubyUtils::Envs::Command, nil]
|
26
33
|
def configuration_value_to_env_command(value)
|
27
34
|
return value if value.is_a?(::EacRubyUtils::Envs::Command)
|
@@ -51,10 +58,10 @@ module Avm
|
|
51
58
|
|
52
59
|
# @return [EacConfig::YamlFileNode]
|
53
60
|
def configuration_uncached
|
54
|
-
|
55
|
-
configuration_with_filename(
|
61
|
+
configuration_paths.each do |config_path|
|
62
|
+
configuration_with_filename(config_path, true)
|
56
63
|
end
|
57
|
-
configuration_with_filename(
|
64
|
+
configuration_with_filename(configuration_paths.first, false)
|
58
65
|
end
|
59
66
|
|
60
67
|
# @return [String]
|
@@ -68,9 +75,8 @@ module Avm
|
|
68
75
|
end
|
69
76
|
|
70
77
|
# @return [EacConfig::YamlFileNode, nil]
|
71
|
-
def configuration_with_filename(
|
72
|
-
|
73
|
-
return ::EacConfig::YamlFileNode.new(file_path) if !needs_exist || file_path.exist?
|
78
|
+
def configuration_with_filename(config_path, needs_exist)
|
79
|
+
return ::EacConfig::YamlFileNode.new(config_path) if !needs_exist || config_path.exist?
|
74
80
|
|
75
81
|
nil
|
76
82
|
end
|
@@ -20,6 +20,13 @@ module Avm
|
|
20
20
|
def default_locale
|
21
21
|
::I18n.default_locale
|
22
22
|
end
|
23
|
+
|
24
|
+
# @param entry_suffix [String]
|
25
|
+
# @param values [Hash]
|
26
|
+
# @return [String]
|
27
|
+
def i18n_translate(entry_suffix, values = {})
|
28
|
+
self.class.i18n_translate(entry_suffix, values.merge(__locale: locale))
|
29
|
+
end
|
23
30
|
end
|
24
31
|
end
|
25
32
|
end
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module Sources
|
7
|
+
class Base
|
8
|
+
module Organizational
|
9
|
+
DEFAULT_ORGANIZATIONAL = false
|
10
|
+
ORGANIZATIONAL_KEY = 'organizational'
|
11
|
+
|
12
|
+
# @return [Boolean]
|
13
|
+
def organizational?
|
14
|
+
if organizational_entry.found?
|
15
|
+
organizational_entry.value.to_bool
|
16
|
+
else
|
17
|
+
default_organizational
|
18
|
+
end
|
19
|
+
end
|
20
|
+
|
21
|
+
def organizational_entry
|
22
|
+
configuration.entry(ORGANIZATIONAL_KEY)
|
23
|
+
end
|
24
|
+
|
25
|
+
# @return [Boolean]
|
26
|
+
def default_organizational
|
27
|
+
DEFAULT_ORGANIZATIONAL
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,43 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module Sources
|
7
|
+
class Base
|
8
|
+
module Update
|
9
|
+
# To override in subclasses.
|
10
|
+
def on_sub_updated
|
11
|
+
# Do nothing
|
12
|
+
end
|
13
|
+
|
14
|
+
def update
|
15
|
+
update_self
|
16
|
+
update_subs
|
17
|
+
end
|
18
|
+
|
19
|
+
def update_self
|
20
|
+
scm.commit_if_change(-> { update_self_commit_message }) do
|
21
|
+
update_self_content
|
22
|
+
parent.if_present(&:on_sub_updated)
|
23
|
+
end
|
24
|
+
end
|
25
|
+
|
26
|
+
# Update source self content.
|
27
|
+
#
|
28
|
+
# To override in subclasses.
|
29
|
+
def update_self_content
|
30
|
+
# Do nothing
|
31
|
+
end
|
32
|
+
|
33
|
+
def update_self_commit_message
|
34
|
+
i18n_translate(__method__)
|
35
|
+
end
|
36
|
+
|
37
|
+
def update_subs
|
38
|
+
subs.each { |sub| update_sub(sub) }
|
39
|
+
end
|
40
|
+
end
|
41
|
+
end
|
42
|
+
end
|
43
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module Sources
|
7
|
+
class Base
|
8
|
+
class UpdateSub
|
9
|
+
enable_method_class
|
10
|
+
|
11
|
+
common_constructor :source, :sub
|
12
|
+
|
13
|
+
def result
|
14
|
+
update_version
|
15
|
+
return unless sub.organizational?
|
16
|
+
|
17
|
+
sub.update
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def update_version
|
23
|
+
base_commit = source.scm.head_commit
|
24
|
+
sub.scm.update
|
25
|
+
on_update_version_commit_change(base_commit) unless base_commit == source.scm.head_commit
|
26
|
+
end
|
27
|
+
|
28
|
+
def on_update_version_commit_change(base_commit)
|
29
|
+
source.on_sub_updated if no_scm_updated?
|
30
|
+
source.scm.reset_and_commit(base_commit, update_version_commit_info)
|
31
|
+
end
|
32
|
+
|
33
|
+
def no_scm_updated?
|
34
|
+
source.scm.head_commit.no_scm_changed_files.any?
|
35
|
+
end
|
36
|
+
|
37
|
+
# @param commit_info [Avm::Scms::CommitInfo]
|
38
|
+
def update_version_commit_info
|
39
|
+
Avm::Scms::CommitInfo.new.message(
|
40
|
+
no_scm_updated? ? update_version_no_scm_message : update_version_scm_message
|
41
|
+
)
|
42
|
+
end
|
43
|
+
|
44
|
+
# @return [String]
|
45
|
+
def update_version_no_scm_message
|
46
|
+
source.i18n_translate(__method__, application_id: sub.application_id,
|
47
|
+
path: sub.relative_path, version: sub.version)
|
48
|
+
end
|
49
|
+
|
50
|
+
# @return [String]
|
51
|
+
def update_version_scm_message
|
52
|
+
sub.scm.i18n_translate(__method__)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
end
|
57
|
+
end
|
@@ -0,0 +1,29 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/sources/base'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module Sources
|
8
|
+
class Base
|
9
|
+
module VersionBump
|
10
|
+
# @return [Avm::Scms::Commit, nil]
|
11
|
+
def version_bump(target_version)
|
12
|
+
scm.commit_if_change(version_bump_commit_message(target_version)) do
|
13
|
+
version_bump_do_changes(target_version)
|
14
|
+
parent.if_present(&:on_sub_updated)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [String]
|
19
|
+
def version_bump_commit_message(target_version)
|
20
|
+
i18n_translate(__method__, version: target_version, __locale: locale)
|
21
|
+
end
|
22
|
+
|
23
|
+
def version_bump_do_changes(_target_version)
|
24
|
+
raise_abstract_method(__METHOD__)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
data/lib/avm/sources/base.rb
CHANGED
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.61.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: 2023-01-
|
11
|
+
date: 2023-01-19 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha-parsers
|
@@ -369,6 +369,7 @@ files:
|
|
369
369
|
- lib/avm/rspec/setup.rb
|
370
370
|
- lib/avm/rspec/setup/launcher.rb
|
371
371
|
- lib/avm/rspec/setup/source_generator.rb
|
372
|
+
- lib/avm/rspec/shared_examples/avm_file_format_file_resource_name.rb
|
372
373
|
- lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb
|
373
374
|
- lib/avm/rspec/shared_examples/avm_source_generated.rb
|
374
375
|
- lib/avm/rspec/shared_examples/entries_values.rb
|
@@ -378,7 +379,6 @@ files:
|
|
378
379
|
- lib/avm/scms.rb
|
379
380
|
- lib/avm/scms/auto_commit.rb
|
380
381
|
- lib/avm/scms/auto_commit/file_resource_name.rb
|
381
|
-
- lib/avm/scms/auto_commit/file_resource_name/ruby.rb
|
382
382
|
- lib/avm/scms/auto_commit/for_file.rb
|
383
383
|
- lib/avm/scms/auto_commit/rules.rb
|
384
384
|
- lib/avm/scms/auto_commit/rules/base.rb
|
@@ -396,6 +396,7 @@ files:
|
|
396
396
|
- lib/avm/scms/inflector.rb
|
397
397
|
- lib/avm/scms/interval.rb
|
398
398
|
- lib/avm/scms/null.rb
|
399
|
+
- lib/avm/scms/null/commit.rb
|
399
400
|
- lib/avm/self/docker_image.rb
|
400
401
|
- lib/avm/self/instance.rb
|
401
402
|
- lib/avm/self/instance/entry_keys.rb
|
@@ -410,11 +411,15 @@ files:
|
|
410
411
|
- lib/avm/sources/base/configuration.rb
|
411
412
|
- lib/avm/sources/base/instance.rb
|
412
413
|
- lib/avm/sources/base/locale.rb
|
414
|
+
- lib/avm/sources/base/organizational.rb
|
413
415
|
- lib/avm/sources/base/parent.rb
|
414
416
|
- lib/avm/sources/base/stereotype.rb
|
415
417
|
- lib/avm/sources/base/subs.rb
|
416
418
|
- lib/avm/sources/base/subs_paths.rb
|
417
419
|
- lib/avm/sources/base/testing.rb
|
420
|
+
- lib/avm/sources/base/update.rb
|
421
|
+
- lib/avm/sources/base/update_sub.rb
|
422
|
+
- lib/avm/sources/base/version_bump.rb
|
418
423
|
- lib/avm/sources/configuration.rb
|
419
424
|
- lib/avm/sources/configuration/rubocop.rb
|
420
425
|
- lib/avm/sources/runner.rb
|
@@ -1,23 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
4
|
-
|
5
|
-
module Avm
|
6
|
-
module Scms
|
7
|
-
module AutoCommit
|
8
|
-
class FileResourceName
|
9
|
-
module Ruby
|
10
|
-
RUBY_CLASS_NAME_PATTERNS = [%r{lib/((?!.*/lib/).+)\.rb\z},
|
11
|
-
%r{app/[^/]+/(.+)\.rb\z}].freeze
|
12
|
-
|
13
|
-
def ruby_class_name
|
14
|
-
RUBY_CLASS_NAME_PATTERNS.each do |pattern|
|
15
|
-
pattern.if_match(relative_path.to_path, false) { |m| return m[1].camelize }
|
16
|
-
end
|
17
|
-
nil
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
end
|
22
|
-
end
|
23
|
-
end
|