ehbrs-tools 0.16.1 → 0.16.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/lib/ehbrs/runner/videos/probe.rb +3 -3
- data/lib/ehbrs/tools/version.rb +1 -1
- data/lib/ehbrs/videos/file.rb +4 -8
- data/lib/ehbrs/videos/track.rb +20 -10
- data/lib/ehbrs/videos/unsupported/checks/codec_extra_unlisted.rb +2 -0
- data/lib/ehbrs/videos/unsupported/checks/codec_extra_unsupported.rb +2 -0
- data/lib/ehbrs/videos/unsupported/checks/codec_unlisted.rb +2 -0
- data/lib/ehbrs/videos/unsupported/checks/codec_unsupported.rb +2 -0
- data/lib/ehbrs/videos/unsupported/checks/invalid_extension.rb +2 -0
- data/lib/ehbrs/videos/unsupported/fixes/supported_codec.rb +1 -1
- data/lib/ehbrs/videos/unsupported/profiles/base.rb +17 -3
- data/lib/ehbrs/videos/unsupported/profiles/philco.rb +5 -4
- data/vendor/aranha-parsers/lib/aranha/parsers/spec/source_target_fixtures_example.rb +10 -2
- data/vendor/aranha-parsers/lib/aranha/parsers/version.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/definition.rb +34 -39
- data/vendor/eac_cli/lib/eac_cli/definition/alternative.rb +83 -0
- data/vendor/eac_cli/lib/eac_cli/docopt/doc_builder.rb +18 -40
- data/vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb +50 -0
- data/vendor/eac_cli/lib/eac_cli/parser.rb +21 -3
- data/vendor/eac_cli/lib/eac_cli/parser/alternative.rb +88 -0
- data/vendor/eac_cli/lib/eac_cli/parser/alternative/argv.rb +17 -0
- data/vendor/eac_cli/lib/eac_cli/parser/alternative/double_dash.rb +24 -0
- data/vendor/eac_cli/lib/eac_cli/parser/alternative/options.rb +58 -0
- data/vendor/eac_cli/lib/eac_cli/parser/alternative/positionals.rb +30 -0
- data/vendor/eac_cli/lib/eac_cli/runner.rb +2 -2
- data/vendor/eac_cli/lib/eac_cli/runner_with/help.rb +1 -1
- data/vendor/eac_cli/lib/eac_cli/runner_with/output_file.rb +5 -1
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_cli/spec/lib/eac_cli/definition/alternative_spec.rb +14 -0
- data/vendor/eac_cli/spec/lib/eac_cli/docopt/runner_extension_spec.rb +10 -0
- data/vendor/eac_cli/spec/lib/eac_cli/parser/alternative_spec.rb +140 -0
- data/vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb +14 -5
- data/vendor/eac_cli/spec/lib/eac_cli/runner_with/output_file_spec.rb +53 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/abstract_methods.rb +60 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/abstract_methods.rb +10 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb +3 -2
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/abstract_methods_spec.rb +28 -0
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/version.rb +1 -1
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb +30 -2
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/convert_job.rb +91 -0
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/stream.rb +51 -0
- metadata +17 -7
- data/vendor/eac_cli/lib/eac_cli/parser/options_collection.rb +0 -68
- data/vendor/eac_cli/lib/eac_cli/parser/parse_result.rb +0 -38
- data/vendor/eac_cli/lib/eac_cli/parser/positional_collection.rb +0 -77
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container/file.rb +0 -31
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container/info.rb +0 -21
@@ -0,0 +1,91 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'ehbrs/executables'
|
5
|
+
require 'fileutils'
|
6
|
+
|
7
|
+
module EhbrsRubyUtils
|
8
|
+
module Videos
|
9
|
+
class ConvertJob
|
10
|
+
FORMATS_TO_EXTENSIONS = {
|
11
|
+
'matroska' => '.mkv'
|
12
|
+
}.freeze
|
13
|
+
|
14
|
+
enable_console_speaker
|
15
|
+
enable_simple_cache
|
16
|
+
common_constructor :input, :ffmpeg_convert_args do
|
17
|
+
self.input = input.to_pathname.expand_path
|
18
|
+
raise "Input file \"#{input}\" does not exist or is not a file" unless input.file?
|
19
|
+
end
|
20
|
+
|
21
|
+
def run
|
22
|
+
if converted.exist?
|
23
|
+
warn("Converted file already exist: \"#{converted}\"")
|
24
|
+
else
|
25
|
+
convert
|
26
|
+
swap
|
27
|
+
end
|
28
|
+
end
|
29
|
+
|
30
|
+
def target
|
31
|
+
input.dirname.join("#{input.basename('.*')}#{target_extension}")
|
32
|
+
end
|
33
|
+
|
34
|
+
private
|
35
|
+
|
36
|
+
def command_args_uncached
|
37
|
+
r = ['-i', input] + ffmpeg_convert_args
|
38
|
+
r += ['-f', format_by_input] if format_by_args.blank?
|
39
|
+
r + [converting]
|
40
|
+
end
|
41
|
+
|
42
|
+
def convert
|
43
|
+
infov 'Input', input
|
44
|
+
infov 'Target', target
|
45
|
+
infov 'Convert args', command_args.shelljoin
|
46
|
+
::Ehbrs::Executables.ffmpeg.command.append(command_args).system!
|
47
|
+
end
|
48
|
+
|
49
|
+
def format_by_args_uncached
|
50
|
+
ffmpeg_convert_args.rindex('-f').if_present do |option_index|
|
51
|
+
ffmpeg_convert_args[option_index + 1]
|
52
|
+
end
|
53
|
+
end
|
54
|
+
|
55
|
+
def format_by_input
|
56
|
+
FORMATS_TO_EXTENSIONS.invert[target_extension_by_input].if_present { |v| return v }
|
57
|
+
|
58
|
+
raise 'Unknonwn target format'
|
59
|
+
end
|
60
|
+
|
61
|
+
def format_to_extension(format)
|
62
|
+
FORMATS_TO_EXTENSIONS[format].if_present(".#{format}")
|
63
|
+
end
|
64
|
+
|
65
|
+
def swap
|
66
|
+
::FileUtils.mv(input, converted)
|
67
|
+
::FileUtils.mv(converting, target)
|
68
|
+
end
|
69
|
+
|
70
|
+
def converting
|
71
|
+
target.basename_sub { |b| "#{b}.converting" }
|
72
|
+
end
|
73
|
+
|
74
|
+
def converted
|
75
|
+
input.basename_sub { |b| "#{b}.converted" }
|
76
|
+
end
|
77
|
+
|
78
|
+
def target_extension
|
79
|
+
target_extension_by_args || target_extension_by_input
|
80
|
+
end
|
81
|
+
|
82
|
+
def target_extension_by_args
|
83
|
+
format_by_args.if_present { |v| format_to_extension(v) }
|
84
|
+
end
|
85
|
+
|
86
|
+
def target_extension_by_input
|
87
|
+
::File.extname(input)
|
88
|
+
end
|
89
|
+
end
|
90
|
+
end
|
91
|
+
end
|
@@ -0,0 +1,51 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
|
5
|
+
module EhbrsRubyUtils
|
6
|
+
module Videos
|
7
|
+
class Stream
|
8
|
+
enable_simple_cache
|
9
|
+
enable_listable
|
10
|
+
|
11
|
+
lists.add_symbol :codec_type, :audio, :video, :subtitle, :data
|
12
|
+
|
13
|
+
common_constructor :ffprobe_data do
|
14
|
+
self.ffprobe_data = ffprobe_data.symbolize_keys.freeze
|
15
|
+
self.class.lists.codec_type.value_validate!(codec_type)
|
16
|
+
end
|
17
|
+
|
18
|
+
lists.codec_type.each_value do |v|
|
19
|
+
define_method "#{v}?" do
|
20
|
+
codec_type == v
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def to_s
|
25
|
+
"#{index}|#{codec_type}|#{codec_name}|#{language}"
|
26
|
+
end
|
27
|
+
|
28
|
+
def to_h
|
29
|
+
ffprobe_data
|
30
|
+
end
|
31
|
+
|
32
|
+
%i[index codec_name codec_long_name].each do |method_name|
|
33
|
+
define_method method_name do
|
34
|
+
ffprobe_data.fetch(method_name)
|
35
|
+
end
|
36
|
+
end
|
37
|
+
|
38
|
+
def codec_type
|
39
|
+
ffprobe_data.fetch(:codec_type).to_sym
|
40
|
+
end
|
41
|
+
|
42
|
+
def tags
|
43
|
+
ffprobe_data[:tags].if_present({}, &:symbolize_keys)
|
44
|
+
end
|
45
|
+
|
46
|
+
def language
|
47
|
+
tags[:language]
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ehbrs-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.16.
|
4
|
+
version: 0.16.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: 2020-
|
11
|
+
date: 2020-12-12 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: avm-tools
|
@@ -231,19 +231,23 @@ files:
|
|
231
231
|
- vendor/eac_cli/lib/eac_cli/core_ext.rb
|
232
232
|
- vendor/eac_cli/lib/eac_cli/default_runner.rb
|
233
233
|
- vendor/eac_cli/lib/eac_cli/definition.rb
|
234
|
+
- vendor/eac_cli/lib/eac_cli/definition/alternative.rb
|
234
235
|
- vendor/eac_cli/lib/eac_cli/definition/argument_option.rb
|
235
236
|
- vendor/eac_cli/lib/eac_cli/definition/base_option.rb
|
236
237
|
- vendor/eac_cli/lib/eac_cli/definition/boolean_option.rb
|
237
238
|
- vendor/eac_cli/lib/eac_cli/definition/help_formatter.rb
|
238
239
|
- vendor/eac_cli/lib/eac_cli/definition/positional_argument.rb
|
239
240
|
- vendor/eac_cli/lib/eac_cli/docopt/doc_builder.rb
|
241
|
+
- vendor/eac_cli/lib/eac_cli/docopt/doc_builder/alternative.rb
|
240
242
|
- vendor/eac_cli/lib/eac_cli/docopt/runner_extension.rb
|
241
243
|
- vendor/eac_cli/lib/eac_cli/parser.rb
|
244
|
+
- vendor/eac_cli/lib/eac_cli/parser/alternative.rb
|
245
|
+
- vendor/eac_cli/lib/eac_cli/parser/alternative/argv.rb
|
246
|
+
- vendor/eac_cli/lib/eac_cli/parser/alternative/double_dash.rb
|
247
|
+
- vendor/eac_cli/lib/eac_cli/parser/alternative/options.rb
|
248
|
+
- vendor/eac_cli/lib/eac_cli/parser/alternative/positionals.rb
|
242
249
|
- vendor/eac_cli/lib/eac_cli/parser/collector.rb
|
243
250
|
- vendor/eac_cli/lib/eac_cli/parser/error.rb
|
244
|
-
- vendor/eac_cli/lib/eac_cli/parser/options_collection.rb
|
245
|
-
- vendor/eac_cli/lib/eac_cli/parser/parse_result.rb
|
246
|
-
- vendor/eac_cli/lib/eac_cli/parser/positional_collection.rb
|
247
251
|
- vendor/eac_cli/lib/eac_cli/patches.rb
|
248
252
|
- vendor/eac_cli/lib/eac_cli/patches/object.rb
|
249
253
|
- vendor/eac_cli/lib/eac_cli/patches/object/runner_with.rb
|
@@ -254,8 +258,11 @@ files:
|
|
254
258
|
- vendor/eac_cli/lib/eac_cli/runner_with/output_file.rb
|
255
259
|
- vendor/eac_cli/lib/eac_cli/runner_with/subcommands.rb
|
256
260
|
- vendor/eac_cli/lib/eac_cli/version.rb
|
261
|
+
- vendor/eac_cli/spec/lib/eac_cli/definition/alternative_spec.rb
|
257
262
|
- vendor/eac_cli/spec/lib/eac_cli/docopt/runner_extension_spec.rb
|
263
|
+
- vendor/eac_cli/spec/lib/eac_cli/parser/alternative_spec.rb
|
258
264
|
- vendor/eac_cli/spec/lib/eac_cli/runner_spec.rb
|
265
|
+
- vendor/eac_cli/spec/lib/eac_cli/runner_with/output_file_spec.rb
|
259
266
|
- vendor/eac_cli/spec/lib/eac_cli/runner_with/subcommands_spec.rb
|
260
267
|
- vendor/eac_cli/spec/rubocop_spec.rb
|
261
268
|
- vendor/eac_cli/spec/spec_helper.rb
|
@@ -277,6 +284,7 @@ files:
|
|
277
284
|
- vendor/eac_ruby_utils/README.rdoc
|
278
285
|
- vendor/eac_ruby_utils/eac_ruby_utils.gemspec
|
279
286
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils.rb
|
287
|
+
- vendor/eac_ruby_utils/lib/eac_ruby_utils/abstract_methods.rb
|
280
288
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/arguments_consumer.rb
|
281
289
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/blank_not_blank.rb
|
282
290
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/boolean.rb
|
@@ -362,6 +370,7 @@ files:
|
|
362
370
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/options_consumer.rb
|
363
371
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/hash/sym_keys_hash.rb
|
364
372
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module.rb
|
373
|
+
- vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/abstract_methods.rb
|
365
374
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/common_concern.rb
|
366
375
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/console_speaker.rb
|
367
376
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/module/immutable.rb
|
@@ -411,6 +420,7 @@ files:
|
|
411
420
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/templates/variable_providers/hash.rb
|
412
421
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb
|
413
422
|
- vendor/eac_ruby_utils/lib/eac_ruby_utils/yaml.rb
|
423
|
+
- vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/abstract_methods_spec.rb
|
414
424
|
- vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/arguments_consumer_spec.rb
|
415
425
|
- vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/blank_not_blank_spec.rb
|
416
426
|
- vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/common_concern_spec.rb
|
@@ -467,10 +477,10 @@ files:
|
|
467
477
|
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/version.rb
|
468
478
|
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos.rb
|
469
479
|
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container.rb
|
470
|
-
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/
|
471
|
-
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/container/info.rb
|
480
|
+
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/convert_job.rb
|
472
481
|
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/quality.rb
|
473
482
|
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/resolution.rb
|
483
|
+
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/stream.rb
|
474
484
|
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils.rb
|
475
485
|
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/instance.rb
|
476
486
|
- vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos.rb
|
@@ -1,68 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
4
|
-
require 'optparse'
|
5
|
-
|
6
|
-
module EacCli
|
7
|
-
class Parser
|
8
|
-
class OptionsCollection
|
9
|
-
enable_simple_cache
|
10
|
-
common_constructor(:definition, :argv, :collector) { collect }
|
11
|
-
attr_reader :arguments
|
12
|
-
|
13
|
-
def options_first?
|
14
|
-
definition.options_first? || definition.subcommands?
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def check_required_options
|
20
|
-
definition.options.each do |option|
|
21
|
-
next unless option.required?
|
22
|
-
next if collector.supplied?(option)
|
23
|
-
|
24
|
-
raise ::EacCli::Parser::Error.new(
|
25
|
-
definition, argv, "Option \"#{option}\" is required and a value was not supplied"
|
26
|
-
)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
|
30
|
-
def collect
|
31
|
-
build_banner
|
32
|
-
build_options
|
33
|
-
parse_argv
|
34
|
-
check_required_options
|
35
|
-
end
|
36
|
-
|
37
|
-
def option_parser_uncached
|
38
|
-
::OptionParser.new
|
39
|
-
end
|
40
|
-
|
41
|
-
def parse_argv
|
42
|
-
@arguments = options_first? ? option_parser.order(argv) : option_parser.parse(argv)
|
43
|
-
rescue ::OptionParser::InvalidOption => e
|
44
|
-
raise ::EacCli::Parser::Error.new(definition, argv, e.message)
|
45
|
-
end
|
46
|
-
|
47
|
-
def build_banner
|
48
|
-
option_parser.banner = definition.help_formatter.to_banner
|
49
|
-
end
|
50
|
-
|
51
|
-
def build_options
|
52
|
-
definition.options.each do |option|
|
53
|
-
build_option(option)
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def build_option(option)
|
58
|
-
option_parser.on(
|
59
|
-
*[::EacCli::Definition::HelpFormatter.option_short(option),
|
60
|
-
::EacCli::Definition::HelpFormatter.option_long(option),
|
61
|
-
option.description].reject(&:blank?)
|
62
|
-
) do |value|
|
63
|
-
collector.collect(option, value)
|
64
|
-
end
|
65
|
-
end
|
66
|
-
end
|
67
|
-
end
|
68
|
-
end
|
@@ -1,38 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_cli/parser/error'
|
4
|
-
require 'eac_ruby_utils/core_ext'
|
5
|
-
|
6
|
-
module EacCli
|
7
|
-
class Parser
|
8
|
-
class ParseResult
|
9
|
-
common_constructor :definition, :argv
|
10
|
-
|
11
|
-
def result
|
12
|
-
result_or_error = parse(definition)
|
13
|
-
return result_or_error unless result_or_error.is_a?(::Exception)
|
14
|
-
|
15
|
-
definition.alternatives.each do |alternative|
|
16
|
-
alt_result_or_error = parse(alternative)
|
17
|
-
return alt_result_or_error unless alt_result_or_error.is_a?(::Exception)
|
18
|
-
end
|
19
|
-
|
20
|
-
raise result_or_error
|
21
|
-
end
|
22
|
-
|
23
|
-
private
|
24
|
-
|
25
|
-
def parse(definition)
|
26
|
-
::EacCli::Parser::Collector.to_data(definition) do |collector|
|
27
|
-
::EacCli::Parser::PositionalCollection.new(
|
28
|
-
definition,
|
29
|
-
::EacCli::Parser::OptionsCollection.new(definition, argv, collector).arguments,
|
30
|
-
collector
|
31
|
-
)
|
32
|
-
end
|
33
|
-
rescue ::EacCli::Parser::Error => e
|
34
|
-
e
|
35
|
-
end
|
36
|
-
end
|
37
|
-
end
|
38
|
-
end
|
@@ -1,77 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'eac_ruby_utils/core_ext'
|
4
|
-
require 'eac_cli/parser/error'
|
5
|
-
|
6
|
-
module EacCli
|
7
|
-
class Parser
|
8
|
-
class PositionalCollection
|
9
|
-
common_constructor(:definition, :argv, :collector) { collect }
|
10
|
-
|
11
|
-
private
|
12
|
-
|
13
|
-
def argv_enum
|
14
|
-
@argv_enum ||= argv.each
|
15
|
-
end
|
16
|
-
|
17
|
-
def argv_pending?
|
18
|
-
argv_enum.ongoing?
|
19
|
-
end
|
20
|
-
|
21
|
-
def argv_pending_check
|
22
|
-
return unless argv_pending?
|
23
|
-
return unless positional_enum.stopped?
|
24
|
-
|
25
|
-
raise ::EacCli::Parser::Error.new(
|
26
|
-
definition, argv, "No positional left for argv \"#{argv_enum.current}\""
|
27
|
-
)
|
28
|
-
end
|
29
|
-
|
30
|
-
def collected
|
31
|
-
@collected ||= ::Set.new
|
32
|
-
end
|
33
|
-
|
34
|
-
def collect
|
35
|
-
loop do
|
36
|
-
break unless enums('pending?').any?
|
37
|
-
|
38
|
-
enums('pending_check')
|
39
|
-
collect_argv_value
|
40
|
-
end
|
41
|
-
end
|
42
|
-
|
43
|
-
def collect_argv_value
|
44
|
-
collector.collect(*enums('enum', &:peek))
|
45
|
-
collected << positional_enum.peek
|
46
|
-
positional_enum.next unless positional_enum.peek.repeat?
|
47
|
-
argv_enum.next
|
48
|
-
end
|
49
|
-
|
50
|
-
def enums(method_suffix, &block)
|
51
|
-
%w[positional argv].map do |method_prefix|
|
52
|
-
v = send("#{method_prefix}_#{method_suffix}")
|
53
|
-
block ? block.call(v) : v
|
54
|
-
end
|
55
|
-
end
|
56
|
-
|
57
|
-
def positional_enum
|
58
|
-
@positional_enum ||= definition.positional.each
|
59
|
-
end
|
60
|
-
|
61
|
-
def positional_pending?
|
62
|
-
!(positional_enum.stopped? || positional_enum.current.optional? ||
|
63
|
-
collected.include?(positional_enum.current))
|
64
|
-
end
|
65
|
-
|
66
|
-
def positional_pending_check
|
67
|
-
return unless positional_pending?
|
68
|
-
return unless argv_enum.stopped?
|
69
|
-
|
70
|
-
raise ::EacCli::Parser::Error.new(
|
71
|
-
definition, argv, 'No value for required positional ' \
|
72
|
-
"\"#{positional_enum.current.identifier}\""
|
73
|
-
)
|
74
|
-
end
|
75
|
-
end
|
76
|
-
end
|
77
|
-
end
|
@@ -1,31 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
require 'json'
|
4
|
-
require 'eac_ruby_utils/core_ext'
|
5
|
-
require 'ehbrs_ruby_utils/executables'
|
6
|
-
require 'ehbrs_ruby_utils/videos/container/info'
|
7
|
-
|
8
|
-
module EhbrsRubyUtils
|
9
|
-
module Videos
|
10
|
-
module Container
|
11
|
-
class File
|
12
|
-
enable_simple_cache
|
13
|
-
common_constructor :path do
|
14
|
-
self.path = path.to_pathname
|
15
|
-
end
|
16
|
-
|
17
|
-
private
|
18
|
-
|
19
|
-
def info_uncached
|
20
|
-
::EhbrsRubyUtils::Videos::Container::Info.new(
|
21
|
-
::JSON.parse(
|
22
|
-
::EhbrsRubyUtils::Executables.ffprobe.command(
|
23
|
-
'-hide_banner', '-print_format', 'json', '-show_format', '-show_streams', path
|
24
|
-
).execute!
|
25
|
-
)
|
26
|
-
)
|
27
|
-
end
|
28
|
-
end
|
29
|
-
end
|
30
|
-
end
|
31
|
-
end
|