avm 0.33.0 → 0.34.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/registry/source_generators.rb +3 -2
- data/lib/avm/source_generators/base.rb +16 -1
- data/lib/avm/source_generators/option.rb +11 -0
- data/lib/avm/source_generators/option_list.rb +32 -0
- data/lib/avm/source_generators/runner.rb +52 -0
- data/lib/avm/sources/runner.rb +38 -0
- data/lib/avm/version.rb +1 -1
- metadata +6 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7f010253f1247e81a5935385a2c1070e5d4217948b31258c5e4286d3b1453fee
|
4
|
+
data.tar.gz: 000a1a2a76b966b3f353c251cbb8ded41cf9719cf9b13f056f768d6a16d6c377
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: a9f61d3c21cef4aaed1a8c5c4eecbcc20aab3247c8a28098f0aefff9818a578bb3e8450aff34b9b1bcced1ecbbb58ce3f011ee426d470e51cb840396fd98a8d8
|
7
|
+
data.tar.gz: c6019a2b01b64630a9c61d870e48d35a3e4ded56c6e67e1be74fdfa524d7700c72b55cae69a188ac1f3df318c8a0d7aca87c1eac7eda5f0f4b2be807c6da8069
|
@@ -8,8 +8,9 @@ module Avm
|
|
8
8
|
class SourceGenerators < ::Avm::Registry::FromGems
|
9
9
|
# @return [Avm::Instances::Base, nil]
|
10
10
|
def class_detect(klass, detect_args)
|
11
|
-
|
12
|
-
|
11
|
+
detect_args = detect_args.dup
|
12
|
+
stereotype_name = detect_args.shift
|
13
|
+
klass.application_stereotype.name == stereotype_name ? klass.new(*detect_args) : nil
|
13
14
|
end
|
14
15
|
end
|
15
16
|
end
|
@@ -1,5 +1,6 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'avm/source_generators/option_list'
|
3
4
|
require 'avm/with/application_stereotype'
|
4
5
|
require 'eac_ruby_utils/core_ext'
|
5
6
|
|
@@ -7,8 +8,22 @@ module Avm
|
|
7
8
|
module SourceGenerators
|
8
9
|
class Base
|
9
10
|
include ::Avm::With::ApplicationStereotype
|
10
|
-
|
11
|
+
|
12
|
+
class << self
|
13
|
+
# @return [Avm::SourceGenerators::OptionList]
|
14
|
+
def option_list
|
15
|
+
Avm::SourceGenerators::OptionList.new
|
16
|
+
end
|
17
|
+
end
|
18
|
+
|
19
|
+
common_constructor :target_path, :options, default: [{}] do
|
11
20
|
self.target_path = target_path.to_pathname
|
21
|
+
self.options = option_list.validate(options)
|
22
|
+
end
|
23
|
+
|
24
|
+
# @return [Avm::SourceGenerators::OptionList]
|
25
|
+
def option_list
|
26
|
+
self.class.option_list
|
12
27
|
end
|
13
28
|
|
14
29
|
def perform
|
@@ -0,0 +1,32 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/source_generators/option'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module SourceGenerators
|
8
|
+
class OptionList
|
9
|
+
enable_immutable
|
10
|
+
immutable_accessor :option, type: :array
|
11
|
+
|
12
|
+
alias immutable_option option
|
13
|
+
|
14
|
+
def option(*args)
|
15
|
+
immutable_option(::Avm::SourceGenerators::Option.new(*args))
|
16
|
+
end
|
17
|
+
|
18
|
+
# @return [Hash<Symbol, String>]
|
19
|
+
def validate(options_hash)
|
20
|
+
options_hash.transform_keys { |k| validate_option(k) }
|
21
|
+
end
|
22
|
+
|
23
|
+
def validate_option(option_name)
|
24
|
+
option_name = option_name.to_sym
|
25
|
+
|
26
|
+
return option_name if options.any? { |option| option.name == option_name }
|
27
|
+
|
28
|
+
raise "No option found with name \"#{option_name}\""
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
@@ -0,0 +1,52 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'avm/registry'
|
4
|
+
require 'eac_cli/core_ext'
|
5
|
+
|
6
|
+
module Avm
|
7
|
+
module SourceGenerators
|
8
|
+
class Runner
|
9
|
+
OPTION_NAME_VALUE_SEPARATOR = ':'
|
10
|
+
|
11
|
+
runner_with :help do
|
12
|
+
arg_opt '-o', '--option', 'Option for generator.', repeat: true, optional: true
|
13
|
+
pos_arg :stereotype_name
|
14
|
+
pos_arg :target_path
|
15
|
+
end
|
16
|
+
|
17
|
+
def run
|
18
|
+
start_banner
|
19
|
+
generate
|
20
|
+
end
|
21
|
+
|
22
|
+
def generate
|
23
|
+
infom 'Generating...'
|
24
|
+
generator.perform
|
25
|
+
success "Source generated in \"#{generator.target_path}\""
|
26
|
+
end
|
27
|
+
|
28
|
+
def start_banner
|
29
|
+
infov 'Stereotype', stereotype_name
|
30
|
+
infov 'Target path', target_path
|
31
|
+
infov 'Generator', generator.class
|
32
|
+
end
|
33
|
+
|
34
|
+
def generator_uncached
|
35
|
+
::Avm::Registry.source_generators
|
36
|
+
.detect_optional(stereotype_name, target_path, options) ||
|
37
|
+
fatal_error("No generator found for stereotype \"#{stereotype_name}\"")
|
38
|
+
end
|
39
|
+
|
40
|
+
delegate :stereotype_name, to: :parsed
|
41
|
+
|
42
|
+
# @return [Hash<String, String>]
|
43
|
+
def options
|
44
|
+
parsed.option.map { |v| v.split(OPTION_NAME_VALUE_SEPARATOR) }.to_h
|
45
|
+
end
|
46
|
+
|
47
|
+
def target_path
|
48
|
+
parsed.target_path.to_pathname
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -0,0 +1,38 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_cli/core_ext'
|
4
|
+
|
5
|
+
module Avm
|
6
|
+
module Sources
|
7
|
+
class Runner
|
8
|
+
runner_with :help, :subcommands do
|
9
|
+
desc 'Root command for sources.'
|
10
|
+
arg_opt '-C', '--path', 'Path to the source.', default: '.'
|
11
|
+
subcommands
|
12
|
+
end
|
13
|
+
|
14
|
+
def extra_available_subcommands
|
15
|
+
optional_source.if_present({}, &:extra_available_subcommands)
|
16
|
+
end
|
17
|
+
|
18
|
+
def source_banner
|
19
|
+
infov 'Source', source
|
20
|
+
end
|
21
|
+
|
22
|
+
# @return [Pathname]
|
23
|
+
def source_path
|
24
|
+
parsed.path.to_pathname
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def source_uncached
|
30
|
+
::Avm::Registry.sources.detect(source_path)
|
31
|
+
end
|
32
|
+
|
33
|
+
def optional_source_uncached
|
34
|
+
::Avm::Registry.sources.detect_optional(source_path)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
end
|
38
|
+
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.34.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-08-
|
11
|
+
date: 2022-08-05 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: eac_cli
|
@@ -272,6 +272,9 @@ files:
|
|
272
272
|
- lib/avm/self/instance/entry_keys.rb
|
273
273
|
- lib/avm/source_generators.rb
|
274
274
|
- lib/avm/source_generators/base.rb
|
275
|
+
- lib/avm/source_generators/option.rb
|
276
|
+
- lib/avm/source_generators/option_list.rb
|
277
|
+
- lib/avm/source_generators/runner.rb
|
275
278
|
- lib/avm/sources.rb
|
276
279
|
- lib/avm/sources/base.rb
|
277
280
|
- lib/avm/sources/base/configuration.rb
|
@@ -283,6 +286,7 @@ files:
|
|
283
286
|
- lib/avm/sources/base/testing.rb
|
284
287
|
- lib/avm/sources/configuration.rb
|
285
288
|
- lib/avm/sources/configuration/rubocop.rb
|
289
|
+
- lib/avm/sources/runner.rb
|
286
290
|
- lib/avm/sources/tests.rb
|
287
291
|
- lib/avm/sources/tests/builder.rb
|
288
292
|
- lib/avm/sources/tests/performer.rb
|