avm-tools 0.113.6 → 0.114.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/avm/launcher/context.rb +19 -8
- data/lib/avm/launcher/git/publish_base.rb +2 -0
- data/lib/avm/tools/runner/app_src/ruby/bundler/incompatible.rb +2 -2
- data/lib/avm/tools/version.rb +1 -1
- data/{lib → sub/avm/lib}/avm/launcher/errors/base.rb +0 -0
- data/{lib → sub/avm/lib}/avm/launcher/errors/non_project.rb +0 -0
- data/{lib → sub/avm/lib}/avm/launcher/paths/real.rb +0 -0
- data/{lib → sub/avm/lib}/avm/launcher/publish/check_result.rb +0 -0
- data/sub/avm/lib/avm/version.rb +1 -1
- data/sub/avm-eac_redmine_base0/avm-eac_redmine_base0.gemspec +1 -0
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/data_unit.rb +6 -10
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instance.rb +20 -0
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/rest_api.rb +11 -0
- data/sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/version.rb +1 -1
- data/sub/avm-files/lib/avm/files/formatter/formats/generic_plain.rb +2 -2
- data/sub/avm-files/lib/avm/files/version.rb +1 -1
- data/sub/avm-git/lib/avm/git/revision_test.rb +1 -1
- data/sub/avm-git/lib/avm/git/version.rb +1 -1
- data/sub/eac_cli/lib/eac_cli/config/entry.rb +1 -1
- data/sub/eac_cli/lib/eac_cli/speaker.rb +1 -2
- data/sub/eac_cli/lib/eac_cli/version.rb +1 -1
- data/sub/eac_fs/lib/eac_fs/cached_download.rb +3 -3
- data/sub/eac_fs/lib/eac_fs/contexts.rb +21 -0
- data/sub/eac_fs/lib/eac_fs/patches/module/fs_cache.rb +9 -4
- data/sub/eac_fs/lib/eac_fs/patches/object/fs_cache.rb +16 -6
- data/sub/eac_fs/lib/eac_fs/{cache.rb → storage_tree.rb} +6 -8
- data/sub/eac_fs/lib/eac_fs/version.rb +1 -1
- data/sub/eac_fs/spec/lib/eac_fs/{cache_spec.rb → storage_tree_spec.rb} +5 -5
- data/sub/eac_git/lib/eac_git/local/commit.rb +1 -0
- data/sub/eac_git/lib/eac_git/local/remotes.rb +20 -0
- data/sub/eac_git/lib/eac_git/version.rb +1 -1
- data/sub/eac_rest/Gemfile +5 -0
- data/sub/eac_rest/eac_rest.gemspec +18 -0
- data/sub/eac_rest/lib/eac_rest/api.rb +39 -0
- data/sub/eac_rest/lib/eac_rest/entity.rb +16 -0
- data/sub/eac_rest/lib/eac_rest/request.rb +74 -0
- data/sub/eac_rest/lib/eac_rest/response.rb +72 -0
- data/sub/eac_rest/lib/eac_rest/version.rb +5 -0
- data/sub/eac_rest/lib/eac_rest.rb +7 -0
- data/sub/eac_rest/spec/rubocop_spec.rb +3 -0
- data/sub/eac_rest/spec/spec_helper.rb +4 -0
- data/sub/eac_ruby_base0/eac_ruby_base0.gemspec +1 -1
- data/sub/eac_ruby_base0/lib/eac_ruby_base0/application.rb +9 -5
- data/sub/eac_ruby_base0/lib/eac_ruby_base0/runner.rb +10 -4
- data/sub/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb +21 -3
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_uri.rb +15 -0
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/if_exist.rb +10 -0
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/readlink_r.rb +11 -0
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/stub_speaker.rb +39 -0
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/speaker/receiver.rb +7 -0
- data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- metadata +27 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 7e2a7df849fd040b8e6fddad4e1c8507139926f0b587ceab796c1416fb9af873
|
4
|
+
data.tar.gz: 70eb055f94b37d37e05510563a654350137d0358283ad7d33a4d895110f1f2cc
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90be4e12df6cda16ffc88680a42a6d3dd118e96f97840cfb4a49b4418b76df1826485065ca069e3105d942136ed9273f03e9e15b340c4913abfeacae01ce1eba
|
7
|
+
data.tar.gz: 262a63d17a298911bef85e025b678779e8d7795e2376349128999fc50442275a0303bde419921e2799a3f8a9923366d3996c655ea032d909ca555f6b7d6892a5
|
data/lib/avm/launcher/context.rb
CHANGED
@@ -8,6 +8,7 @@ require 'avm/launcher/context/instance_discovery'
|
|
8
8
|
require 'avm/launcher/context/settings'
|
9
9
|
require 'avm/launcher/paths/logical'
|
10
10
|
require 'avm/launcher/project'
|
11
|
+
require 'avm/tools/self'
|
11
12
|
|
12
13
|
module Avm
|
13
14
|
module Launcher
|
@@ -15,10 +16,6 @@ module Avm
|
|
15
16
|
include ::EacRubyUtils::SimpleCache
|
16
17
|
enable_speaker
|
17
18
|
|
18
|
-
DEFAULT_PROJECTS_ROOT = '.'
|
19
|
-
DEFAULT_SETTINGS_FILE = ::File.join(ENV['HOME'], '.config', 'eac_launcher', 'settings.yml')
|
20
|
-
DEFAULT_CACHE_ROOT = ::File.join(ENV['HOME'], '.cache', 'eac_launcher')
|
21
|
-
|
22
19
|
class << self
|
23
20
|
attr_writer :current
|
24
21
|
|
@@ -34,6 +31,8 @@ module Avm
|
|
34
31
|
attr_reader :root, :settings, :cache_root
|
35
32
|
attr_accessor :publish_options, :recache, :instance_manager
|
36
33
|
|
34
|
+
CONFIG_PATH_PREFIX = 'launcher'
|
35
|
+
|
37
36
|
def initialize(options = {})
|
38
37
|
@options = options.with_indifferent_access
|
39
38
|
@root = ::Avm::Launcher::Paths::Logical.new(self, nil, build_option(:projects_root), '/')
|
@@ -59,15 +58,27 @@ module Avm
|
|
59
58
|
private
|
60
59
|
|
61
60
|
def build_option(key)
|
62
|
-
@options[key] ||
|
61
|
+
@options[key] || config_option(key) || default_option(key)
|
62
|
+
end
|
63
|
+
|
64
|
+
def config_option(key)
|
65
|
+
::Avm::Self::Instance.default.entry([CONFIG_PATH_PREFIX, key].join('.')).optional_value
|
63
66
|
end
|
64
67
|
|
65
|
-
def
|
66
|
-
|
68
|
+
def default_cache_root
|
69
|
+
::Avm::Tools::Self.application.cache_dir.join('launcher')
|
67
70
|
end
|
68
71
|
|
69
72
|
def default_option(key)
|
70
|
-
|
73
|
+
send("default_#{key}".underscore)
|
74
|
+
end
|
75
|
+
|
76
|
+
def default_projects_root
|
77
|
+
'.'
|
78
|
+
end
|
79
|
+
|
80
|
+
def default_settings_file
|
81
|
+
::Avm::Tools::Self.application.config_dir.join('launcher.yaml')
|
71
82
|
end
|
72
83
|
|
73
84
|
def projects_uncached
|
@@ -17,7 +17,7 @@ module Avm
|
|
17
17
|
|
18
18
|
def run
|
19
19
|
infov 'Cache path', fs_cache.content_path
|
20
|
-
infov 'Cached?', fs_cache.
|
20
|
+
infov 'Cached?', fs_cache.stored?
|
21
21
|
parser.gems_in_conflict.each do |gem_in_conflict|
|
22
22
|
print_gem_in_conflict(gem_in_conflict)
|
23
23
|
end
|
@@ -31,7 +31,7 @@ module Avm
|
|
31
31
|
end
|
32
32
|
|
33
33
|
def content_path
|
34
|
-
fs_cache.write(bundle_update) unless fs_cache.
|
34
|
+
fs_cache.write(bundle_update) unless fs_cache.stored? && parsed.last?
|
35
35
|
fs_cache.content_path
|
36
36
|
end
|
37
37
|
|
data/lib/avm/tools/version.rb
CHANGED
File without changes
|
File without changes
|
File without changes
|
File without changes
|
data/sub/avm/lib/avm/version.rb
CHANGED
@@ -16,6 +16,7 @@ Gem::Specification.new do |s|
|
|
16
16
|
s.add_dependency 'avm-eac_ubuntu_base0', '~> 0.2'
|
17
17
|
s.add_dependency 'curb', '~> 0.9.10'
|
18
18
|
s.add_dependency 'eac_fs', '~> 0.4'
|
19
|
+
s.add_dependency 'eac_rest', '~> 0.4'
|
19
20
|
s.add_dependency 'eac_ruby_utils', '~> 0.68'
|
20
21
|
|
21
22
|
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.4'
|
@@ -10,11 +10,13 @@ module Avm
|
|
10
10
|
class DataUnit < ::Avm::Data::Instance::Unit
|
11
11
|
common_constructor :instance
|
12
12
|
|
13
|
+
EXPORT_PATH = '/backup/export'
|
13
14
|
EXTENSION = '.tar'
|
15
|
+
IMPORT_PATH = '/backup/import.json'
|
14
16
|
|
15
17
|
def do_dump(data_path)
|
16
18
|
::File.open(data_path, 'wb') do |file|
|
17
|
-
file <<
|
19
|
+
file << export_request.response.body_data_or_raise
|
18
20
|
end
|
19
21
|
end
|
20
22
|
|
@@ -37,18 +39,12 @@ module Avm
|
|
37
39
|
true
|
38
40
|
end
|
39
41
|
|
40
|
-
def
|
41
|
-
|
42
|
+
def export_request
|
43
|
+
instance.rest_api.request(EXPORT_PATH)
|
42
44
|
end
|
43
45
|
|
44
46
|
def import_url
|
45
|
-
|
46
|
-
end
|
47
|
-
|
48
|
-
def url(path)
|
49
|
-
uri = ::Addressable::URI.parse(instance.read_entry('web.url')) + path
|
50
|
-
uri.query_values = { key: instance.read_entry('admin.api_key') }
|
51
|
-
uri.to_s
|
47
|
+
instance.rest_api.build_service_url(IMPORT_PATH).to_s
|
52
48
|
end
|
53
49
|
end
|
54
50
|
end
|
@@ -1,13 +1,17 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'addressable/uri'
|
3
4
|
require 'avm/eac_redmine_base0/data_unit'
|
4
5
|
require 'avm/eac_redmine_base0/instances/docker_image'
|
6
|
+
require 'avm/eac_redmine_base0/rest_api'
|
5
7
|
require 'avm/eac_webapp_base0/instance'
|
6
8
|
require 'avm/eac_rails_base1/instance'
|
7
9
|
|
8
10
|
module Avm
|
9
11
|
module EacRedmineBase0
|
10
12
|
class Instance < ::Avm::EacRailsBase1::Instance
|
13
|
+
enable_simple_cache
|
14
|
+
|
11
15
|
FILES_UNITS = { files: 'files' }.freeze
|
12
16
|
|
13
17
|
def docker_image_class
|
@@ -32,6 +36,22 @@ module Avm
|
|
32
36
|
}
|
33
37
|
)
|
34
38
|
end
|
39
|
+
|
40
|
+
# @return [Addressable::URI]
|
41
|
+
def root_url
|
42
|
+
r = ::Addressable::URI.parse(read_entry(::Avm::Instances::EntryKeys::WEB_URL))
|
43
|
+
r.query_values = nil
|
44
|
+
r
|
45
|
+
end
|
46
|
+
|
47
|
+
private
|
48
|
+
|
49
|
+
# @return [Avm::EacRedmineBase0::RestApi]
|
50
|
+
def rest_api_uncached
|
51
|
+
url = root_url
|
52
|
+
url.query_values = { key: read_entry('api.key') }
|
53
|
+
::Avm::EacRedmineBase0::RestApi.new(url)
|
54
|
+
end
|
35
55
|
end
|
36
56
|
end
|
37
57
|
end
|
@@ -7,8 +7,8 @@ module Avm
|
|
7
7
|
class Formatter
|
8
8
|
module Formats
|
9
9
|
class GenericPlain < ::Avm::Files::Formatter::Formats::Base
|
10
|
-
VALID_BASENAMES = %w[*.bat *.css.coffee *.java *.js *.rb *.scss *.sql *.tex
|
11
|
-
*.yaml].freeze
|
10
|
+
VALID_BASENAMES = %w[*.asm *.bat *.css.coffee *.java *.js *.rb *.s *.scss *.sql *.tex
|
11
|
+
*.url *.yml *.yaml].freeze
|
12
12
|
|
13
13
|
VALID_TYPES = %w[plain x-shellscript].freeze
|
14
14
|
|
@@ -3,17 +3,17 @@
|
|
3
3
|
require 'eac_fs/patches'
|
4
4
|
require 'eac_ruby_utils/fs/temp'
|
5
5
|
|
6
|
-
module
|
6
|
+
module EacFs
|
7
7
|
class CachedDownload
|
8
8
|
attr_reader :url, :fs_cache
|
9
9
|
|
10
10
|
def initialize(url, parent_fs_cache = nil)
|
11
11
|
@url = url
|
12
|
-
@fs_cache = (parent_fs_cache || fs_cache).child(url.parameterize)
|
12
|
+
@fs_cache = (parent_fs_cache || fs_cache).child(url.to_s.parameterize)
|
13
13
|
end
|
14
14
|
|
15
15
|
def assert
|
16
|
-
download unless fs_cache.
|
16
|
+
download unless fs_cache.stored?
|
17
17
|
end
|
18
18
|
|
19
19
|
def download
|
@@ -0,0 +1,21 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'eac_ruby_utils/context'
|
5
|
+
|
6
|
+
module EacFs
|
7
|
+
class Contexts
|
8
|
+
TYPES = %i[cache config data].freeze
|
9
|
+
|
10
|
+
class << self
|
11
|
+
TYPES.each do |type|
|
12
|
+
class_eval <<~CODE, __FILE__, __LINE__ + 1
|
13
|
+
# @return [EacRubyUtils::Context<EacFs::StorageTree>]
|
14
|
+
def #{type}
|
15
|
+
@#{type} ||= ::EacRubyUtils::Context.new
|
16
|
+
end
|
17
|
+
CODE
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
21
|
+
end
|
@@ -1,10 +1,15 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
-
require 'eac_fs/
|
3
|
+
require 'eac_fs/contexts'
|
4
4
|
|
5
5
|
class Module
|
6
|
-
|
7
|
-
|
8
|
-
|
6
|
+
::EacFs::Contexts::TYPES.each do |type|
|
7
|
+
method_name = "fs_#{type}"
|
8
|
+
class_eval <<~CODE, __FILE__, __LINE__ + 1
|
9
|
+
# @return [EacFs::StorageTree]
|
10
|
+
def #{method_name}
|
11
|
+
::EacFs::Contexts.#{type}.current.child('#{method_name}', *name.split('::'))
|
12
|
+
end
|
13
|
+
CODE
|
9
14
|
end
|
10
15
|
end
|
@@ -1,17 +1,27 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'eac_fs/contexts'
|
3
4
|
require 'eac_fs/patches/module/fs_cache'
|
4
5
|
|
5
6
|
class Object
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
7
|
+
::EacFs::Contexts::TYPES.each do |type|
|
8
|
+
class_eval <<~CODE, __FILE__, __LINE__ + 1
|
9
|
+
# @return [EacFs::StorageTree]
|
10
|
+
def fs_#{type}
|
11
|
+
oid = fs_object_id_by_type(:'#{type}')
|
12
|
+
oid = [oid.to_s] unless oid.is_a?(::Enumerable)
|
13
|
+
oid.inject(self.class.fs_#{type}) { |a, e| a.child(e.to_s) }
|
14
|
+
end
|
15
|
+
CODE
|
11
16
|
end
|
12
17
|
|
13
18
|
# @return [String, Array<String>]
|
14
|
-
def
|
19
|
+
def fs_object_id
|
15
20
|
raise 'Abstract method hit'
|
16
21
|
end
|
22
|
+
|
23
|
+
def fs_object_id_by_type(type)
|
24
|
+
method = "fs_#{type}_object_id"
|
25
|
+
respond_to?(method) ? send(method) : fs_object_id
|
26
|
+
end
|
17
27
|
end
|
@@ -4,9 +4,7 @@ require 'eac_ruby_utils/core_ext'
|
|
4
4
|
require 'fileutils'
|
5
5
|
|
6
6
|
module EacFs
|
7
|
-
class
|
8
|
-
enable_context
|
9
|
-
|
7
|
+
class StorageTree
|
10
8
|
CONTENT_FILE_NAME = '__content__'
|
11
9
|
|
12
10
|
attr_reader :path
|
@@ -18,19 +16,19 @@ module EacFs
|
|
18
16
|
end
|
19
17
|
|
20
18
|
def clear
|
21
|
-
return unless
|
19
|
+
return unless stored?
|
22
20
|
|
23
21
|
::File.unlink(content_path)
|
24
22
|
end
|
25
23
|
|
26
24
|
def read
|
27
|
-
return nil unless
|
25
|
+
return nil unless stored?
|
28
26
|
|
29
27
|
::File.read(content_path)
|
30
28
|
end
|
31
29
|
|
32
|
-
def
|
33
|
-
write(yield) unless
|
30
|
+
def read_or_store
|
31
|
+
write(yield) unless stored?
|
34
32
|
|
35
33
|
read
|
36
34
|
end
|
@@ -45,7 +43,7 @@ module EacFs
|
|
45
43
|
self.class.new(path, *child_path_parts)
|
46
44
|
end
|
47
45
|
|
48
|
-
def
|
46
|
+
def stored?
|
49
47
|
::File.exist?(content_path)
|
50
48
|
end
|
51
49
|
|
@@ -1,26 +1,26 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
3
|
require 'active_support/core_ext/object/blank'
|
4
|
-
require 'eac_fs/
|
4
|
+
require 'eac_fs/storage_tree'
|
5
5
|
|
6
|
-
RSpec.describe ::EacFs::
|
6
|
+
RSpec.describe ::EacFs::StorageTree do
|
7
7
|
let(:tmpdir) { ::Dir.mktmpdir }
|
8
8
|
let(:instance) { described_class.new(tmpdir, 'instance') }
|
9
9
|
|
10
10
|
it { expect(instance.read).to be_blank }
|
11
|
-
it { expect(instance.
|
11
|
+
it { expect(instance.stored?).to eq(false) }
|
12
12
|
|
13
13
|
context 'when instance is writed' do
|
14
14
|
before { instance.write('STUB') }
|
15
15
|
|
16
16
|
it { expect(instance.read).to eq('STUB') }
|
17
|
-
it { expect(instance.
|
17
|
+
it { expect(instance.stored?).to eq(true) }
|
18
18
|
|
19
19
|
context 'when instance is cleared' do
|
20
20
|
before { instance.clear }
|
21
21
|
|
22
22
|
it { expect(instance.read).to be_blank }
|
23
|
-
it { expect(instance.
|
23
|
+
it { expect(instance.stored?).to eq(false) }
|
24
24
|
end
|
25
25
|
end
|
26
26
|
|
@@ -13,6 +13,7 @@ module EacGit
|
|
13
13
|
author_name: '%an', author_email: '%ae', author_date: '%ai',
|
14
14
|
subject: '%s',
|
15
15
|
author_all: '%an <%ae>, %ai',
|
16
|
+
commit_hash: '%H', abbreviated_commit_hash: '%h',
|
16
17
|
commiter_name: '%cn', commiter_email: '%ce', commiter_date: '%ci',
|
17
18
|
commiter_all: '%cn <%ce>, %ci',
|
18
19
|
raw_body: '%B'
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'eac_git/local/remote'
|
5
|
+
|
6
|
+
module EacGit
|
7
|
+
class Local
|
8
|
+
module Remotes
|
9
|
+
def remote(name)
|
10
|
+
::EacGit::Local::Remote.new(self, name)
|
11
|
+
end
|
12
|
+
|
13
|
+
def remotes
|
14
|
+
command('remote').execute!.each_line.map(&:strip).reject(&:blank?).map do |name|
|
15
|
+
remote(name)
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
$LOAD_PATH.push File.expand_path('lib', __dir__)
|
4
|
+
|
5
|
+
require 'eac_rest/version'
|
6
|
+
|
7
|
+
Gem::Specification.new do |s|
|
8
|
+
s.name = 'eac_rest'
|
9
|
+
s.version = EacRest::VERSION
|
10
|
+
s.authors = ['Eduardo H. Bogoni']
|
11
|
+
s.summary = 'A REST helper for Ruby.'
|
12
|
+
|
13
|
+
s.files = Dir['{lib}/**/*']
|
14
|
+
|
15
|
+
s.add_dependency 'eac_ruby_utils', '~> 0.70'
|
16
|
+
|
17
|
+
s.add_development_dependency 'eac_ruby_gem_support', '~> 0.3'
|
18
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_rest/request'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
|
6
|
+
module EacRest
|
7
|
+
# Abstract methods
|
8
|
+
# * self.issue_get_url_suffix(provider_issue_id)
|
9
|
+
class Api
|
10
|
+
require_sub __FILE__, include_modules: true
|
11
|
+
common_constructor :root_url, :username, :password, default: [nil, nil]
|
12
|
+
|
13
|
+
def request(service_url_suffix, headers = {}, &body_data_proc)
|
14
|
+
r = ::EacRest::Request.new(build_service_url(service_url_suffix),
|
15
|
+
body_data_proc)
|
16
|
+
headers.each { |name, value| r = r.header(name, value) }
|
17
|
+
r = r.autenticate(username, password) if username.present?
|
18
|
+
r
|
19
|
+
end
|
20
|
+
|
21
|
+
def request_json(service_url_suffix, headers = {}, &body_data_proc)
|
22
|
+
request(service_url_suffix, headers.merge('Accept' => 'application/json')) do |body_data|
|
23
|
+
r = ::JSON.parse(body_data)
|
24
|
+
r = body_data_proc.call(r) if body_data_proc
|
25
|
+
r
|
26
|
+
end
|
27
|
+
end
|
28
|
+
|
29
|
+
# @return [Addressable::URI]
|
30
|
+
def build_service_url(suffix)
|
31
|
+
s = ::Addressable::URI.parse(suffix)
|
32
|
+
r = ::Addressable::URI.parse(root_url)
|
33
|
+
r.path += s.path
|
34
|
+
r.query_values = r.query_values(::Array).if_present([]) +
|
35
|
+
s.query_values(::Array).if_present([])
|
36
|
+
r
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -0,0 +1,16 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EacRest
|
6
|
+
class Entity
|
7
|
+
enable_simple_cache
|
8
|
+
common_constructor :api, :data
|
9
|
+
|
10
|
+
class << self
|
11
|
+
def from_array_data(api, array_data, *args)
|
12
|
+
array_data.map { |item_data| new(api, item_data, *args) }
|
13
|
+
end
|
14
|
+
end
|
15
|
+
end
|
16
|
+
end
|
@@ -0,0 +1,74 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'curb'
|
4
|
+
require 'eac_rest/response'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
require 'ostruct'
|
7
|
+
|
8
|
+
module EacRest
|
9
|
+
class Request
|
10
|
+
COMMON_MODIFIERS = %w[auth body_data verb].freeze
|
11
|
+
HASH_MODIFIERS = %w[header].freeze
|
12
|
+
MODIFIERS = COMMON_MODIFIERS + HASH_MODIFIERS.map(&:pluralize)
|
13
|
+
|
14
|
+
enable_immutable
|
15
|
+
immutable_accessor(*COMMON_MODIFIERS, type: :common)
|
16
|
+
immutable_accessor(*HASH_MODIFIERS, type: :hash)
|
17
|
+
|
18
|
+
enable_listable
|
19
|
+
lists.add_symbol :verb, :get, :delete, :options, :post, :put
|
20
|
+
|
21
|
+
common_constructor :url, :body_data_proc, default: [nil]
|
22
|
+
|
23
|
+
def autenticate(username, password)
|
24
|
+
auth(::OpenStruct.new(username: username, password: password))
|
25
|
+
end
|
26
|
+
|
27
|
+
def immutable_constructor_args
|
28
|
+
[url, body_data_proc]
|
29
|
+
end
|
30
|
+
|
31
|
+
def response
|
32
|
+
::EacRest::Response.new(build_curl, body_data_proc)
|
33
|
+
end
|
34
|
+
|
35
|
+
private
|
36
|
+
|
37
|
+
def build_curl
|
38
|
+
r = ::Curl::Easy.new(url)
|
39
|
+
MODIFIERS.each { |suffix| send("build_curl_#{suffix}", r) }
|
40
|
+
r
|
41
|
+
end
|
42
|
+
|
43
|
+
def build_curl_auth(curl)
|
44
|
+
auth.if_present do |a|
|
45
|
+
curl.http_auth_types = :basic
|
46
|
+
curl.username = a.username
|
47
|
+
curl.password = a.password
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def build_curl_body_data(curl)
|
52
|
+
www_form_body_data_encoded.if_present { |v| curl.post_body = v }
|
53
|
+
end
|
54
|
+
|
55
|
+
def build_curl_headers(curl)
|
56
|
+
curl.headers.merge!(headers)
|
57
|
+
end
|
58
|
+
|
59
|
+
def build_curl_verb(curl)
|
60
|
+
curl.set(
|
61
|
+
:customrequest,
|
62
|
+
verb.if_present(VERB_GET) { |v| self.class.lists.verb.value_validate!(v) }.to_s.upcase
|
63
|
+
)
|
64
|
+
end
|
65
|
+
|
66
|
+
def www_form_body_data_encoded
|
67
|
+
body_data.if_present do |v|
|
68
|
+
v = v.map { |k, vv| [k, vv] } if v.is_a?(::Hash)
|
69
|
+
v = URI.encode_www_form(v) if v.is_a?(::Array)
|
70
|
+
v.to_s
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
@@ -0,0 +1,72 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/core_ext/hash/conversions'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
require 'json'
|
6
|
+
|
7
|
+
module EacRest
|
8
|
+
class Response < ::StandardError
|
9
|
+
common_constructor :curl, :body_data_proc
|
10
|
+
|
11
|
+
def body_data
|
12
|
+
r = performed_curl.headers['Accept'].if_present(body_str) do |v|
|
13
|
+
method_name = "body_data_from_#{v.parameterize.underscore}"
|
14
|
+
respond_to?(method_name) ? send(method_name) : body_str
|
15
|
+
end
|
16
|
+
r = body_data_proc.call(r) if body_data_proc.present?
|
17
|
+
r
|
18
|
+
end
|
19
|
+
|
20
|
+
def body_data_or_raise
|
21
|
+
raise_unless_200
|
22
|
+
|
23
|
+
body_data
|
24
|
+
end
|
25
|
+
|
26
|
+
delegate :body_str, :headers, to: :performed_curl
|
27
|
+
|
28
|
+
def body_str_or_raise
|
29
|
+
raise_unless_200
|
30
|
+
|
31
|
+
body_str
|
32
|
+
end
|
33
|
+
|
34
|
+
def raise_unless_200
|
35
|
+
return nil if status == 200
|
36
|
+
|
37
|
+
raise self
|
38
|
+
end
|
39
|
+
|
40
|
+
def status
|
41
|
+
performed_curl.status.to_i
|
42
|
+
end
|
43
|
+
|
44
|
+
delegate :url, to: :curl
|
45
|
+
|
46
|
+
def to_s
|
47
|
+
"URL: #{url}\nStatus: #{status}\nBody:\n\n#{body_str}"
|
48
|
+
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def body_data_from_application_json
|
53
|
+
::JSON.parse(body_str)
|
54
|
+
end
|
55
|
+
|
56
|
+
def body_data_from_application_xml
|
57
|
+
Hash.from_xml(body_str)
|
58
|
+
end
|
59
|
+
|
60
|
+
def perform
|
61
|
+
@perform ||= begin
|
62
|
+
curl.perform || raise("CURL perform failed for #{url}")
|
63
|
+
true
|
64
|
+
end
|
65
|
+
end
|
66
|
+
|
67
|
+
def performed_curl
|
68
|
+
perform
|
69
|
+
curl
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
@@ -13,7 +13,7 @@ Gem::Specification.new do |s|
|
|
13
13
|
s.files = Dir['{lib}/**/*']
|
14
14
|
|
15
15
|
s.add_dependency 'eac_cli', '~> 0.26'
|
16
|
-
s.add_dependency 'eac_fs', '~> 0.
|
16
|
+
s.add_dependency 'eac_fs', '~> 0.10'
|
17
17
|
s.add_dependency 'eac_ruby_gems_utils', '~> 0.9', '~> 0.9.6'
|
18
18
|
s.add_dependency 'eac_ruby_utils', '~> 0.70'
|
19
19
|
|
@@ -3,7 +3,8 @@
|
|
3
3
|
require 'eac_cli/config'
|
4
4
|
require 'eac_config/envvars_node'
|
5
5
|
require 'eac_config/yaml_file_node'
|
6
|
-
require 'eac_fs/
|
6
|
+
require 'eac_fs/contexts'
|
7
|
+
require 'eac_fs/storage_tree'
|
7
8
|
require 'eac_ruby_base0/application_xdg'
|
8
9
|
require 'eac_ruby_gems_utils/gem'
|
9
10
|
require 'eac_ruby_utils/core_ext'
|
@@ -43,10 +44,13 @@ module EacRubyBase0
|
|
43
44
|
delegate "#{item}_xdg_env", "#{item}_dir", to: :app_xdg
|
44
45
|
end
|
45
46
|
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
47
|
+
::EacFs::Contexts::TYPES.each do |type|
|
48
|
+
class_eval <<CODE, __FILE__, __LINE__ + 1
|
49
|
+
# @return [EacFs::StorageTree]
|
50
|
+
def self_fs_#{type}
|
51
|
+
@self_fs_#{type} ||= ::EacFs::StorageTree.new(#{type}_dir.join('eac_fs'))
|
52
|
+
end
|
53
|
+
CODE
|
50
54
|
end
|
51
55
|
|
52
56
|
def home_dir
|
@@ -3,7 +3,7 @@
|
|
3
3
|
require 'eac_cli/core_ext'
|
4
4
|
require 'eac_cli/speaker'
|
5
5
|
require 'eac_config/node'
|
6
|
-
require 'eac_fs/
|
6
|
+
require 'eac_fs/contexts'
|
7
7
|
require 'eac_ruby_utils/speaker'
|
8
8
|
|
9
9
|
module EacRubyBase0
|
@@ -65,11 +65,10 @@ module EacRubyBase0
|
|
65
65
|
|
66
66
|
# @return [Array<EacRubyUtils::Struct>]
|
67
67
|
def available_contexts
|
68
|
-
[
|
69
|
-
[:cache, ::EacFs::Cache.context, -> { application.self_fs_cache }],
|
68
|
+
(filesystem_available_contexts + [
|
70
69
|
[:config, ::EacConfig::Node.context, -> { runner_context.call(:application).build_config }],
|
71
70
|
[:speaker, ::EacRubyUtils::Speaker.context, -> { build_speaker }]
|
72
|
-
].map { |row| available_context_row_to_struct(row) }
|
71
|
+
]).map { |row| available_context_row_to_struct(row) }
|
73
72
|
end
|
74
73
|
|
75
74
|
def available_context_row_to_struct(row)
|
@@ -82,5 +81,12 @@ module EacRubyBase0
|
|
82
81
|
options[:in_in] = FailIfRequestInput.new if parsed.no_input?
|
83
82
|
::EacCli::Speaker.new(options)
|
84
83
|
end
|
84
|
+
|
85
|
+
def filesystem_available_contexts
|
86
|
+
::EacFs::Contexts::TYPES.map do |type|
|
87
|
+
key = "fs_#{type}".to_sym
|
88
|
+
[key, ::EacFs::Contexts.send(type), -> { application.send("self_#{key}") }]
|
89
|
+
end
|
90
|
+
end
|
85
91
|
end
|
86
92
|
end
|
@@ -1,18 +1,34 @@
|
|
1
1
|
# frozen_string_literal: true
|
2
2
|
|
3
|
+
require 'eac_ruby_utils/listable'
|
3
4
|
require 'eac_ruby_utils/simple_cache'
|
4
5
|
|
5
6
|
module EacRubyUtils
|
6
7
|
module Envs
|
7
8
|
class Executable
|
9
|
+
include ::EacRubyUtils::Listable
|
8
10
|
include ::EacRubyUtils::SimpleCache
|
9
11
|
|
10
|
-
|
12
|
+
lists.add_symbol :option, :check_args, :auto_validate
|
13
|
+
|
14
|
+
DEFAULT_AUTO_VALIDATE = true
|
15
|
+
|
16
|
+
attr_reader :env, :name, :options
|
11
17
|
|
12
18
|
def initialize(env, name, *check_args)
|
13
19
|
@env = env
|
14
20
|
@name = name
|
15
|
-
|
21
|
+
self.options = self.class.lists.option.hash_keys_validate!(check_args.extract_options!)
|
22
|
+
options[OPTION_CHECK_ARGS] = check_args unless options.key?(OPTION_CHECK_ARGS)
|
23
|
+
options.freeze
|
24
|
+
end
|
25
|
+
|
26
|
+
def auto_validate?
|
27
|
+
options.key?(OPTION_AUTO_VALIDATE) ? options[OPTION_AUTO_VALIDATE] : DEFAULT_AUTO_VALIDATE
|
28
|
+
end
|
29
|
+
|
30
|
+
def check_args
|
31
|
+
options[OPTION_CHECK_ARGS]
|
16
32
|
end
|
17
33
|
|
18
34
|
def exist?
|
@@ -32,7 +48,7 @@ module EacRubyUtils
|
|
32
48
|
end
|
33
49
|
|
34
50
|
def command(*command_args)
|
35
|
-
validate!
|
51
|
+
validate! if auto_validate?
|
36
52
|
env.command(*executable_args, *command_args)
|
37
53
|
end
|
38
54
|
|
@@ -50,6 +66,8 @@ module EacRubyUtils
|
|
50
66
|
|
51
67
|
private
|
52
68
|
|
69
|
+
attr_writer :options
|
70
|
+
|
53
71
|
def exist_uncached
|
54
72
|
env.command(*executable_args, *check_args).execute!
|
55
73
|
true
|
@@ -0,0 +1,15 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'active_support/core_ext/object/blank'
|
4
|
+
require 'addressable/uri'
|
5
|
+
|
6
|
+
class Object
|
7
|
+
# Convert +self+ to String and then to Addressable::URI. Return nil if +self+ is +blank?+.
|
8
|
+
#
|
9
|
+
# @return [Addressable::URI]
|
10
|
+
def to_uri
|
11
|
+
return self if is_a?(::Addressable::URI)
|
12
|
+
|
13
|
+
to_s.blank? ? nil : ::Addressable::URI.parse(to_s)
|
14
|
+
end
|
15
|
+
end
|
@@ -0,0 +1,39 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/speaker/receiver'
|
4
|
+
|
5
|
+
module EacRubyUtils
|
6
|
+
module Rspec
|
7
|
+
class StubSpeaker
|
8
|
+
include ::EacRubyUtils::Speaker::Receiver
|
9
|
+
|
10
|
+
def error(_string); end
|
11
|
+
|
12
|
+
def fatal_error(string)
|
13
|
+
error(string)
|
14
|
+
raise('Fatal error')
|
15
|
+
end
|
16
|
+
|
17
|
+
# @see EacRubyUtils::Speaker::Sender.input
|
18
|
+
def input(_question, _options = {})
|
19
|
+
raise 'Input requested'
|
20
|
+
end
|
21
|
+
|
22
|
+
def info(_string); end
|
23
|
+
|
24
|
+
def infom(_string); end
|
25
|
+
|
26
|
+
def infov(*_args); end
|
27
|
+
|
28
|
+
def out(_string = ''); end
|
29
|
+
|
30
|
+
def puts(_string = ''); end
|
31
|
+
|
32
|
+
def success(_string); end
|
33
|
+
|
34
|
+
def title(_string); end
|
35
|
+
|
36
|
+
def warn(_string); end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end
|
@@ -5,8 +5,15 @@ require 'eac_ruby_utils/abstract_methods'
|
|
5
5
|
module EacRubyUtils
|
6
6
|
module Speaker
|
7
7
|
module Receiver
|
8
|
+
extend ::ActiveSupport::Concern
|
8
9
|
extend ::EacRubyUtils::AbstractMethods
|
9
10
|
|
11
|
+
module ClassMethods
|
12
|
+
def on(*args, &block)
|
13
|
+
::EacRubyUtils::Speaker.context.on(new(*args), &block)
|
14
|
+
end
|
15
|
+
end
|
16
|
+
|
10
17
|
def error(_string)
|
11
18
|
raise_abstract_method(__method__)
|
12
19
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avm-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.114.2
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Esquilo Azul Company
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-02-28 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha-parsers
|
@@ -72,14 +72,14 @@ dependencies:
|
|
72
72
|
requirements:
|
73
73
|
- - "~>"
|
74
74
|
- !ruby/object:Gem::Version
|
75
|
-
version: '0.
|
75
|
+
version: '0.4'
|
76
76
|
type: :runtime
|
77
77
|
prerelease: false
|
78
78
|
version_requirements: !ruby/object:Gem::Requirement
|
79
79
|
requirements:
|
80
80
|
- - "~>"
|
81
81
|
- !ruby/object:Gem::Version
|
82
|
-
version: '0.
|
82
|
+
version: '0.4'
|
83
83
|
- !ruby/object:Gem::Dependency
|
84
84
|
name: avm-eac_ruby_base1
|
85
85
|
requirement: !ruby/object:Gem::Requirement
|
@@ -292,8 +292,6 @@ files:
|
|
292
292
|
- lib/avm/launcher/context/instance_manager/cached_instance.rb
|
293
293
|
- lib/avm/launcher/context/instance_manager/cached_instances.rb
|
294
294
|
- lib/avm/launcher/context/settings.rb
|
295
|
-
- lib/avm/launcher/errors/base.rb
|
296
|
-
- lib/avm/launcher/errors/non_project.rb
|
297
295
|
- lib/avm/launcher/git.rb
|
298
296
|
- lib/avm/launcher/git/base.rb
|
299
297
|
- lib/avm/launcher/git/base/class_methods.rb
|
@@ -315,11 +313,9 @@ files:
|
|
315
313
|
- lib/avm/launcher/instances/settings.rb
|
316
314
|
- lib/avm/launcher/paths.rb
|
317
315
|
- lib/avm/launcher/paths/logical.rb
|
318
|
-
- lib/avm/launcher/paths/real.rb
|
319
316
|
- lib/avm/launcher/project.rb
|
320
317
|
- lib/avm/launcher/publish.rb
|
321
318
|
- lib/avm/launcher/publish/base.rb
|
322
|
-
- lib/avm/launcher/publish/check_result.rb
|
323
319
|
- lib/avm/launcher/ruby.rb
|
324
320
|
- lib/avm/launcher/ruby/gem.rb
|
325
321
|
- lib/avm/launcher/ruby/gem/build.rb
|
@@ -514,6 +510,7 @@ files:
|
|
514
510
|
- sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/deploy.rb
|
515
511
|
- sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instance.rb
|
516
512
|
- sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/instances/docker_image.rb
|
513
|
+
- sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/rest_api.rb
|
517
514
|
- sub/avm-eac_redmine_base0/lib/avm/eac_redmine_base0/version.rb
|
518
515
|
- sub/avm-eac_redmine_base0/spec/rubocop_spec.rb
|
519
516
|
- sub/avm-eac_redmine_base0/spec/spec_helper.rb
|
@@ -721,6 +718,10 @@ files:
|
|
721
718
|
- sub/avm/lib/avm/jobs.rb
|
722
719
|
- sub/avm/lib/avm/jobs/base.rb
|
723
720
|
- sub/avm/lib/avm/jobs/variables_source.rb
|
721
|
+
- sub/avm/lib/avm/launcher/errors/base.rb
|
722
|
+
- sub/avm/lib/avm/launcher/errors/non_project.rb
|
723
|
+
- sub/avm/lib/avm/launcher/paths/real.rb
|
724
|
+
- sub/avm/lib/avm/launcher/publish/check_result.rb
|
724
725
|
- sub/avm/lib/avm/path_string.rb
|
725
726
|
- sub/avm/lib/avm/registry.rb
|
726
727
|
- sub/avm/lib/avm/registry/base.rb
|
@@ -883,8 +884,8 @@ files:
|
|
883
884
|
- sub/eac_fs/Gemfile
|
884
885
|
- sub/eac_fs/eac_fs.gemspec
|
885
886
|
- sub/eac_fs/lib/eac_fs.rb
|
886
|
-
- sub/eac_fs/lib/eac_fs/cache.rb
|
887
887
|
- sub/eac_fs/lib/eac_fs/cached_download.rb
|
888
|
+
- sub/eac_fs/lib/eac_fs/contexts.rb
|
888
889
|
- sub/eac_fs/lib/eac_fs/file_info.rb
|
889
890
|
- sub/eac_fs/lib/eac_fs/logs.rb
|
890
891
|
- sub/eac_fs/lib/eac_fs/logs/file.rb
|
@@ -895,10 +896,11 @@ files:
|
|
895
896
|
- sub/eac_fs/lib/eac_fs/patches/object/fs_cache.rb
|
896
897
|
- sub/eac_fs/lib/eac_fs/patches/pathname.rb
|
897
898
|
- sub/eac_fs/lib/eac_fs/patches/pathname/info.rb
|
899
|
+
- sub/eac_fs/lib/eac_fs/storage_tree.rb
|
898
900
|
- sub/eac_fs/lib/eac_fs/traversable.rb
|
899
901
|
- sub/eac_fs/lib/eac_fs/traverser.rb
|
900
902
|
- sub/eac_fs/lib/eac_fs/version.rb
|
901
|
-
- sub/eac_fs/spec/lib/eac_fs/
|
903
|
+
- sub/eac_fs/spec/lib/eac_fs/storage_tree_spec.rb
|
902
904
|
- sub/eac_fs/spec/rubocop_spec.rb
|
903
905
|
- sub/eac_fs/spec/spec_helper.rb
|
904
906
|
- sub/eac_git/Gemfile
|
@@ -914,6 +916,7 @@ files:
|
|
914
916
|
- sub/eac_git/lib/eac_git/local/dirty_files.rb
|
915
917
|
- sub/eac_git/lib/eac_git/local/log.rb
|
916
918
|
- sub/eac_git/lib/eac_git/local/remote.rb
|
919
|
+
- sub/eac_git/lib/eac_git/local/remotes.rb
|
917
920
|
- sub/eac_git/lib/eac_git/local/subrepo.rb
|
918
921
|
- sub/eac_git/lib/eac_git/local/subrepo/config.rb
|
919
922
|
- sub/eac_git/lib/eac_git/remote.rb
|
@@ -1122,6 +1125,16 @@ files:
|
|
1122
1125
|
- sub/eac_git/vendor/git-subrepo/test/setup
|
1123
1126
|
- sub/eac_git/vendor/git-subrepo/test/status.t
|
1124
1127
|
- sub/eac_git/vendor/git-subrepo/test/submodule.t
|
1128
|
+
- sub/eac_rest/Gemfile
|
1129
|
+
- sub/eac_rest/eac_rest.gemspec
|
1130
|
+
- sub/eac_rest/lib/eac_rest.rb
|
1131
|
+
- sub/eac_rest/lib/eac_rest/api.rb
|
1132
|
+
- sub/eac_rest/lib/eac_rest/entity.rb
|
1133
|
+
- sub/eac_rest/lib/eac_rest/request.rb
|
1134
|
+
- sub/eac_rest/lib/eac_rest/response.rb
|
1135
|
+
- sub/eac_rest/lib/eac_rest/version.rb
|
1136
|
+
- sub/eac_rest/spec/rubocop_spec.rb
|
1137
|
+
- sub/eac_rest/spec/spec_helper.rb
|
1125
1138
|
- sub/eac_ruby_base0/Gemfile
|
1126
1139
|
- sub/eac_ruby_base0/eac_ruby_base0.gemspec
|
1127
1140
|
- sub/eac_ruby_base0/lib/eac_ruby_base0.rb
|
@@ -1283,10 +1296,13 @@ files:
|
|
1283
1296
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_present.rb
|
1284
1297
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/if_respond.rb
|
1285
1298
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_pathname.rb
|
1299
|
+
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_uri.rb
|
1286
1300
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname.rb
|
1287
1301
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/basename_sub.rb
|
1302
|
+
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/if_exist.rb
|
1288
1303
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/mkpath_s.rb
|
1289
1304
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/parent_n.rb
|
1305
|
+
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/readlink_r.rb
|
1290
1306
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp.rb
|
1291
1307
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/if_match.rb
|
1292
1308
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/to_parser.rb
|
@@ -1303,6 +1319,7 @@ files:
|
|
1303
1319
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb
|
1304
1320
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/conditionals.rb
|
1305
1321
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup_manager.rb
|
1322
|
+
- sub/eac_ruby_utils/lib/eac_ruby_utils/rspec/stub_speaker.rb
|
1306
1323
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/ruby.rb
|
1307
1324
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/command.rb
|
1308
1325
|
- sub/eac_ruby_utils/lib/eac_ruby_utils/ruby/on_clean_environment.rb
|