avm-tools 0.100.0 → 0.103.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/avm/app_src.rb +8 -7
- data/lib/avm/eac_redmine_base0/docker_image.rb +52 -0
- data/lib/avm/eac_redmine_base0/instance.rb +2 -2
- data/lib/avm/git/auto_commit/rules/manual.rb +1 -1
- data/lib/avm/git/issue/complete.rb +4 -8
- data/lib/avm/git/issue/complete/commits.rb +42 -0
- data/lib/avm/git/issue/complete/git_subrepos.rb +23 -0
- data/lib/avm/git/issue/complete/local_branch.rb +54 -0
- data/lib/avm/git/issue/complete/local_tag.rb +39 -0
- data/lib/avm/git/issue/complete/push.rb +54 -0
- data/lib/avm/git/issue/complete/remote.rb +33 -0
- data/lib/avm/git/issue/complete/test.rb +45 -0
- data/lib/avm/git/issue/complete/tracker.rb +28 -0
- data/lib/avm/git/issue/complete/validations.rb +53 -0
- data/lib/avm/git/issue/complete/working_tree.rb +19 -0
- data/lib/avm/git/revision_test.rb +9 -6
- data/lib/avm/instances/base/dockerizable.rb +1 -0
- data/lib/avm/instances/base/entry_keys.rb +6 -1
- data/lib/avm/instances/docker_image.rb +15 -0
- data/lib/avm/instances/entries.rb +0 -1
- data/lib/avm/instances/entry.rb +3 -2
- data/lib/avm/instances/entry_keys.rb +1 -0
- data/lib/avm/launcher/context.rb +1 -1
- data/lib/avm/launcher/git/publish_base.rb +3 -1
- data/lib/avm/launcher/git/warp_base.rb +11 -0
- data/lib/avm/launcher/instances/base.rb +2 -1
- data/lib/avm/launcher/instances/error.rb +1 -3
- data/lib/avm/launcher/ruby/gem/build.rb +1 -1
- data/lib/avm/projects/stereotype/job_comparator.rb +32 -0
- data/lib/avm/projects/stereotypes/git/update.rb +1 -2
- data/lib/avm/projects/stereotypes/ruby_gem/local_project_mixin.rb +2 -2
- data/lib/avm/projects/stereotypes/ruby_gem/publish.rb +1 -1
- data/lib/avm/projects/stereotypes/ruby_gem/update.rb +4 -0
- data/lib/avm/self.rb +9 -0
- data/lib/avm/self/instance.rb +4 -0
- data/lib/avm/tools/runner.rb +4 -0
- data/lib/avm/tools/runner/app_src/version_bump.rb +3 -3
- data/lib/avm/tools/runner/config/load_path.rb +4 -3
- data/lib/avm/tools/runner/eac_redmine_base0/dev_docker.rb +17 -0
- data/lib/avm/tools/runner/eac_redmine_base0/docker.rb +3 -0
- data/lib/avm/tools/runner/git/auto_commit.rb +1 -0
- data/lib/avm/tools/runner/git/deploy.rb +2 -1
- data/lib/avm/tools/runner/git/issue.rb +4 -75
- data/lib/avm/tools/runner/git/issue/complete.rb +79 -0
- data/lib/avm/tools/runner/git/issue/deliver.rb +35 -0
- data/lib/avm/tools/runner/git/organize.rb +1 -1
- data/lib/avm/tools/version.rb +1 -1
- data/template/avm/eac_redmine_base0/docker_image/Dockerfile.template +47 -0
- data/template/avm/eac_redmine_base0/docker_image/apache_http_virtualhost.conf.template +10 -0
- data/template/avm/eac_redmine_base0/docker_image/apache_https_virtualhost.conf.template +16 -0
- data/template/avm/eac_redmine_base0/docker_image/install_settings.sh.template +29 -0
- data/template/avm/eac_redmine_base0/docker_image/start.sh.template +25 -0
- data/template/avm/eac_ubuntu_base0/docker_image/Dockerfile +1 -1
- data/vendor/avm-apps/avm-apps.gemspec +1 -1
- data/vendor/avm-apps/lib/avm/apps/config.rb +19 -0
- data/vendor/avm-apps/lib/avm/apps/jobs/base.rb +1 -1
- data/vendor/avm-apps/lib/avm/apps/version.rb +1 -1
- data/vendor/avm-eac_rails_base1/Gemfile +5 -0
- data/vendor/avm-eac_rails_base1/avm-eac_rails_base1.gemspec +19 -0
- data/{lib → vendor/avm-eac_rails_base1/lib}/avm/eac_rails_base1.rb +0 -0
- data/{lib → vendor/avm-eac_rails_base1/lib}/avm/eac_rails_base1/apache_host.rb +0 -0
- data/{lib → vendor/avm-eac_rails_base1/lib}/avm/eac_rails_base1/instance.rb +0 -0
- data/{lib → vendor/avm-eac_rails_base1/lib}/avm/eac_rails_base1/runner.rb +0 -0
- data/{lib → vendor/avm-eac_rails_base1/lib}/avm/eac_rails_base1/runner/bundle.rb +1 -2
- data/{lib → vendor/avm-eac_rails_base1/lib}/avm/eac_rails_base1/runner/code_runner.rb +0 -0
- data/{lib → vendor/avm-eac_rails_base1/lib}/avm/eac_rails_base1/runner/log.rb +0 -0
- data/vendor/avm-eac_rails_base1/lib/avm/eac_rails_base1/runner/logs.rb +18 -0
- data/vendor/avm-eac_rails_base1/lib/avm/eac_rails_base1/runner/logs/clear.rb +26 -0
- data/{lib → vendor/avm-eac_rails_base1/lib}/avm/eac_rails_base1/runner/rails_server.rb +0 -0
- data/{lib → vendor/avm-eac_rails_base1/lib}/avm/eac_rails_base1/runner_with/bundle.rb +0 -0
- data/{lib → vendor/avm-eac_rails_base1/lib}/avm/eac_rails_base1/runner_with/rails_environment.rb +0 -0
- data/vendor/avm-eac_rails_base1/lib/avm/eac_rails_base1/version.rb +7 -0
- data/vendor/avm-eac_rails_base1/spec/rubocop_spec.rb +3 -0
- data/vendor/avm-eac_rails_base1/spec/spec_helper.rb +102 -0
- data/vendor/avm-eac_webapp_base0/Gemfile +5 -0
- data/vendor/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec +19 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0.rb +2 -2
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/apache_host.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/apache_path.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/deploy.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/deploy/appended_directories.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/deploy/build.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/deploy/file_unit.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/deploy/git_info.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/deploy/version.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/deploy/write_on_target.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/instance.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/instance/subcommand_parent.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/runner.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/runner/apache_host.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/runner/apache_path.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/runner/data.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/runner/data/dump.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/runner/data/load.rb +0 -0
- data/{lib → vendor/avm-eac_webapp_base0/lib}/avm/eac_webapp_base0/runner/deploy.rb +0 -0
- data/vendor/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/version.rb +7 -0
- data/vendor/avm-eac_webapp_base0/spec/rubocop_spec.rb +3 -0
- data/vendor/avm-eac_webapp_base0/spec/spec_helper.rb +102 -0
- data/vendor/avm/Gemfile +5 -0
- data/vendor/avm/avm.gemspec +19 -0
- data/vendor/avm/lib/avm.rb +7 -0
- data/vendor/avm/lib/avm/docker.rb +9 -0
- data/{lib → vendor/avm/lib}/avm/docker/container.rb +5 -5
- data/{lib → vendor/avm/lib}/avm/docker/image.rb +10 -27
- data/{lib → vendor/avm/lib}/avm/docker/runner.rb +34 -8
- data/vendor/avm/lib/avm/version.rb +5 -0
- data/{lib/avm/version.rb → vendor/avm/lib/avm/version_number.rb} +1 -1
- data/vendor/avm/spec/rubocop_spec.rb +3 -0
- data/vendor/avm/spec/spec_helper.rb +102 -0
- data/vendor/eac_cli/eac_cli.gemspec +1 -2
- data/vendor/eac_cli/lib/eac_cli/config.rb +1 -2
- data/vendor/eac_cli/lib/eac_cli/config/entry.rb +3 -1
- data/vendor/eac_cli/lib/eac_cli/config/entry/undefined.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/definition/help_formatter.rb +3 -2
- data/vendor/eac_cli/lib/eac_cli/definition/positional_argument.rb +6 -1
- data/vendor/eac_cli/lib/eac_cli/old_configs.rb +0 -1
- data/vendor/eac_cli/lib/eac_cli/old_configs/entry_reader.rb +2 -2
- data/vendor/eac_cli/lib/eac_cli/old_configs_bridge.rb +2 -0
- data/vendor/eac_cli/lib/eac_cli/runner.rb +0 -2
- data/vendor/eac_cli/lib/eac_cli/runner/after_class_methods.rb +20 -3
- data/vendor/eac_cli/lib/eac_cli/runner/instance_methods.rb +5 -1
- data/vendor/eac_cli/lib/eac_cli/runner_with/help.rb +9 -4
- data/vendor/eac_cli/lib/eac_cli/runner_with/help/builder.rb +73 -0
- data/vendor/eac_cli/lib/eac_cli/runner_with/help/builder/alternative.rb +56 -0
- data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb +6 -4
- data/vendor/eac_cli/lib/eac_cli/speaker.rb +15 -19
- data/vendor/eac_cli/lib/eac_cli/speaker/_constants.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/speaker/list.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/speaker/options.rb +38 -0
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_cli/spec/lib/eac_cli/parser/alternative_spec.rb +1 -1
- data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +0 -1
- data/vendor/eac_cli/spec/lib/eac_cli/speaker_spec.rb +5 -9
- data/vendor/eac_config/lib/eac_config/node.rb +7 -0
- data/vendor/eac_config/lib/eac_config/version.rb +1 -1
- data/vendor/eac_git/lib/eac_git/executables.rb +4 -0
- data/vendor/eac_git/lib/eac_git/local.rb +5 -1
- data/vendor/eac_git/lib/eac_git/local/commit/archive.rb +19 -0
- data/vendor/eac_git/lib/eac_git/local/subrepo.rb +2 -1
- data/vendor/eac_git/lib/eac_git/version.rb +1 -1
- data/vendor/eac_ruby_base0/eac_ruby_base0.gemspec +2 -2
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/application.rb +23 -9
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/application_xdg.rb +34 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/jobs_runner.rb +2 -2
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +19 -7
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/confirmation.rb +8 -1
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
- data/vendor/eac_ruby_gems_utils/eac_ruby_gems_utils.gemspec +1 -1
- data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/tests/multiple/decorated_gem.rb +2 -0
- data/vendor/eac_ruby_gems_utils/lib/eac_ruby_gems_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/context.rb +31 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/contextualizable.rb +21 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/context.rb +11 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/speaker.rb +9 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/parent_n.rb +11 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/simple_cache.rb +10 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/speaker.rb +16 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/speaker/receiver.rb +57 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/speaker/sender.rb +32 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/{eac_cli/spec/lib → eac_ruby_utils/spec/lib/eac_ruby_utils/patches}/module/speaker_spec.rb +2 -2
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/parent_n_spec.rb +33 -0
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/simple_cache_spec.rb +18 -0
- data/vendor/eac_templates/eac_templates.gemspec +1 -1
- data/vendor/eac_templates/lib/eac_templates/variable_providers.rb +1 -1
- data/vendor/eac_templates/lib/eac_templates/variable_providers/config_reader.rb +27 -0
- data/vendor/eac_templates/lib/eac_templates/version.rb +1 -1
- metadata +106 -65
- data/lib/avm/configs.rb +0 -26
- data/lib/avm/docker.rb +0 -9
- data/lib/avm/docker/registry.rb +0 -28
- data/lib/avm/git/issue/complete/_commits.rb +0 -40
- data/lib/avm/git/issue/complete/_git_subrepos.rb +0 -21
- data/lib/avm/git/issue/complete/_local_branch.rb +0 -52
- data/lib/avm/git/issue/complete/_local_tag.rb +0 -37
- data/lib/avm/git/issue/complete/_push.rb +0 -52
- data/lib/avm/git/issue/complete/_remote.rb +0 -31
- data/lib/avm/git/issue/complete/_test.rb +0 -43
- data/lib/avm/git/issue/complete/_tracker.rb +0 -26
- data/lib/avm/git/issue/complete/_validations.rb +0 -51
- data/lib/avm/git/issue/complete/_working_tree.rb +0 -17
- data/vendor/eac_cli/lib/eac_cli/docopt/doc_builder.rb +0 -71
- data/vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb +0 -50
- data/vendor/eac_cli/lib/eac_cli/docopt/runner_context_replacement.rb +0 -15
- data/vendor/eac_cli/lib/eac_cli/docopt/runner_extension.rb +0 -51
- data/vendor/eac_cli/lib/eac_cli/docopt_runner.rb +0 -38
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/_class_methods.rb +0 -16
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/_doc.rb +0 -23
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/_settings.rb +0 -17
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/_subcommands.rb +0 -152
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/context.rb +0 -18
- data/vendor/eac_cli/lib/eac_cli/patches/module.rb +0 -4
- data/vendor/eac_cli/lib/eac_cli/patches/module/speaker.rb +0 -10
- data/vendor/eac_cli/lib/eac_cli/speaker/_class_methods.rb +0 -37
- data/vendor/eac_cli/lib/eac_cli/speaker/node.rb +0 -24
- data/vendor/eac_cli/spec/lib/eac_cli/docopt/runner_extension_spec.rb +0 -35
- data/vendor/eac_cli/spec/lib/eac_cli/docopt_runner_spec.rb +0 -136
@@ -3,23 +3,19 @@
|
|
3
3
|
require 'eac_cli/speaker'
|
4
4
|
|
5
5
|
RSpec.describe ::EacCli::Speaker do
|
6
|
-
let(:instance)
|
7
|
-
r = ::Object.new
|
8
|
-
r.extend(described_class)
|
9
|
-
r
|
10
|
-
end
|
6
|
+
let(:instance) { described_class.new }
|
11
7
|
|
12
|
-
describe '#
|
8
|
+
describe '#input' do
|
13
9
|
it 'recover value from hash list' do
|
14
10
|
allow(instance).to receive(:request_string).and_return('opt1')
|
15
11
|
list = { opt1: 'value1', opt2: 'value2' }
|
16
|
-
expect(instance.
|
12
|
+
expect(instance.input('Question', list: list)).to eq('value1')
|
17
13
|
end
|
18
14
|
|
19
15
|
it 'recover value from array list' do
|
20
16
|
allow(instance).to receive(:request_string).and_return('OPT1')
|
21
17
|
list = %w[opt1 opt2]
|
22
|
-
expect(instance.
|
18
|
+
expect(instance.input('Question', list: list)).to eq('opt1')
|
23
19
|
end
|
24
20
|
|
25
21
|
{
|
@@ -28,7 +24,7 @@ RSpec.describe ::EacCli::Speaker do
|
|
28
24
|
context "when bool: true and input is \"#{input}\"" do
|
29
25
|
it "return #{expected}" do
|
30
26
|
allow(instance).to receive(:request_string).and_return(input)
|
31
|
-
expect(instance.
|
27
|
+
expect(instance.input('Question', bool: true)).to eq(expected)
|
32
28
|
end
|
33
29
|
end
|
34
30
|
end
|
@@ -7,9 +7,16 @@ require 'eac_config/load_nodes_search'
|
|
7
7
|
require 'eac_config/node_entry'
|
8
8
|
require 'eac_config/node_uri'
|
9
9
|
require 'eac_ruby_utils/core_ext'
|
10
|
+
require 'eac_ruby_utils/context'
|
10
11
|
|
11
12
|
module EacConfig
|
12
13
|
module Node
|
14
|
+
class << self
|
15
|
+
def context
|
16
|
+
@context ||= ::EacRubyUtils::Context.new
|
17
|
+
end
|
18
|
+
end
|
19
|
+
|
13
20
|
attr_accessor :write_node
|
14
21
|
|
15
22
|
common_concern do
|
@@ -39,13 +39,17 @@ module EacGit
|
|
39
39
|
::EacGit::Executables.git.command('-C', root_path.to_path, *args)
|
40
40
|
end
|
41
41
|
|
42
|
+
def raise_error(message)
|
43
|
+
raise "#{root_path}: #{message}"
|
44
|
+
end
|
45
|
+
|
42
46
|
def rev_parse(ref, required = false)
|
43
47
|
r = command('rev-parse', ref).execute!(exit_outputs: { 128 => nil, 32_768 => nil })
|
44
48
|
r.strip! if r.is_a?(String)
|
45
49
|
return r if r.present?
|
46
50
|
return nil unless required
|
47
51
|
|
48
|
-
|
52
|
+
raise_error "Reference \"#{ref}\" not found"
|
49
53
|
end
|
50
54
|
|
51
55
|
def subrepo(subpath)
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EacGit
|
6
|
+
class Local
|
7
|
+
class Commit
|
8
|
+
module Archive
|
9
|
+
# @return [EacRubyUtils::Envs::Command]
|
10
|
+
def archive_to_dir(path)
|
11
|
+
path = path.to_pathname
|
12
|
+
repo.command('archive', '--format=tar', hash).pipe(
|
13
|
+
::EacGit::Executables.tar.command('-xC', path)
|
14
|
+
)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -12,7 +12,8 @@ module EacGit
|
|
12
12
|
|
13
13
|
common_constructor :local, :subpath do
|
14
14
|
self.subpath = subpath.to_pathname
|
15
|
-
|
15
|
+
local.raise_error "Config file \"#{config_absolute_path}\" not found" unless
|
16
|
+
config_absolute_path.file?
|
16
17
|
end
|
17
18
|
|
18
19
|
def command(subrepo_subcommand, *subrepo_subcommand_args)
|
@@ -12,9 +12,9 @@ Gem::Specification.new do |s|
|
|
12
12
|
|
13
13
|
s.files = Dir['{lib}/**/*']
|
14
14
|
|
15
|
-
s.add_dependency 'eac_cli', '~> 0.
|
15
|
+
s.add_dependency 'eac_cli', '~> 0.20'
|
16
16
|
s.add_dependency 'eac_ruby_gems_utils', '~> 0.8'
|
17
|
-
s.add_dependency 'eac_ruby_utils', '~> 0.
|
17
|
+
s.add_dependency 'eac_ruby_utils', '~> 0.67'
|
18
18
|
|
19
19
|
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.2'
|
20
20
|
end
|
@@ -1,5 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'eac_cli/config'
|
4
|
+
require 'eac_config/envvars_node'
|
5
|
+
require 'eac_config/yaml_file_node'
|
6
|
+
require 'eac_ruby_base0/application_xdg'
|
3
7
|
require 'eac_ruby_gems_utils/gem'
|
4
8
|
require 'eac_ruby_utils/core_ext'
|
5
9
|
require 'eac_ruby_utils/filesystem_cache'
|
@@ -21,16 +25,22 @@ module EacRubyBase0
|
|
21
25
|
vendor_gems + [self_gem]
|
22
26
|
end
|
23
27
|
|
24
|
-
|
25
|
-
|
28
|
+
# @return [EacCli::Config]
|
29
|
+
def build_config(path = nil)
|
30
|
+
envvar_node = ::EacConfig::EnvvarsNode.new
|
31
|
+
file_node = ::EacConfig::YamlFileNode.new(path || config_default_path)
|
32
|
+
envvar_node.load_path.push(file_node.url)
|
33
|
+
envvar_node.write_node = file_node
|
34
|
+
::EacCli::Config.new(envvar_node)
|
35
|
+
end
|
26
36
|
|
27
|
-
|
28
|
-
|
29
|
-
|
37
|
+
# @return [EacCli::Config]
|
38
|
+
def config_default_path
|
39
|
+
config_dir.join('eac_config.yaml')
|
40
|
+
end
|
30
41
|
|
31
|
-
|
32
|
-
|
33
|
-
end
|
42
|
+
::EacRubyBase0::ApplicationXdg::DIRECTORIES.each_key do |item|
|
43
|
+
delegate "#{item}_xdg_env", "#{item}_dir", to: :app_xdg
|
34
44
|
end
|
35
45
|
|
36
46
|
def fs_cache
|
@@ -40,7 +50,7 @@ module EacRubyBase0
|
|
40
50
|
end
|
41
51
|
|
42
52
|
def home_dir
|
43
|
-
|
53
|
+
app_xdg.user_home_dir
|
44
54
|
end
|
45
55
|
|
46
56
|
def name
|
@@ -53,6 +63,10 @@ module EacRubyBase0
|
|
53
63
|
|
54
64
|
private
|
55
65
|
|
66
|
+
def app_xdg_uncached
|
67
|
+
::EacRubyBase0::ApplicationXdg.new(name, options[OPTION_HOME_DIR])
|
68
|
+
end
|
69
|
+
|
56
70
|
def self_gem_uncached
|
57
71
|
::EacRubyGemsUtils::Gem.new(gemspec_dir)
|
58
72
|
end
|
@@ -0,0 +1,34 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EacRubyBase0
|
6
|
+
# https://specifications.freedesktop.org/basedir-spec/basedir-spec-latest.html
|
7
|
+
class ApplicationXdg
|
8
|
+
class << self
|
9
|
+
# @return [Pathname]
|
10
|
+
def user_home_dir_from_env
|
11
|
+
ENV.fetch('HOME').to_pathname
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
DIRECTORIES = { cache: '.cache', config: '.config', data: '.local/share',
|
16
|
+
state: '.local/state' }.freeze
|
17
|
+
|
18
|
+
common_constructor :app_name, :user_home_dir, default: [nil] do
|
19
|
+
self.user_home_dir ||= self.class.user_home_dir_from_env
|
20
|
+
end
|
21
|
+
|
22
|
+
DIRECTORIES.each do |item, subpath|
|
23
|
+
xdg_env_method_name = "#{item}_xdg_env"
|
24
|
+
|
25
|
+
define_method xdg_env_method_name do
|
26
|
+
ENV["XDG_#{item.upcase}_HOME"].if_present(&:to_pathname)
|
27
|
+
end
|
28
|
+
|
29
|
+
define_method "#{item}_dir" do
|
30
|
+
(send(xdg_env_method_name) || user_home_dir.join(subpath)).join(app_name)
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
34
|
+
end
|
@@ -1,12 +1,12 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require '
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
4
|
require 'eac_ruby_utils/settings_provider'
|
5
5
|
|
6
6
|
module EacRubyBase0
|
7
7
|
module JobsRunner
|
8
8
|
common_concern do
|
9
|
-
|
9
|
+
enable_speaker
|
10
10
|
include ::EacRubyUtils::SettingsProvider
|
11
11
|
end
|
12
12
|
|
@@ -1,6 +1,9 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'eac_cli/core_ext'
|
4
|
+
require 'eac_cli/speaker'
|
5
|
+
require 'eac_config/node'
|
6
|
+
require 'eac_ruby_utils/speaker'
|
4
7
|
|
5
8
|
module EacRubyBase0
|
6
9
|
module Runner
|
@@ -20,13 +23,13 @@ module EacRubyBase0
|
|
20
23
|
end
|
21
24
|
|
22
25
|
def run
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
26
|
+
::EacRubyUtils::Speaker.context.on(build_speaker) do
|
27
|
+
::EacConfig::Node.context.on(runner_context.call(:application).build_config) do
|
28
|
+
if parsed.version?
|
29
|
+
show_version
|
30
|
+
else
|
31
|
+
run_with_subcommand
|
32
|
+
end
|
30
33
|
end
|
31
34
|
end
|
32
35
|
end
|
@@ -48,5 +51,14 @@ module EacRubyBase0
|
|
48
51
|
end
|
49
52
|
end
|
50
53
|
end
|
54
|
+
|
55
|
+
private
|
56
|
+
|
57
|
+
def build_speaker
|
58
|
+
options = {}
|
59
|
+
options[:err_out] = ::StringIO.new if parsed.quiet?
|
60
|
+
options[:in_in] = FailIfRequestInput.new if parsed.no_input?
|
61
|
+
::EacCli::Speaker.new(options)
|
62
|
+
end
|
51
63
|
end
|
52
64
|
end
|
@@ -12,6 +12,7 @@ module EacRubyBase0
|
|
12
12
|
common_concern do
|
13
13
|
include ::EacCli::Runner
|
14
14
|
enable_settings_provider
|
15
|
+
enable_simple_cache
|
15
16
|
runner_definition do
|
16
17
|
bool_opt '--no', 'Deny confirmation without question.'
|
17
18
|
bool_opt '--yes', 'Accept confirmation without question.'
|
@@ -22,7 +23,7 @@ module EacRubyBase0
|
|
22
23
|
return false if parsed.no?
|
23
24
|
return true if parsed.yes?
|
24
25
|
|
25
|
-
|
26
|
+
input(
|
26
27
|
message || setting_value(:confirm_question_text, default: DEFAULT_CONFIRM_QUESTION_TEXT),
|
27
28
|
bool: true
|
28
29
|
)
|
@@ -31,6 +32,12 @@ module EacRubyBase0
|
|
31
32
|
def run_confirm(message = nil)
|
32
33
|
yield if confirm?(message)
|
33
34
|
end
|
35
|
+
|
36
|
+
private
|
37
|
+
|
38
|
+
def cached_confirm_uncached?(message = nil)
|
39
|
+
confirm?(message)
|
40
|
+
end
|
34
41
|
end
|
35
42
|
end
|
36
43
|
end
|
@@ -23,7 +23,7 @@ Gem::Specification.new do |s|
|
|
23
23
|
s.test_files = Dir['{spec}/**/*', '.rspec']
|
24
24
|
|
25
25
|
s.add_dependency 'bundler', '~> 2.2', '>= 2.2.17'
|
26
|
-
s.add_dependency 'eac_ruby_utils', '~> 0.
|
26
|
+
s.add_dependency 'eac_ruby_utils', '~> 0.67'
|
27
27
|
|
28
28
|
# Tests
|
29
29
|
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.2'
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module EacRubyUtils
|
4
|
+
class Context
|
5
|
+
def current
|
6
|
+
optional_current || raise('No elements in context')
|
7
|
+
end
|
8
|
+
|
9
|
+
def optional_current
|
10
|
+
stack.last
|
11
|
+
end
|
12
|
+
|
13
|
+
delegate :pop, to: :stack
|
14
|
+
delegate :push, to: :stack
|
15
|
+
|
16
|
+
def on(obj)
|
17
|
+
push(obj)
|
18
|
+
begin
|
19
|
+
yield
|
20
|
+
ensure
|
21
|
+
pop
|
22
|
+
end
|
23
|
+
end
|
24
|
+
|
25
|
+
private
|
26
|
+
|
27
|
+
def stack
|
28
|
+
@stack ||= []
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/context'
|
4
|
+
|
5
|
+
module EacRubyUtils
|
6
|
+
module Contextualizable
|
7
|
+
common_concern
|
8
|
+
|
9
|
+
module ClassMethods
|
10
|
+
def context
|
11
|
+
@context ||= ::EacRubyUtils::Context.new
|
12
|
+
end
|
13
|
+
end
|
14
|
+
|
15
|
+
module InstanceMethods
|
16
|
+
def context
|
17
|
+
self.class.context
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|