eac_tools 0.117.1 → 0.117.3
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/Gemfile.lock +32 -32
- data/eac_tools.gemspec +6 -6
- data/lib/eac_tools/version.rb +1 -1
- data/sub/avm/.gitrepo +6 -11
- data/sub/avm/avm.gemspec +3 -3
- data/sub/avm/lib/avm/launcher/instances/base/publishing.rb +1 -1
- data/sub/avm/lib/avm/version.rb +1 -1
- data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +3 -3
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish/internal_check.rb +2 -1
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/launcher_stereotypes/base/publish.rb +3 -2
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rspec/source_generator.rb +2 -2
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/providers/base/command_result_to_push_result.rb +39 -0
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/providers/base.rb +15 -2
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/rubygems/providers/rubygems_org.rb +5 -0
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/dependencies.rb +1 -1
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/source_generators/base/root_module.rb +6 -6
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/sources/base/update.rb +1 -1
- data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +1 -1
- data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec.rb +1 -1
- data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/dashed-mygem.gemspec +1 -1
- data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/lib/dashed/mygem.rb +2 -7
- data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/lib/mygem.rb +2 -5
- data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/mygem.gemspec +1 -1
- data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/sources/base/bundler_spec_files/mygem/lib/mygem.rb +2 -2
- data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/root_lib.template +2 -6
- data/sub/avm-tools/.avm.yaml +2 -0
- data/sub/avm-tools/.gitignore +3 -0
- data/sub/avm-tools/.gitrepo +7 -0
- data/sub/avm-tools/.rspec +1 -0
- data/sub/avm-tools/README.textile +28 -0
- data/sub/avm-tools/avm-tools.gemspec +24 -0
- data/sub/avm-tools/exe/avm +6 -0
- data/sub/avm-tools/lib/avm/tools/rspec/helpers/runner.rb +19 -0
- data/sub/avm-tools/lib/avm/tools/rspec/setup.rb +21 -0
- data/sub/avm-tools/lib/avm/tools/runner/application/info.rb +34 -0
- data/sub/avm-tools/lib/avm/tools/runner/application.rb +21 -0
- data/sub/avm-tools/lib/avm/tools/runner/application_stereotypes/list.rb +29 -0
- data/sub/avm-tools/lib/avm/tools/runner/application_stereotypes.rb +13 -0
- data/sub/avm-tools/lib/avm/tools/runner/applications/list.rb +29 -0
- data/sub/avm-tools/lib/avm/tools/runner/applications.rb +13 -0
- data/sub/avm-tools/lib/avm/tools/runner/config/load_path.rb +48 -0
- data/sub/avm-tools/lib/avm/tools/runner/config.rb +14 -0
- data/sub/avm-tools/lib/avm/tools/runner/files/format.rb +46 -0
- data/sub/avm-tools/lib/avm/tools/runner/files/rotate.rb +28 -0
- data/sub/avm-tools/lib/avm/tools/runner/files.rb +14 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/data/clear.rb +15 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/data/dump.rb +17 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/data/load.rb +22 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/clear.rb +17 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/dump.rb +17 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit/load.rb +22 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/data/unit.rb +40 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/data.rb +23 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/entry.rb +41 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/info.rb +35 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance/system.rb +63 -0
- data/sub/avm-tools/lib/avm/tools/runner/instance.rb +10 -0
- data/sub/avm-tools/lib/avm/tools/runner/launcher/instances.rb +34 -0
- data/sub/avm-tools/lib/avm/tools/runner/launcher/projects.rb +37 -0
- data/sub/avm-tools/lib/avm/tools/runner/launcher/publish.rb +52 -0
- data/sub/avm-tools/lib/avm/tools/runner/launcher.rb +14 -0
- data/sub/avm-tools/lib/avm/tools/runner/launcher_stereotypes/list.rb +38 -0
- data/sub/avm-tools/lib/avm/tools/runner/launcher_stereotypes.rb +13 -0
- data/sub/avm-tools/lib/avm/tools/runner/self/docker.rb +12 -0
- data/sub/avm-tools/lib/avm/tools/runner/self/registry.rb +22 -0
- data/sub/avm-tools/lib/avm/tools/runner/self.rb +18 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/auto_commit.rb +67 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/info.rb +54 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/issue/complete.rb +85 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/issue/deliver.rb +32 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/issue.rb +16 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/sub/remove.rb +20 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/sub.rb +25 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/subs.rb +70 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/test.rb +90 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/update.rb +20 -0
- data/sub/avm-tools/lib/avm/tools/runner/source/version_bump.rb +78 -0
- data/sub/avm-tools/lib/avm/tools/runner/source.rb +13 -0
- data/sub/avm-tools/lib/avm/tools/runner/source_generate.rb +10 -0
- data/sub/avm-tools/lib/avm/tools/runner.rb +19 -0
- data/sub/avm-tools/lib/avm/tools/runner_with/include_exclude.rb +20 -0
- data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_clear.rb +19 -0
- data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_dump.rb +55 -0
- data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_load.rb +64 -0
- data/sub/avm-tools/lib/avm/tools/runner_with/instance_data_performer.rb +37 -0
- data/sub/avm-tools/lib/avm/tools/self.rb +17 -0
- data/sub/avm-tools/lib/avm/tools/version.rb +7 -0
- data/sub/avm-tools/lib/avm/tools.rb +6 -0
- data/sub/avm-tools/spec/lib/avm/tools/runner/files/rotate_spec.rb +71 -0
- data/sub/avm-tools/spec/lib/avm/tools/runner/launcher_stereotypes/list_spec.rb +15 -0
- data/sub/avm-tools/spec/lib/avm/tools/runner/source/issue/complete_spec.rb +47 -0
- data/sub/avm-tools/spec/lib/avm/tools/runner_spec.rb +12 -0
- data/sub/{eac_ruby_base1 → avm-tools}/spec/spec_helper.rb +3 -1
- metadata +95 -40
- data/sub/avm/spec/meta/rubocop_spec.rb +0 -3
- data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/dashed-mygem/spec/meta/rubocop_spec.rb +0 -3
- data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/source_generators/base_spec_files/mygem/spec/meta/rubocop_spec.rb +0 -3
- data/sub/avm-eac_ruby_base1/spec/meta/rubocop_spec.rb +0 -3
- data/sub/avm-eac_ruby_base1/template/avm/eac_ruby_base1/source_generators/base/static/spec/meta/rubocop_spec.rb +0 -3
- data/sub/eac_ruby_base1/.gitignore +0 -2
- data/sub/eac_ruby_base1/.rspec +0 -1
- data/sub/eac_ruby_base1/eac_ruby_base1.gemspec +0 -21
- data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/ignore.rb +0 -57
- data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/patches.rb +0 -19
- data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/paths.rb +0 -38
- data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/require_patch.rb +0 -44
- data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/requires.rb +0 -25
- data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup/zeitwerk.rb +0 -35
- data/sub/eac_ruby_base1/lib/eac_ruby_base1/root_module_setup.rb +0 -68
- data/sub/eac_ruby_base1/lib/eac_ruby_base1/version.rb +0 -5
- data/sub/eac_ruby_base1/lib/eac_ruby_base1.rb +0 -5
- data/sub/eac_ruby_base1/spec/lib/eac_ruby_base1/root_module_setup_spec.rb +0 -43
- data/sub/eac_ruby_base1/spec/meta/rubocop_spec.rb +0 -3
- /data/sub/{eac_ruby_base1 → avm-tools}/.rubocop.yml +0 -0
- /data/sub/{eac_ruby_base1 → avm-tools}/Gemfile +0 -0
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module Tools
|
|
5
|
+
class Runner
|
|
6
|
+
class Source < ::Avm::Sources::Runner
|
|
7
|
+
class Test
|
|
8
|
+
runner_with :help do
|
|
9
|
+
desc 'Test local project.'
|
|
10
|
+
bool_opt '-a', '--all', 'Same as "--self --subs".'
|
|
11
|
+
bool_opt '-f', '--fail-fast', 'Abort after first failure.'
|
|
12
|
+
bool_opt '-m', '--main', 'Test main source.'
|
|
13
|
+
bool_opt '-s', '--subs', 'Test subs\' sources.'
|
|
14
|
+
pos_arg :source_id, repeat: true, optional: true
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def run
|
|
18
|
+
reset_tested_units
|
|
19
|
+
start_banner
|
|
20
|
+
show_units_results
|
|
21
|
+
final_result
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
private
|
|
25
|
+
|
|
26
|
+
attr_accessor :tested_units
|
|
27
|
+
|
|
28
|
+
def failed_units
|
|
29
|
+
tested_units.select(&:failed?)
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def final_result
|
|
33
|
+
if failed_units.any?
|
|
34
|
+
failed_units.each do |unit|
|
|
35
|
+
infov ' * Source', unit
|
|
36
|
+
info unit.logs.truncate_all
|
|
37
|
+
end
|
|
38
|
+
fatal_error 'Some test did not pass'
|
|
39
|
+
else
|
|
40
|
+
success 'None test failed'
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
def include_main?
|
|
45
|
+
parsed.main? || parsed.all?
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
def include_subs?
|
|
49
|
+
parsed.subs? || parsed.all?
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def reset_tested_units
|
|
53
|
+
self.tested_units = []
|
|
54
|
+
end
|
|
55
|
+
|
|
56
|
+
def show_units_results
|
|
57
|
+
test_performer.units.each do |unit|
|
|
58
|
+
infov unit, unit_result(unit)
|
|
59
|
+
tested_units << unit
|
|
60
|
+
break if unit.failed? && parsed.fail_fast?
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def start_banner
|
|
65
|
+
runner_context.call(:source_banner)
|
|
66
|
+
infov 'Selected units', test_performer.units.count
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
def test_builder
|
|
70
|
+
r = ::Avm::Sources::Tests::Builder.new(runner_context.call(:subject))
|
|
71
|
+
.include_main(include_main?)
|
|
72
|
+
.include_subs(include_subs?)
|
|
73
|
+
parsed.source_id.inject(r) { |a, e| a.include_id(e) }
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
def test_performer_uncached
|
|
77
|
+
test_builder.performer
|
|
78
|
+
end
|
|
79
|
+
|
|
80
|
+
def unit_result(unit)
|
|
81
|
+
(
|
|
82
|
+
[unit.result.to_label] +
|
|
83
|
+
%i[stdout stderr].map { |label| "#{label.to_s.upcase}: #{unit.logs[label]}" }
|
|
84
|
+
).join(' | '.blue)
|
|
85
|
+
end
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module Tools
|
|
5
|
+
class Runner
|
|
6
|
+
class Source < ::Avm::Sources::Runner
|
|
7
|
+
class Update
|
|
8
|
+
runner_with :help do
|
|
9
|
+
desc 'Update local project.'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
def run
|
|
13
|
+
infov 'Path', runner_context.call(:subject).path
|
|
14
|
+
runner_context.call(:subject).update
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module Tools
|
|
5
|
+
class Runner
|
|
6
|
+
class Source < ::Avm::Sources::Runner
|
|
7
|
+
class VersionBump
|
|
8
|
+
runner_with :help, :confirmation do
|
|
9
|
+
desc 'Bump version of a local project.'
|
|
10
|
+
arg_opt '-n', '--new', 'Set new version.'
|
|
11
|
+
arg_opt '-s', '--segment', 'Increment de <segment>-th segment (Left-most is 0)'
|
|
12
|
+
bool_opt '-M', '--major', 'Same as --segment=0.'
|
|
13
|
+
bool_opt '-m', '--minor', 'Same as --segment=1.'
|
|
14
|
+
bool_opt '-p', '--patch', 'Same as --segment=2.'
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def run
|
|
18
|
+
start_banner
|
|
19
|
+
version_changed? ? run_version_changed : run_version_unchanged
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def run_version_changed
|
|
23
|
+
infom 'Version changed'
|
|
24
|
+
if confirm?
|
|
25
|
+
runner_context.call(:subject).version_bump(target_version)
|
|
26
|
+
success 'Bumped'
|
|
27
|
+
else
|
|
28
|
+
fatal_error 'Bump unconfirmed'
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
def run_version_unchanged
|
|
33
|
+
success 'Version unchanged'
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def start_banner
|
|
37
|
+
infov 'Instance', runner_context.call(:subject)
|
|
38
|
+
infov 'Current version', current_version.if_present('-')
|
|
39
|
+
infov 'Target version', target_version.if_present('-')
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
def current_version_uncached
|
|
43
|
+
runner_context.call(:subject).version
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
def target_version_uncached
|
|
47
|
+
current_version.if_present do |r|
|
|
48
|
+
%w[new segment major minor patch].inject(r) do |a, e|
|
|
49
|
+
option_value = parsed[e]
|
|
50
|
+
next a if option_value.blank?
|
|
51
|
+
|
|
52
|
+
send("target_version_from_#{e}", a, option_value)
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
56
|
+
|
|
57
|
+
def target_version_from_new(_current, option_value)
|
|
58
|
+
::Avm::VersionNumber.new(option_value)
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
def target_version_from_segment(current, option_value)
|
|
62
|
+
current.increment_segment(option_value.to_i)
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
%w[major minor patch].each_with_index do |segment, segment_index|
|
|
66
|
+
define_method "target_version_from_#{segment}" do |current, _option_value|
|
|
67
|
+
target_version_from_segment(current, segment_index)
|
|
68
|
+
end
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
def version_changed?
|
|
72
|
+
target_version != current_version
|
|
73
|
+
end
|
|
74
|
+
end
|
|
75
|
+
end
|
|
76
|
+
end
|
|
77
|
+
end
|
|
78
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module Tools
|
|
5
|
+
class Runner
|
|
6
|
+
include ::EacRubyBase0::Runner
|
|
7
|
+
|
|
8
|
+
runner_definition do
|
|
9
|
+
desc 'Tools for AVM.'
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
delegate :application, to: :'::Avm::Tools::Self'
|
|
13
|
+
|
|
14
|
+
def extra_available_subcommands
|
|
15
|
+
::Avm::Registry.runners.registered_modules.index_by(&:command_argument)
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module Tools
|
|
5
|
+
module RunnerWith
|
|
6
|
+
module IncludeExclude
|
|
7
|
+
common_concern do
|
|
8
|
+
include ::EacCli::Runner
|
|
9
|
+
|
|
10
|
+
runner_definition do
|
|
11
|
+
arg_opt '-I', '--include', repeat: true
|
|
12
|
+
arg_opt '-E', '--exclude', repeat: true
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
delegate :include, :exclude, to: :parsed
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module Tools
|
|
5
|
+
module RunnerWith
|
|
6
|
+
module InstanceDataClear
|
|
7
|
+
common_concern do
|
|
8
|
+
enable_simple_cache
|
|
9
|
+
include ::Avm::Tools::RunnerWith::InstanceDataPerformer
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
# @return [Class]
|
|
13
|
+
def data_performer_class
|
|
14
|
+
::Avm::Data::Clearer
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
end
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module Tools
|
|
5
|
+
module RunnerWith
|
|
6
|
+
module InstanceDataDump
|
|
7
|
+
common_concern do
|
|
8
|
+
enable_simple_cache
|
|
9
|
+
runner_definition do
|
|
10
|
+
bool_opt '-w', '--rewrite', 'Forces dump overwrite.'
|
|
11
|
+
pos_arg :dump_path, optional: true
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
set_callback :run, :after do
|
|
15
|
+
success("Dump path: \"#{dump_path}\"")
|
|
16
|
+
dump_path
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
include ::Avm::Tools::RunnerWith::InstanceDataPerformer
|
|
21
|
+
|
|
22
|
+
DUMP_EXPIRE_TIME = 1.day
|
|
23
|
+
NO_DUMP_MESSAGE = 'Dump "%s" already exist and rewrite options was no setted nor ' \
|
|
24
|
+
'dump was expired.'
|
|
25
|
+
|
|
26
|
+
# @return [Class]
|
|
27
|
+
def data_performer_class
|
|
28
|
+
::Avm::Data::Dumper
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
# @return [String]
|
|
32
|
+
def help_extra_text
|
|
33
|
+
"Default dump path: \"#{default_dump_path}\""
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
private
|
|
37
|
+
|
|
38
|
+
# @return [Avm::Data::Dumper]
|
|
39
|
+
def data_performer_uncached
|
|
40
|
+
r = super.overwrite(parsed.rewrite?)
|
|
41
|
+
parsed.dump_path.if_present(r) { |v| r.target_path(v.to_pathname) }
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# @return [Pathname]
|
|
45
|
+
def dump_path
|
|
46
|
+
data_performer.target_path
|
|
47
|
+
end
|
|
48
|
+
|
|
49
|
+
def default_dump_path
|
|
50
|
+
data_performer.default_dump_path
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
end
|
|
55
|
+
end
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module Tools
|
|
5
|
+
module RunnerWith
|
|
6
|
+
module InstanceDataLoad
|
|
7
|
+
common_concern do
|
|
8
|
+
enable_simple_cache
|
|
9
|
+
|
|
10
|
+
runner_definition do
|
|
11
|
+
arg_opt '-S', '--source-instance', 'Informa a instância a ser extraída o dump.'
|
|
12
|
+
bool_opt '-w', '--rewrite'
|
|
13
|
+
pos_arg :dump_path, optional: true
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
set_callback :run, :after do
|
|
17
|
+
success("Dump loaded from \"#{dump_path}\"")
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
include ::Avm::Tools::RunnerWith::InstanceDataPerformer
|
|
22
|
+
|
|
23
|
+
# @return [Class]
|
|
24
|
+
def data_performer_class
|
|
25
|
+
::Avm::Data::Loader
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
private
|
|
29
|
+
|
|
30
|
+
# @return [Avm::Data::Loader]
|
|
31
|
+
def data_performer_uncached
|
|
32
|
+
super.source_path(dump_path)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
# @return [Pathname]
|
|
36
|
+
def dump_path_uncached
|
|
37
|
+
return parsed.dump_path.to_pathname if parsed.dump_path.present?
|
|
38
|
+
return source_instance_dump_path if parsed.source_instance.present?
|
|
39
|
+
|
|
40
|
+
fatal_error "Dump path not set (Options: #{parsed})"
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
# @return [Avm::Instances::Base]
|
|
44
|
+
def source_instance
|
|
45
|
+
runner_context.call(:instance).class.by_id(parsed.source_instance)
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
# @return [Avm::Data::Dumper]
|
|
49
|
+
def source_instance_dumper
|
|
50
|
+
data_performer_set_includes_excludes(
|
|
51
|
+
::Avm::Data::Dumper.new(source_instance_data_owner).overwrite(parsed.rewrite?)
|
|
52
|
+
)
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
# @return [Pathname]
|
|
56
|
+
def source_instance_dump_path
|
|
57
|
+
r = source_instance_dumper
|
|
58
|
+
r.perform
|
|
59
|
+
r.target_path
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
end
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module Tools
|
|
5
|
+
module RunnerWith
|
|
6
|
+
module InstanceDataPerformer
|
|
7
|
+
acts_as_abstract :data_performer_class
|
|
8
|
+
common_concern do
|
|
9
|
+
enable_simple_cache
|
|
10
|
+
include ::EacCli::Runner
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def run
|
|
14
|
+
if data_performer.performable?
|
|
15
|
+
data_performer.perform
|
|
16
|
+
else
|
|
17
|
+
fatal_error("Cannot perform: #{data_performer.cannot_perform_reason}")
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
private
|
|
22
|
+
|
|
23
|
+
# @return [Avm::Data::Performer]
|
|
24
|
+
def data_performer_uncached
|
|
25
|
+
data_performer_set_includes_excludes(data_performer_class.new(data_owner))
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
# @return [Avm::Data::Performer]
|
|
29
|
+
def data_performer_set_includes_excludes(data_performer)
|
|
30
|
+
%i[include exclude].inject(data_performer) do |a1, e1|
|
|
31
|
+
if_respond(e1, []).inject(a1) { |a2, e2| a2.send(e1, e2) }
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
end
|
|
37
|
+
end
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
module Avm
|
|
4
|
+
module Tools
|
|
5
|
+
module Self
|
|
6
|
+
class << self
|
|
7
|
+
def application
|
|
8
|
+
@application ||= ::EacRubyBase0::Application.new(root.to_path)
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def root
|
|
12
|
+
::Pathname.new('../../..').expand_path(__dir__)
|
|
13
|
+
end
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
end
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'tmpdir'
|
|
4
|
+
require 'fileutils'
|
|
5
|
+
|
|
6
|
+
class StubClock
|
|
7
|
+
attr_reader :current
|
|
8
|
+
|
|
9
|
+
def initialize(year, month, day)
|
|
10
|
+
@current = ::Time.new(year, month, day)
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def tick
|
|
14
|
+
@current += 1.day
|
|
15
|
+
@current
|
|
16
|
+
end
|
|
17
|
+
end
|
|
18
|
+
|
|
19
|
+
RSpec.describe Avm::Tools::Runner::Files::Rotate do
|
|
20
|
+
let(:workdir) { Dir.mktmpdir }
|
|
21
|
+
let(:source_basename) { 'myfile.tar.gz' }
|
|
22
|
+
let(:source_path) { File.join(workdir, source_basename) }
|
|
23
|
+
|
|
24
|
+
before do
|
|
25
|
+
FileUtils.touch(source_path)
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it { expect(File.exist?(source_path)).to be(true) }
|
|
29
|
+
|
|
30
|
+
context 'when run' do
|
|
31
|
+
let(:files_with_prefix) { Dir["#{workdir}/myfile_*.tar.gz"] }
|
|
32
|
+
|
|
33
|
+
before do
|
|
34
|
+
Avm::Tools::Runner.run(argv: ['files', 'rotate', source_path])
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
it { expect(File.exist?(source_path)).to be(false) }
|
|
38
|
+
it { expect(files_with_prefix.count).to eq(1) }
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
describe 'space limit' do
|
|
42
|
+
let(:tempdir) { Dir.mktmpdir }
|
|
43
|
+
let(:clock) { StubClock.new(2000, 1, 1) }
|
|
44
|
+
|
|
45
|
+
it 'limit space used by rotated files' do # rubocop:disable RSpec/NoExpectationExample
|
|
46
|
+
file1 = create_and_rotate_stub_file([], [])
|
|
47
|
+
file2 = create_and_rotate_stub_file([file1], [])
|
|
48
|
+
file3 = create_and_rotate_stub_file([file2], [file1])
|
|
49
|
+
create_and_rotate_stub_file([file3], [file1, file2])
|
|
50
|
+
end
|
|
51
|
+
|
|
52
|
+
def create_and_rotate_stub_file(expect_exist, expect_not_exist)
|
|
53
|
+
rotate_runner = described_class.create(argv: [create_stub_file, '--space-limit=32'])
|
|
54
|
+
rotate_runner.run
|
|
55
|
+
test_files(rotate_runner.rotate, expect_exist, expect_not_exist)
|
|
56
|
+
rotate_runner.rotate.target_path
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
def test_files(rotate, expect_exist, expect_not_exist)
|
|
60
|
+
(expect_exist + [rotate.target_path]).each { |path| expect(File).to exist(path) }
|
|
61
|
+
expect_not_exist.each { |path| expect(File).not_to exist(path) }
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
def create_stub_file
|
|
65
|
+
stub_path = File.join(tempdir, 'stub.ext')
|
|
66
|
+
File.write(stub_path, 'A' * 16)
|
|
67
|
+
FileUtils.touch(stub_path, mtime: clock.tick)
|
|
68
|
+
stub_path
|
|
69
|
+
end
|
|
70
|
+
end
|
|
71
|
+
end
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe Avm::Tools::Runner::LauncherStereotypes::List do
|
|
4
|
+
def avm_tools_runner_args_prefix
|
|
5
|
+
%w[launcher-stereotypes list]
|
|
6
|
+
end
|
|
7
|
+
|
|
8
|
+
it do
|
|
9
|
+
expect { avm_tools_runner_run }.not_to raise_error
|
|
10
|
+
end
|
|
11
|
+
|
|
12
|
+
it do
|
|
13
|
+
expect { avm_tools_runner_run('--deprecated') }.not_to raise_error
|
|
14
|
+
end
|
|
15
|
+
end
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require 'tmpdir'
|
|
4
|
+
require 'fileutils'
|
|
5
|
+
|
|
6
|
+
RSpec.describe Avm::Tools::Runner::Source::Issue::Complete, :git do
|
|
7
|
+
let(:remote_name) { 'origin' }
|
|
8
|
+
let(:issue_ref) { 'issue_123' }
|
|
9
|
+
let(:remote_repos) { stubbed_git_local_repo(true) }
|
|
10
|
+
let(:local_repos) { stubbed_git_local_repo }
|
|
11
|
+
let(:eac_local_repos) { Avm::Git::Launcher::Base.new(local_repos.root_path.to_path) }
|
|
12
|
+
|
|
13
|
+
context 'when branch is pushed' do
|
|
14
|
+
before do
|
|
15
|
+
eac_local_repos.assert_remote_url(remote_name, remote_repos.root_path.to_path)
|
|
16
|
+
local_repos.command('checkout', '-b', issue_ref).execute!
|
|
17
|
+
local_repos.file('myfile1.txt').touch
|
|
18
|
+
local_repos.file(Avm::Sources::Base::Configuration::CONFIGURATION_FILENAMES.first).touch
|
|
19
|
+
local_repos.command('add', '.').execute!
|
|
20
|
+
local_repos.command('commit', '-m', 'myfile1.txt').execute!
|
|
21
|
+
local_repos.command('push', 'origin', issue_ref).execute!
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
it 'remote repos has a issue branch' do
|
|
25
|
+
expect(eac_local_repos.remote_hashs(remote_name)).to include("refs/heads/#{issue_ref}")
|
|
26
|
+
end
|
|
27
|
+
|
|
28
|
+
it 'remote repos does not have a issue tag' do
|
|
29
|
+
expect(eac_local_repos.remote_hashs(remote_name)).not_to include("refs/tags/#{issue_ref}")
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
context 'when "git issue complete" is called' do
|
|
33
|
+
before do
|
|
34
|
+
Avm::Tools::Runner.run(argv: ['source', '-C', eac_local_repos] +
|
|
35
|
+
%w[issue complete --yes])
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
it 'remote repos does not have a issue branch' do
|
|
39
|
+
expect(eac_local_repos.remote_hashs(remote_name)).not_to include("refs/heads/#{issue_ref}")
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
it 'remote repos has a issue tag' do
|
|
43
|
+
expect(eac_local_repos.remote_hashs(remote_name)).to include("refs/tags/#{issue_ref}")
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
RSpec.describe Avm::Tools::Runner do
|
|
4
|
+
let(:argv) { %w[--version] }
|
|
5
|
+
let(:instance) { described_class.create(argv: argv) }
|
|
6
|
+
|
|
7
|
+
it 'runs' do
|
|
8
|
+
expect { instance.run }.to(
|
|
9
|
+
output("#{Avm::Tools::VERSION}\n").to_stdout_from_any_process
|
|
10
|
+
)
|
|
11
|
+
end
|
|
12
|
+
end
|