ehbrs-tools 0.3.1 → 0.5.0
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/exe/ehbrs +2 -2
- data/lib/ehbrs/executables.rb +8 -7
- data/lib/ehbrs/runner.rb +33 -0
- data/lib/ehbrs/runner/vg.rb +19 -0
- data/lib/ehbrs/runner/vg/ips.rb +88 -0
- data/lib/ehbrs/runner/vg/wii.rb +75 -0
- data/lib/ehbrs/runner/videos.rb +23 -0
- data/lib/ehbrs/runner/videos/unsupported.rb +63 -0
- data/lib/ehbrs/tools/version.rb +1 -1
- data/lib/ehbrs/vg.rb +9 -0
- data/lib/ehbrs/vg/wii.rb +11 -0
- data/lib/ehbrs/vg/wii/file_move.rb +89 -0
- data/lib/ehbrs/vg/wii/game_file.rb +64 -0
- data/lib/ehbrs/vg/wii/wit.rb +13 -0
- data/lib/ehbrs/vg/wii/wit/image_format.rb +46 -0
- data/lib/ehbrs/vg/wii/wit/parsers/dump.rb +62 -0
- data/lib/ehbrs/vg/wii/wit/parsers/info.rb +39 -0
- data/lib/ehbrs/vg/wii/wit/path.rb +55 -0
- data/lib/ehbrs/videos/unsupported/search.rb +13 -10
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils.rb +1 -19
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/by_reference.rb +1 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/custom_format.rb +53 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/command.rb +7 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/spawn.rb +32 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs.rb +9 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/traversable.rb +47 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/fs/traverser.rb +74 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/class/common_constructor.rb +2 -2
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/custom_format_spec.rb +60 -0
- metadata +37 -8
- data/lib/ehbrs/tools/runner.rb +0 -35
- data/lib/ehbrs/tools/runner/vg.rb +0 -26
- data/lib/ehbrs/tools/runner/vg/ips.rb +0 -90
- data/lib/ehbrs/tools/runner/videos.rb +0 -25
- data/lib/ehbrs/tools/runner/videos/unsupported.rb +0 -65
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/filesystem_traverser.rb +0 -56
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fa659c13e85b5935fb4c1f79c3dacece337e2a2c4305d3696447a63585d8cf9f
|
4
|
+
data.tar.gz: 760fe597d4e550c63c5ecc5a6a94d22b5ee70d2d5ea73a3b036c7a21c7bf3d92
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 84aaa531f252a3a05242866c3593056cb33df6cce824a186067d610cf51a2ad01b5077f61d726d23fd19b75218809df0a44bf7cab842780da47642e1f274a80d
|
7
|
+
data.tar.gz: 7ccbf1c9fe7be6a41a1a6acffdcabff9ca4c821ee313606e3ddaf8cc3d89daa3d7357ea77b972b0c824499e8c39836f9d97b5094eceac57b5f03b522a46294b5
|
data/exe/ehbrs
CHANGED
data/lib/ehbrs/executables.rb
CHANGED
@@ -12,15 +12,16 @@ module Ehbrs
|
|
12
12
|
::EacRubyUtils::Envs.local
|
13
13
|
end
|
14
14
|
|
15
|
-
def floating_ips
|
16
|
-
@floating_ips ||= env.executable('flips-linux', '--version')
|
17
|
-
end
|
18
|
-
|
19
15
|
private
|
20
16
|
|
21
|
-
|
22
|
-
|
23
|
-
|
17
|
+
{
|
18
|
+
'-version' => %w[ffmpeg ffprobe],
|
19
|
+
'--version' => %w[flips-linux wit]
|
20
|
+
}.each do |validate_arg, commands|
|
21
|
+
commands.each do |command|
|
22
|
+
define_method("#{command}_uncached") do
|
23
|
+
env.executable(command, validate_arg)
|
24
|
+
end
|
24
25
|
end
|
25
26
|
end
|
26
27
|
end
|
data/lib/ehbrs/runner.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'eac_ruby_utils/console/docopt_runner'
|
5
|
+
require 'ehbrs/tools/version'
|
6
|
+
|
7
|
+
module Ehbrs
|
8
|
+
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
9
|
+
require_sub __FILE__
|
10
|
+
enable_console_speaker
|
11
|
+
|
12
|
+
DOC = <<~DOCOPT
|
13
|
+
Tools for EHB/RS.
|
14
|
+
|
15
|
+
Usage:
|
16
|
+
__PROGRAM__ [options] __SUBCOMMANDS__
|
17
|
+
__PROGRAM__ --version
|
18
|
+
__PROGRAM__ -h | --help
|
19
|
+
|
20
|
+
Options:
|
21
|
+
-h --help Show this screen.
|
22
|
+
-V --version Show version.
|
23
|
+
DOCOPT
|
24
|
+
|
25
|
+
def run
|
26
|
+
if options.fetch('--version')
|
27
|
+
out(::Ehbrs::Tools::VERSION + "\n")
|
28
|
+
else
|
29
|
+
run_with_subcommand
|
30
|
+
end
|
31
|
+
end
|
32
|
+
end
|
33
|
+
end
|
@@ -0,0 +1,19 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_cli/default_runner'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
require 'eac_ruby_utils/console/docopt_runner'
|
6
|
+
|
7
|
+
module Ehbrs
|
8
|
+
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
9
|
+
class Vg < ::EacRubyUtils::Console::DocoptRunner
|
10
|
+
include ::EacCli::DefaultRunner
|
11
|
+
require_sub __FILE__
|
12
|
+
|
13
|
+
runner_definition do
|
14
|
+
desc 'Ferramentas para video game.'
|
15
|
+
subcommands
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -0,0 +1,88 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_cli/runner'
|
4
|
+
require 'eac_cli/default_runner'
|
5
|
+
require 'eac_ruby_utils/core_ext'
|
6
|
+
require 'eac_ruby_utils/console/docopt_runner'
|
7
|
+
require 'ehbrs/executables'
|
8
|
+
|
9
|
+
module Ehbrs
|
10
|
+
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
11
|
+
class Vg < ::EacRubyUtils::Console::DocoptRunner
|
12
|
+
class Ips < ::EacRubyUtils::Console::DocoptRunner
|
13
|
+
include ::EacCli::DefaultRunner
|
14
|
+
|
15
|
+
runner_definition do
|
16
|
+
desc 'Aplica patches IPS em roms.'
|
17
|
+
arg_opt '-o', '--output-file', ' Saída no arquivo <output-file>.'
|
18
|
+
bool_opt '-w', '--overwrite', 'Sobrescreve o arquivo de saída se existente.'
|
19
|
+
pos_arg 'source-file'
|
20
|
+
pos_arg 'ips-file'
|
21
|
+
end
|
22
|
+
|
23
|
+
def run
|
24
|
+
validate
|
25
|
+
end
|
26
|
+
|
27
|
+
private
|
28
|
+
|
29
|
+
def run_patch
|
30
|
+
::Ehbrs::Executables.floating_ips.command
|
31
|
+
.append(['--apply', ips_file, source_file, output_file]).system!
|
32
|
+
end
|
33
|
+
|
34
|
+
def source_file
|
35
|
+
options.fetch('<source-file>')
|
36
|
+
end
|
37
|
+
|
38
|
+
def start_banner
|
39
|
+
infov 'Source file', source_file
|
40
|
+
infov 'IPS file', ips_file
|
41
|
+
infov 'Output file', output_file
|
42
|
+
end
|
43
|
+
|
44
|
+
def ips_file
|
45
|
+
options.fetch('<ips-file>')
|
46
|
+
end
|
47
|
+
|
48
|
+
def output_file
|
49
|
+
options.fetch('--output-file') || default_output_file
|
50
|
+
end
|
51
|
+
|
52
|
+
def default_output_file
|
53
|
+
::File.join(
|
54
|
+
::File.dirname(ips_file),
|
55
|
+
::File.basename(ips_file, '.*') + ::File.extname(source_file)
|
56
|
+
)
|
57
|
+
end
|
58
|
+
|
59
|
+
def validate
|
60
|
+
validate_source_file
|
61
|
+
validate_ips_file
|
62
|
+
validate_output_file
|
63
|
+
start_banner
|
64
|
+
run_patch
|
65
|
+
end
|
66
|
+
|
67
|
+
def validate_source_file
|
68
|
+
return if ::File.exist?(source_file)
|
69
|
+
|
70
|
+
fatal_error("Arquivo fonte \"#{source_file}\" não existe")
|
71
|
+
end
|
72
|
+
|
73
|
+
def validate_ips_file
|
74
|
+
return if ::File.exist?(ips_file)
|
75
|
+
|
76
|
+
fatal_error("Arquivo IPS \"#{ips_file}\" não existe")
|
77
|
+
end
|
78
|
+
|
79
|
+
def validate_output_file
|
80
|
+
return unless ::File.exist?(output_file)
|
81
|
+
return if options.fetch('--overwrite')
|
82
|
+
|
83
|
+
fatal_error("Arquivo de saída \"#{output_file}\" já existe")
|
84
|
+
end
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
@@ -0,0 +1,75 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_cli/default_runner'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
require 'eac_ruby_utils/console/docopt_runner'
|
6
|
+
require 'eac_ruby_utils/fs/traversable'
|
7
|
+
require 'ehbrs/vg/wii/file_move'
|
8
|
+
require 'ehbrs/vg/wii/game_file'
|
9
|
+
|
10
|
+
module Ehbrs
|
11
|
+
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
12
|
+
class Vg < ::EacRubyUtils::Console::DocoptRunner
|
13
|
+
class Wii < ::EacRubyUtils::Console::DocoptRunner
|
14
|
+
include ::EacCli::DefaultRunner
|
15
|
+
include ::EacRubyUtils::Fs::Traversable
|
16
|
+
|
17
|
+
runner_definition do
|
18
|
+
desc 'Manipulação de imagens de jogo Wii.'
|
19
|
+
bool_opt '-R', '--recursive', 'Busca arquivos recursivamente.'
|
20
|
+
bool_opt '-d', '--dump', 'Mostra todos os atributos do jogo.'
|
21
|
+
arg_opt '-m', '--move', 'Move o arquivo.'
|
22
|
+
bool_opt '-c', '--confirm', 'Confirma o movimento do arquivo.'
|
23
|
+
pos_arg 'paths', repeat: true
|
24
|
+
end
|
25
|
+
|
26
|
+
def run
|
27
|
+
infov 'Recursive?', traverser_new.recursive?
|
28
|
+
options.fetch('<paths>').each do |path|
|
29
|
+
traverser_check_path(path)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def confirm?
|
36
|
+
options.fetch('--confirm')
|
37
|
+
end
|
38
|
+
|
39
|
+
def dump(game)
|
40
|
+
return unless options.fetch('--dump')
|
41
|
+
|
42
|
+
game.properties.each do |name, value|
|
43
|
+
infov " * #{name}", value
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
def move(game)
|
48
|
+
return if move_arg.blank?
|
49
|
+
|
50
|
+
file_move = ::Ehbrs::Vg::Wii::FileMove.new(game, game.format(move_arg))
|
51
|
+
infov ' * Target path',
|
52
|
+
file_move.target.to_s.colorize(file_move.change? ? :light_white : :light_black)
|
53
|
+
file_move.run if confirm?
|
54
|
+
end
|
55
|
+
|
56
|
+
def move_arg
|
57
|
+
options.fetch('--move')
|
58
|
+
end
|
59
|
+
|
60
|
+
def traverser_recursive
|
61
|
+
options.fetch('--recursive')
|
62
|
+
end
|
63
|
+
|
64
|
+
def traverser_check_file(path)
|
65
|
+
game = ::Ehbrs::Vg::Wii::GameFile.new(path)
|
66
|
+
return unless game.valid?
|
67
|
+
|
68
|
+
infom game.wit_path
|
69
|
+
dump(game)
|
70
|
+
move(game)
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
74
|
+
end
|
75
|
+
end
|
@@ -0,0 +1,23 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'eac_ruby_utils/console/docopt_runner'
|
5
|
+
|
6
|
+
module Ehbrs
|
7
|
+
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
8
|
+
class Videos < ::EacRubyUtils::Console::DocoptRunner
|
9
|
+
require_sub __FILE__
|
10
|
+
|
11
|
+
DOC = <<~DOCOPT
|
12
|
+
Video tools for EHB/RS.
|
13
|
+
|
14
|
+
Usage:
|
15
|
+
__PROGRAM__ [options] __SUBCOMMANDS__
|
16
|
+
__PROGRAM__ -h | --help
|
17
|
+
|
18
|
+
Options:
|
19
|
+
-h --help Show this screen.
|
20
|
+
DOCOPT
|
21
|
+
end
|
22
|
+
end
|
23
|
+
end
|
@@ -0,0 +1,63 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_cli/default_runner'
|
4
|
+
require 'eac_ruby_utils/core_ext'
|
5
|
+
require 'eac_ruby_utils/console/docopt_runner'
|
6
|
+
require 'ehbrs/videos/unsupported/check_set'
|
7
|
+
require 'ehbrs/videos/unsupported/search'
|
8
|
+
require 'ehbrs/videos/unsupported/profiles'
|
9
|
+
|
10
|
+
module Ehbrs
|
11
|
+
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
12
|
+
class Videos < ::EacRubyUtils::Console::DocoptRunner
|
13
|
+
class Unsupported < ::EacRubyUtils::Console::DocoptRunner
|
14
|
+
include ::EacCli::DefaultRunner
|
15
|
+
|
16
|
+
PROFILES = %w[philco samsung].freeze
|
17
|
+
|
18
|
+
runner_definition do
|
19
|
+
desc 'Procura e converte vídeos não suportados pelas TVs de EHB/RS.'
|
20
|
+
bool_opt '-f', '--fix', 'Converte vídeos para o formato apropriado.'
|
21
|
+
arg_opt '-p', '--profiles', "Seleciona os perfis (#{PROFILES.join(', ')})."
|
22
|
+
pos_arg 'paths', repeat: true
|
23
|
+
end
|
24
|
+
|
25
|
+
def run
|
26
|
+
infov 'Profiles', profiles.join(', ')
|
27
|
+
infov 'Paths', paths
|
28
|
+
paths.each do |d|
|
29
|
+
::Ehbrs::Videos::Unsupported::Search.new(d, file_options)
|
30
|
+
end
|
31
|
+
end
|
32
|
+
|
33
|
+
private
|
34
|
+
|
35
|
+
def file_check_set_uncached
|
36
|
+
::Ehbrs::Videos::Unsupported::CheckSet.build(profiles, :file)
|
37
|
+
end
|
38
|
+
|
39
|
+
def track_check_set_uncached
|
40
|
+
::Ehbrs::Videos::Unsupported::CheckSet.build(profiles, :track)
|
41
|
+
end
|
42
|
+
|
43
|
+
def paths
|
44
|
+
options.fetch('<paths>')
|
45
|
+
end
|
46
|
+
|
47
|
+
def file_options
|
48
|
+
{ file_check_set: file_check_set, track_check_set: track_check_set,
|
49
|
+
fix: options.fetch('--fix') }
|
50
|
+
end
|
51
|
+
|
52
|
+
def profiles_uncached
|
53
|
+
options.fetch('--profiles').if_present(PROFILES) { |v| v.split(',').map(&:strip) }
|
54
|
+
.map { |name| profile_class(name).instance }
|
55
|
+
end
|
56
|
+
|
57
|
+
def profile_class(profile_name)
|
58
|
+
::Ehbrs::Videos::Unsupported::Profiles.const_get(profile_name.camelize)
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
63
|
+
end
|
data/lib/ehbrs/tools/version.rb
CHANGED
data/lib/ehbrs/vg.rb
ADDED
data/lib/ehbrs/vg/wii.rb
ADDED
@@ -0,0 +1,89 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'ehbrs/executables'
|
5
|
+
require 'ehbrs/vg/wii/wit/image_format'
|
6
|
+
require 'ehbrs/vg/wii/wit/path'
|
7
|
+
require 'fileutils'
|
8
|
+
|
9
|
+
module Ehbrs
|
10
|
+
module Vg
|
11
|
+
module Wii
|
12
|
+
class FileMove
|
13
|
+
common_constructor :game, :target do
|
14
|
+
self.target = ::Ehbrs::Vg::Wii::Wit::Path.assert(target)
|
15
|
+
end
|
16
|
+
|
17
|
+
['', 'path_', 'type_'].each do |prefix|
|
18
|
+
method_name = "#{prefix}change?"
|
19
|
+
define_method(method_name) do
|
20
|
+
source.send(method_name, target)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def run
|
25
|
+
[%w[path type], %w[path], %w[type]].each do |parts|
|
26
|
+
next unless parts.all? { |part| send("#{part}_change?") }
|
27
|
+
|
28
|
+
assert_target_dir
|
29
|
+
send("change_#{parts.join('_and_')}")
|
30
|
+
check_target
|
31
|
+
break
|
32
|
+
end
|
33
|
+
end
|
34
|
+
|
35
|
+
def source
|
36
|
+
game.wit_path
|
37
|
+
end
|
38
|
+
|
39
|
+
private
|
40
|
+
|
41
|
+
def assert_target_dir
|
42
|
+
target.path.parent.mkpath
|
43
|
+
end
|
44
|
+
|
45
|
+
def change_path
|
46
|
+
::FileUtils.mv(source.path, target.path)
|
47
|
+
end
|
48
|
+
|
49
|
+
def change_path_and_type
|
50
|
+
::Ehbrs::Executables.wit.command
|
51
|
+
.append(change_path_and_type_args)
|
52
|
+
.system!
|
53
|
+
check_target
|
54
|
+
source.path.unlink
|
55
|
+
end
|
56
|
+
|
57
|
+
def change_path_and_type_args
|
58
|
+
r = %w[copy]
|
59
|
+
target_image_format.if_present { |v| r << v.option }
|
60
|
+
r + [source.path, target.path]
|
61
|
+
end
|
62
|
+
|
63
|
+
def change_type
|
64
|
+
::Ehbrs::Executables.wit.command
|
65
|
+
.append(change_type_args)
|
66
|
+
.system!
|
67
|
+
end
|
68
|
+
|
69
|
+
def change_type_args
|
70
|
+
r = %w[convert]
|
71
|
+
target_image_format.if_present { |v| r << v.option }
|
72
|
+
r + [target.path]
|
73
|
+
end
|
74
|
+
|
75
|
+
def check_target
|
76
|
+
return if ::Ehbrs::Vg::Wii::GameFile.new(target.path).valid?
|
77
|
+
|
78
|
+
raise "Target \"#{target}\" is not a valid Wii game"
|
79
|
+
end
|
80
|
+
|
81
|
+
def target_image_format
|
82
|
+
return nil if target.type.blank?
|
83
|
+
|
84
|
+
::Ehbrs::Vg::Wii::Wit::ImageFormat.by_name(target.type)
|
85
|
+
end
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
end
|