ehbrs-tools 0.20.0 → 0.21.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/ehbrs/patches/object/template.rb +2 -2
- data/lib/ehbrs/runner/cooking_book/build.rb +20 -2
- data/lib/ehbrs/runner/fs/used_space.rb +1 -1
- data/lib/ehbrs/runner/videos/probe.rb +2 -2
- data/lib/ehbrs/tools/version.rb +1 -1
- data/lib/ehbrs/videos/convert_job.rb +1 -1
- data/lib/ehbrs/videos/series/rename/line_result.rb +1 -1
- data/lib/ehbrs/videos/unsupported/check_support.rb +2 -1
- data/lib/ehbrs/videos/unsupported/search.rb +1 -1
- data/lib/ehbrs/videos/unsupported/track.rb +1 -1
- data/vendor/aranha-selenium/lib/aranha/selenium/driver_factory/base.rb +8 -0
- data/vendor/aranha-selenium/lib/aranha/selenium/driver_factory/chrome.rb +10 -5
- data/vendor/aranha-selenium/lib/aranha/selenium/driver_factory/firefox.rb +25 -11
- data/vendor/aranha-selenium/lib/aranha/selenium/version.rb +1 -1
- data/vendor/eac_cli/eac_cli.gemspec +5 -2
- data/vendor/eac_cli/lib/eac_cli/default_runner.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/definition/base_option.rb +5 -1
- data/vendor/eac_cli/lib/eac_cli/definition/help_formatter.rb +2 -2
- data/vendor/eac_cli/lib/eac_cli/docopt/doc_builder.rb +4 -2
- data/vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb +3 -3
- data/vendor/eac_cli/lib/eac_cli/docopt/runner_extension.rb +2 -2
- data/vendor/eac_cli/lib/eac_cli/docopt_runner.rb +43 -0
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/_class_methods.rb +16 -0
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/_doc.rb +23 -0
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/_settings.rb +17 -0
- data/vendor/eac_cli/lib/eac_cli/docopt_runner/_subcommands.rb +152 -0
- data/vendor/eac_cli/lib/eac_cli/old_configs.rb +36 -0
- data/vendor/eac_cli/lib/eac_cli/old_configs/entry_reader.rb +80 -0
- data/vendor/eac_cli/lib/eac_cli/old_configs/password_entry_reader.rb +16 -0
- data/vendor/eac_cli/lib/eac_cli/old_configs/read_entry_options.rb +44 -0
- data/vendor/eac_cli/lib/eac_cli/old_configs/store_passwords_entry_reader.rb +25 -0
- data/vendor/eac_cli/lib/eac_cli/parser/alternative/short_options.rb +4 -2
- data/vendor/eac_cli/lib/eac_cli/patches/module.rb +4 -0
- data/vendor/eac_cli/lib/eac_cli/patches/module/speaker.rb +10 -0
- data/vendor/eac_cli/lib/eac_cli/patches/object/runner_with.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/runner/context.rb +2 -1
- data/vendor/eac_cli/lib/eac_cli/runner/instance_methods.rb +8 -1
- data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb +5 -1
- data/vendor/eac_cli/lib/eac_cli/runner_with/subcommands/definition_concern.rb +10 -0
- data/vendor/eac_cli/lib/eac_cli/speaker.rb +131 -0
- data/vendor/eac_cli/lib/eac_cli/speaker/_class_methods.rb +37 -0
- data/vendor/eac_cli/lib/eac_cli/speaker/_constants.rb +12 -0
- data/vendor/eac_cli/lib/eac_cli/speaker/list.rb +61 -0
- data/vendor/eac_cli/lib/eac_cli/speaker/node.rb +24 -0
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_cli/spec/lib/eac_cli/docopt/runner_extension_spec.rb +1 -1
- data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/console → eac_cli/spec/lib/eac_cli}/docopt_runner_spec.rb +5 -5
- data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/console/configs_spec.rb → eac_cli/spec/lib/eac_cli/old_configs_spec.rb} +2 -2
- data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +1 -1
- data/vendor/{eac_ruby_utils/spec/lib/eac_ruby_utils/console → eac_cli/spec/lib/eac_cli}/speaker_spec.rb +2 -2
- data/vendor/eac_cli/spec/lib/module/speaker_spec.rb +13 -0
- data/vendor/eac_cli/spec/rubocop_spec.rb +1 -5
- data/vendor/eac_cli/spec/spec_helper.rb +3 -0
- data/vendor/eac_docker/eac_docker.gemspec +3 -2
- data/vendor/eac_docker/lib/eac_docker/images/templatized.rb +1 -0
- data/vendor/eac_docker/lib/eac_docker/version.rb +1 -1
- data/vendor/eac_docker/spec/lib/eac_docker/images/templatized_spec.rb +2 -1
- data/vendor/eac_docker/spec/rubocop_spec.rb +1 -5
- data/vendor/eac_docker/spec/spec_helper.rb +3 -0
- data/vendor/eac_ruby_base0/eac_ruby_base0.gemspec +4 -4
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/core_ext.rb +4 -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 +3 -5
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/confirmation.rb +36 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/input.rb +36 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/output.rb +58 -0
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
- data/vendor/eac_ruby_base0/spec/lib/eac_ruby_base0/runner_with/confirmation_spec.rb +42 -0
- data/vendor/eac_ruby_base0/spec/lib/eac_ruby_base0/runner_with/output_spec.rb +81 -0
- data/vendor/eac_ruby_base0/spec/rubocop_spec.rb +1 -5
- data/vendor/eac_ruby_base0/spec/spec_helper.rb +3 -0
- data/vendor/eac_ruby_utils/eac_ruby_utils.gemspec +2 -3
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command.rb +10 -5
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/filesystem_cache.rb +6 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/logs.rb +63 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/inflector.rb +9 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/listable/list.rb +3 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/kernel/nyi.rb +4 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/common_concern.rb +0 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/regexp/to_parser.rb +10 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/string/inflector.rb +4 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/regexp_parser.rb +34 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/conditional.rb +1 -4
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/settings_provider.rb +10 -29
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/settings_provider/setting_value.rb +69 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/simple_cache.rb +18 -5
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/settings_provider_spec.rb +8 -0
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/simple_cache_spec.rb +9 -0
- data/vendor/eac_ruby_utils/spec/rubocop_check_spec.rb +1 -5
- data/vendor/eac_ruby_utils/spec/spec_helper.rb +3 -0
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/convert_job.rb +1 -1
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/files_list.rb +1 -1
- metadata +51 -58
- data/vendor/eac_cli/lib/eac_cli/runner_with/output_file.rb +0 -30
- data/vendor/eac_cli/spec/lib/eac_cli/runner_with/output_file_spec.rb +0 -53
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/runner_with/confirmable.rb +0 -21
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/configs.rb +0 -74
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/base.rb +0 -43
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/configs/file.rb +0 -47
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console.rb +0 -5
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs.rb +0 -38
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs/entry_reader.rb +0 -81
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs/password_entry_reader.rb +0 -18
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs/read_entry_options.rb +0 -46
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/configs/store_passwords_entry_reader.rb +0 -27
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner.rb +0 -45
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner/_class_methods.rb +0 -18
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner/_doc.rb +0 -25
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner/_settings.rb +0 -19
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/docopt_runner/_subcommands.rb +0 -154
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker.rb +0 -133
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_class_methods.rb +0 -39
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/_constants.rb +0 -14
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/list.rb +0 -63
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/console/speaker/node.rb +0 -26
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/console_speaker.rb +0 -10
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/template.rb +0 -10
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/object/template.rb +0 -9
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash.rb +0 -56
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/entry_key_error.rb +0 -8
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/node.rb +0 -67
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/paths_hash/path_search.rb +0 -39
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates.rb +0 -9
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/directory.rb +0 -110
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/file.rb +0 -50
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/searcher.rb +0 -55
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_not_found_error.rb +0 -7
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers.rb +0 -25
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/base.rb +0 -23
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/entries_reader.rb +0 -25
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/generic.rb +0 -25
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/hash.rb +0 -29
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/configs_spec.rb +0 -46
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/module/console_speaker_spec.rb +0 -13
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/object/template_spec.rb +0 -23
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/paths_hash_spec.rb +0 -88
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/templates/file_spec.rb +0 -35
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/templates/file_spec_files/expected_content +0 -2
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/templates/file_spec_files/source.template +0 -2
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/templates/searcher_spec.rb +0 -30
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/templates/searcher_spec_files/path1/subdir1/file1.template +0 -1
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/templates/searcher_spec_files/path1/subdir1/file2 +0 -1
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/templates/searcher_spec_files/path2/subdir1/file3.template +0 -1
@@ -1,26 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/patches/object/if_present'
|
4
|
-
require 'eac_ruby_utils/console/speaker/_constants'
|
5
|
-
|
6
|
-
module EacRubyUtils
|
7
|
-
module Console
|
8
|
-
module Speaker
|
9
|
-
class Node
|
10
|
-
attr_accessor :stdin, :stdout, :stderr, :stderr_line_prefix
|
11
|
-
|
12
|
-
def initialize(parent = nil)
|
13
|
-
self.stdin = parent.if_present(::EacRubyUtils::Console::Speaker::STDIN, &:stdin)
|
14
|
-
self.stdout = parent.if_present(::EacRubyUtils::Console::Speaker::STDOUT, &:stdout)
|
15
|
-
self.stderr = parent.if_present(::EacRubyUtils::Console::Speaker::STDERR, &:stderr)
|
16
|
-
self.stderr_line_prefix = parent.if_present('', &:stderr_line_prefix)
|
17
|
-
end
|
18
|
-
|
19
|
-
def configure
|
20
|
-
yield(self)
|
21
|
-
self
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
@@ -1,10 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'active_support/core_ext/string/inflections'
|
4
|
-
require 'eac_ruby_utils/templates/searcher'
|
5
|
-
|
6
|
-
class Module
|
7
|
-
def template
|
8
|
-
@template ||= ::EacRubyUtils::Templates::Searcher.default.template(name.underscore)
|
9
|
-
end
|
10
|
-
end
|
@@ -1,56 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
4
|
-
|
5
|
-
module EacRubyUtils
|
6
|
-
class PathsHash
|
7
|
-
require_sub __FILE__
|
8
|
-
|
9
|
-
class << self
|
10
|
-
def parse_entry_key(entry_key)
|
11
|
-
r = entry_key.to_s.strip
|
12
|
-
raise ::EacRubyUtils::PathsHash::EntryKeyError, 'Entry key cannot start or end with dot' if
|
13
|
-
r.start_with?('.') || r.end_with?('.')
|
14
|
-
|
15
|
-
r = r.split('.').map(&:strip)
|
16
|
-
if r.empty?
|
17
|
-
raise ::EacRubyUtils::PathsHash::EntryKeyError, "Entry key \"#{entry_key}\" is empty"
|
18
|
-
end
|
19
|
-
return r.map(&:to_sym) unless r.any?(&:blank?)
|
20
|
-
|
21
|
-
raise ::EacRubyUtils::PathsHash::EntryKeyError,
|
22
|
-
"Entry key \"#{entry_key}\" has at least one blank part"
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
attr_reader :root
|
27
|
-
|
28
|
-
def initialize(source_hash = {})
|
29
|
-
@root = Node.new(source_hash)
|
30
|
-
end
|
31
|
-
|
32
|
-
def [](entry_key)
|
33
|
-
root.read_entry(::EacRubyUtils::PathsHash::PathSearch.parse_entry_key(entry_key))
|
34
|
-
end
|
35
|
-
|
36
|
-
def []=(entry_key, entry_value)
|
37
|
-
root.write_entry(
|
38
|
-
::EacRubyUtils::PathsHash::PathSearch.parse_entry_key(entry_key), entry_value
|
39
|
-
)
|
40
|
-
end
|
41
|
-
|
42
|
-
def fetch(entry_key)
|
43
|
-
root.fetch(::EacRubyUtils::PathsHash::PathSearch.parse_entry_key(entry_key))
|
44
|
-
end
|
45
|
-
|
46
|
-
def key?(entry_key)
|
47
|
-
root.entry?(::EacRubyUtils::PathsHash::PathSearch.parse_entry_key(entry_key))
|
48
|
-
end
|
49
|
-
|
50
|
-
delegate :to_h, to: :root
|
51
|
-
|
52
|
-
private
|
53
|
-
|
54
|
-
attr_reader :data
|
55
|
-
end
|
56
|
-
end
|
@@ -1,67 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
4
|
-
require 'eac_ruby_utils/paths_hash/entry_key_error'
|
5
|
-
|
6
|
-
module EacRubyUtils
|
7
|
-
class PathsHash
|
8
|
-
class Node
|
9
|
-
PATH_SEARCH_UNENDED_ERROR_MESSAGE = 'Path search is not a Node and is not ended'
|
10
|
-
|
11
|
-
def initialize(source_hash)
|
12
|
-
source_hash.assert_argument(Hash, 'source_hash')
|
13
|
-
@data = source_hash.map { |k, v| [k.to_sym, v.is_a?(Hash) ? Node.new(v) : v] }.to_h
|
14
|
-
end
|
15
|
-
|
16
|
-
def entry?(path_search)
|
17
|
-
return false unless data.key?(path_search.cursor)
|
18
|
-
return true if path_search.ended?
|
19
|
-
return data.fetch(path_search.cursor).entry?(path_search.succeeding) if
|
20
|
-
data.fetch(path_search.cursor).is_a?(Node)
|
21
|
-
|
22
|
-
false # Paths continue and there is not available nodes
|
23
|
-
end
|
24
|
-
|
25
|
-
def fetch(path_search)
|
26
|
-
if data.key?(path_search.cursor)
|
27
|
-
node = data.fetch(path_search.cursor)
|
28
|
-
return (node.is_a?(Node) ? node.to_h : node) if path_search.ended?
|
29
|
-
return nil if node.blank?
|
30
|
-
return node.fetch(path_search.succeeding) if node.is_a?(Node)
|
31
|
-
end
|
32
|
-
|
33
|
-
path_search.raise_error(PATH_SEARCH_UNENDED_ERROR_MESSAGE)
|
34
|
-
end
|
35
|
-
|
36
|
-
def to_h
|
37
|
-
data.map { |k, v| [k, v.is_a?(Node) ? v.to_h : v] }.to_h
|
38
|
-
end
|
39
|
-
|
40
|
-
def read_entry(path_search)
|
41
|
-
node = data[path_search.cursor]
|
42
|
-
return (node.is_a?(Node) ? node.to_h : node) if path_search.ended?
|
43
|
-
return nil if node.blank?
|
44
|
-
return node.read_entry(path_search.succeeding) if node.is_a?(Node)
|
45
|
-
|
46
|
-
path_search.raise_error(PATH_SEARCH_UNENDED_ERROR_MESSAGE)
|
47
|
-
end
|
48
|
-
|
49
|
-
def write_entry(path_search, value)
|
50
|
-
if path_search.ended?
|
51
|
-
data[path_search.cursor] = value.is_a?(Hash) ? self.class.new(value) : value
|
52
|
-
else
|
53
|
-
assert_data_node(path_search.cursor).write_entry(path_search.succeeding, value)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
private
|
58
|
-
|
59
|
-
attr_reader :data
|
60
|
-
|
61
|
-
def assert_data_node(key)
|
62
|
-
data[key] = self.class.new({}) unless data[key].is_a?(Node)
|
63
|
-
data[key]
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
@@ -1,39 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module EacRubyUtils
|
4
|
-
class PathsHash
|
5
|
-
class PathSearch
|
6
|
-
class << self
|
7
|
-
def parse_entry_key(string)
|
8
|
-
new(::EacRubyUtils::PathsHash.parse_entry_key(string), [])
|
9
|
-
end
|
10
|
-
end
|
11
|
-
|
12
|
-
common_constructor :current, :previous do
|
13
|
-
self.current = current.assert_argument(Array, 'current').freeze
|
14
|
-
self.previous = previous.assert_argument(Array, 'previous')
|
15
|
-
raise ::EacRubyUtils::PathsHash::EntryKeyError, 'Current is empty' if current.empty?
|
16
|
-
end
|
17
|
-
|
18
|
-
def cursor
|
19
|
-
current.first
|
20
|
-
end
|
21
|
-
|
22
|
-
def ended?
|
23
|
-
current.count <= 1
|
24
|
-
end
|
25
|
-
|
26
|
-
def raise_error(message)
|
27
|
-
raise ::EacRubyUtils::PathsHash::EntryKeyError, "#{message} (#{self})"
|
28
|
-
end
|
29
|
-
|
30
|
-
def succeeding
|
31
|
-
self.class.new(current[1..-1], previous + [cursor])
|
32
|
-
end
|
33
|
-
|
34
|
-
def to_s
|
35
|
-
"#{self.class}[Current: #{current}, Previous: #{previous}]"
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
39
|
-
end
|
@@ -1,110 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/templates/file'
|
4
|
-
|
5
|
-
module EacRubyUtils
|
6
|
-
module Templates
|
7
|
-
class Directory
|
8
|
-
TEMPLATE_EXTNAME = '.template'
|
9
|
-
|
10
|
-
attr_reader :path
|
11
|
-
|
12
|
-
def initialize(path)
|
13
|
-
@path = path.is_a?(::Pathname) ? path : ::Pathname.new(path.to_s)
|
14
|
-
end
|
15
|
-
|
16
|
-
def apply(variables_source, directory)
|
17
|
-
TemplateNode.new(self, '.', directory, variables_source).apply
|
18
|
-
end
|
19
|
-
|
20
|
-
def child(subpath)
|
21
|
-
child_path = ::File.join(path, subpath)
|
22
|
-
return ::EacRubyUtils::Templates::File.new(child_path) if ::File.file?(child_path)
|
23
|
-
return ::EacRubyUtils::Templates::Directory.new(child_path) if ::File.directory?(child_path)
|
24
|
-
|
25
|
-
raise "Child \"#{subpath}\" from \"#{path}\" not found"
|
26
|
-
end
|
27
|
-
|
28
|
-
def children
|
29
|
-
path.children.map do |path_child|
|
30
|
-
child(path_child.basename.to_path)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
|
34
|
-
private
|
35
|
-
|
36
|
-
def apply_fs_object(source_relative, target)
|
37
|
-
if ::File.directory?(source_absolute(source_relative))
|
38
|
-
apply_directory(source_relative, target)
|
39
|
-
elsif ::File.file?(source_absolute(source_relative))
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def source_absolute(source_relative)
|
44
|
-
::File.expand_path(source_relative, path)
|
45
|
-
end
|
46
|
-
|
47
|
-
class TemplateNode
|
48
|
-
attr_reader :source_directory, :source_relative, :target_root_directory, :variables_source
|
49
|
-
|
50
|
-
def initialize(source_directory, source_relative, target_root_directory, variables_source)
|
51
|
-
@source_directory = source_directory
|
52
|
-
@source_relative = source_relative
|
53
|
-
@target_root_directory = target_root_directory
|
54
|
-
@variables_source = variables_source
|
55
|
-
end
|
56
|
-
|
57
|
-
def apply
|
58
|
-
if file?
|
59
|
-
apply_file
|
60
|
-
elsif directory?
|
61
|
-
apply_directory
|
62
|
-
else
|
63
|
-
raise "Unknown filesystem type: #{source_absolute}"
|
64
|
-
end
|
65
|
-
end
|
66
|
-
|
67
|
-
private
|
68
|
-
|
69
|
-
def apply_directory
|
70
|
-
::FileUtils.mkdir_p(target_absolute)
|
71
|
-
Dir.entries(source_absolute).each do |entry|
|
72
|
-
child(entry).apply unless %w[. ..].include?(entry)
|
73
|
-
end
|
74
|
-
end
|
75
|
-
|
76
|
-
def apply_file
|
77
|
-
if ::File.extname(source_absolute) == TEMPLATE_EXTNAME
|
78
|
-
::EacRubyUtils::Templates::File.new(source_absolute).apply_to_file(
|
79
|
-
variables_source, target_absolute
|
80
|
-
)
|
81
|
-
else
|
82
|
-
::FileUtils.cp(source_absolute, target_absolute)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
|
86
|
-
def child(entry)
|
87
|
-
TemplateNode.new(source_directory, ::File.join(source_relative, entry),
|
88
|
-
target_root_directory, variables_source)
|
89
|
-
end
|
90
|
-
|
91
|
-
def file?
|
92
|
-
::File.file?(source_absolute)
|
93
|
-
end
|
94
|
-
|
95
|
-
def directory?
|
96
|
-
::File.directory?(source_absolute)
|
97
|
-
end
|
98
|
-
|
99
|
-
def source_absolute
|
100
|
-
::File.expand_path(source_relative, source_directory.path)
|
101
|
-
end
|
102
|
-
|
103
|
-
def target_absolute
|
104
|
-
::File.expand_path(source_relative, target_root_directory)
|
105
|
-
.gsub(/#{::Regexp.quote(TEMPLATE_EXTNAME)}\z/, '')
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end
|
109
|
-
end
|
110
|
-
end
|
@@ -1,50 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
4
|
-
require 'eac_ruby_utils/templates/variable_providers'
|
5
|
-
|
6
|
-
module EacRubyUtils
|
7
|
-
module Templates
|
8
|
-
class File
|
9
|
-
VARIABLE_DELIMITER = ::Regexp.quote('%%')
|
10
|
-
VARIABLE_PATTERN = /#{VARIABLE_DELIMITER}([a-z0-9\._]*)#{VARIABLE_DELIMITER}/i.freeze
|
11
|
-
|
12
|
-
enable_simple_cache
|
13
|
-
common_constructor :path do
|
14
|
-
self.path = path.to_pathname
|
15
|
-
end
|
16
|
-
|
17
|
-
# +variables_provider+ A [Hash] or object which responds to +read_entry(entry_name)+.
|
18
|
-
def apply(variables_source)
|
19
|
-
variables_provider = ::EacRubyUtils::Templates::VariableProviders.build(variables_source)
|
20
|
-
variables.inject(content) do |a, e|
|
21
|
-
a.gsub(variable_pattern(e), variables_provider.variable_value(e).to_s)
|
22
|
-
end
|
23
|
-
end
|
24
|
-
|
25
|
-
def apply_to_file(variables_source, output_file_path)
|
26
|
-
output_file_path.to_pathname.write(apply(variables_source))
|
27
|
-
end
|
28
|
-
|
29
|
-
private
|
30
|
-
|
31
|
-
def variables_uncached
|
32
|
-
content.scan(VARIABLE_PATTERN).map(&:first).map do |name|
|
33
|
-
sanitize_variable_name(name)
|
34
|
-
end.to_set
|
35
|
-
end
|
36
|
-
|
37
|
-
def content_uncached
|
38
|
-
path.read
|
39
|
-
end
|
40
|
-
|
41
|
-
def sanitize_variable_name(variable_name)
|
42
|
-
variable_name.to_s.downcase
|
43
|
-
end
|
44
|
-
|
45
|
-
def variable_pattern(name)
|
46
|
-
/#{VARIABLE_DELIMITER}#{::Regexp.quote(name)}#{VARIABLE_DELIMITER}/i
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
end
|
@@ -1,55 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'active_support/core_ext/object/blank'
|
4
|
-
require 'eac_ruby_utils/templates/directory'
|
5
|
-
require 'eac_ruby_utils/templates/file'
|
6
|
-
|
7
|
-
module EacRubyUtils
|
8
|
-
module Templates
|
9
|
-
class Searcher
|
10
|
-
class << self
|
11
|
-
def default
|
12
|
-
@default ||= new
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
|
-
def template(subpath, required = true)
|
17
|
-
path = template_path(subpath)
|
18
|
-
if path.blank?
|
19
|
-
return nil unless required
|
20
|
-
|
21
|
-
raise_template_not_found(subpath)
|
22
|
-
end
|
23
|
-
return ::EacRubyUtils::Templates::File.new(path) if ::File.file?(path)
|
24
|
-
return ::EacRubyUtils::Templates::Directory.new(path) if ::File.directory?(path)
|
25
|
-
|
26
|
-
raise 'Invalid branching'
|
27
|
-
end
|
28
|
-
|
29
|
-
# @return The absolute path of template if found, +nil+ otherwise.
|
30
|
-
def template_path(subpath)
|
31
|
-
included_paths.each do |included_path|
|
32
|
-
r = search_template_in_included_path(included_path, subpath)
|
33
|
-
return r if r
|
34
|
-
end
|
35
|
-
nil
|
36
|
-
end
|
37
|
-
|
38
|
-
def included_paths
|
39
|
-
@included_paths ||= ::Set.new
|
40
|
-
end
|
41
|
-
|
42
|
-
private
|
43
|
-
|
44
|
-
def raise_template_not_found(subpath)
|
45
|
-
raise "Template not found for subpath \"#{subpath}\"" \
|
46
|
-
" (Included paths: #{included_paths.to_a.join(::File::PATH_SEPARATOR)})"
|
47
|
-
end
|
48
|
-
|
49
|
-
def search_template_in_included_path(included_path, subpath)
|
50
|
-
path = ::File.join(included_path, subpath)
|
51
|
-
::File.exist?(path) ? path : nil
|
52
|
-
end
|
53
|
-
end
|
54
|
-
end
|
55
|
-
end
|