ehbrs-tools 0.23.0 → 0.25.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (166) hide show
  1. checksums.yaml +4 -4
  2. data/.avm.yml +4 -0
  3. data/.rspec +1 -0
  4. data/.rubocop.yml +39 -0
  5. data/Gemfile.lock +269 -0
  6. data/exe/ehbrs +2 -2
  7. data/lib/ehbrs/tools/runner/cooking_book/build.rb +52 -0
  8. data/lib/ehbrs/tools/runner/cooking_book.rb +32 -0
  9. data/lib/ehbrs/tools/runner/finances/bb_browser.rb +66 -0
  10. data/lib/ehbrs/{runner/videos/series.rb → tools/runner/finances.rb} +4 -4
  11. data/lib/ehbrs/tools/runner/fs/selected.rb +81 -0
  12. data/lib/ehbrs/tools/runner/fs/used_space.rb +161 -0
  13. data/lib/ehbrs/tools/runner/fs.rb +18 -0
  14. data/lib/ehbrs/tools/runner/google/translate.rb +89 -0
  15. data/lib/ehbrs/tools/runner/google.rb +18 -0
  16. data/lib/ehbrs/tools/runner/music/selected.rb +28 -0
  17. data/lib/ehbrs/tools/runner/music.rb +18 -0
  18. data/lib/ehbrs/tools/runner/self/test.rb +27 -0
  19. data/lib/ehbrs/tools/runner/self.rb +18 -0
  20. data/lib/ehbrs/tools/runner/telegram/send_message.rb +31 -0
  21. data/lib/ehbrs/tools/runner/telegram.rb +28 -0
  22. data/lib/ehbrs/tools/runner/vg/ips.rb +134 -0
  23. data/lib/ehbrs/tools/runner/vg/wii.rb +74 -0
  24. data/lib/ehbrs/tools/runner/vg.rb +18 -0
  25. data/lib/ehbrs/tools/runner/videos/extract.rb +70 -0
  26. data/lib/ehbrs/tools/runner/videos/probe.rb +34 -0
  27. data/lib/ehbrs/tools/runner/videos/series/rename.rb +74 -0
  28. data/lib/ehbrs/tools/runner/videos/series.rb +20 -0
  29. data/lib/ehbrs/tools/runner/videos/unsupported.rb +61 -0
  30. data/lib/ehbrs/{runner/web_utils → tools/runner}/videos.rb +3 -3
  31. data/lib/ehbrs/tools/runner/web_utils/videos/download.rb +75 -0
  32. data/lib/ehbrs/tools/runner/web_utils/videos/upload.rb +77 -0
  33. data/lib/ehbrs/tools/runner/web_utils/videos.rb +20 -0
  34. data/lib/ehbrs/tools/runner/web_utils.rb +26 -0
  35. data/lib/ehbrs/tools/runner.rb +21 -0
  36. data/lib/ehbrs/tools/version.rb +1 -1
  37. data/spec/code/rubocop_spec.rb +3 -0
  38. data/spec/lib/ehbrs/cooking_book/recipe/measure_spec.rb +21 -0
  39. data/spec/lib/ehbrs/observers/base_spec.rb +93 -0
  40. data/spec/lib/ehbrs/tools/runner/fs/used_space_spec.rb +61 -0
  41. data/spec/lib/ehbrs/tools/runner/vg/ips_spec.rb +31 -0
  42. data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/expected.rom +0 -0
  43. data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/patch_0.ips +0 -0
  44. data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/patch_1.ips +0 -0
  45. data/spec/lib/ehbrs/tools/runner/vg/ips_spec_files/source.rom +0 -0
  46. data/spec/lib/ehbrs/tools/runner/videos/probe_spec.rb +19 -0
  47. data/spec/lib/ehbrs/tools/runner/videos/probe_spec_files/fixed.target.yaml +105 -0
  48. data/spec/lib/ehbrs/tools/runner/videos/unsupported_spec.rb +75 -0
  49. data/spec/lib/ehbrs/tools/runner/videos/unsupported_spec_files/dts_audio.probe.yaml +90 -0
  50. data/spec/lib/ehbrs/tools/runner_spec.rb +16 -0
  51. data/spec/lib/ehbrs/vg/wii/game_file_spec.rb +21 -0
  52. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec.rb +11 -0
  53. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.source.witdump +27 -0
  54. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_R92P01_wia.target.yaml +22 -0
  55. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.source.witdump +28 -0
  56. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/pikmin2_pal_iso.target.yaml +21 -0
  57. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.source.witdump +16 -0
  58. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/resident_evil_code_veronica_disc2_iso.target.yaml +19 -0
  59. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.source.witdump +28 -0
  60. data/spec/lib/ehbrs/vg/wii/wit/parsers/dump_spec_files/super_mario_galaxy_wbfs.target.yaml +23 -0
  61. data/spec/lib/ehbrs/vg/wii/wit/path_spec.rb +33 -0
  62. data/spec/spec_helper/videos.rb +30 -0
  63. data/spec/spec_helper/videos_files/stub_source.mp4 +0 -0
  64. data/spec/spec_helper.rb +7 -0
  65. data/vendor/aranha-parsers/aranha-parsers.gemspec +2 -2
  66. data/vendor/aranha-parsers/lib/aranha/parsers/rspec/setup.rb +15 -0
  67. data/vendor/aranha-parsers/lib/aranha/parsers/{spec → rspec}/source_target_fixtures_example.rb +0 -0
  68. data/vendor/aranha-parsers/lib/aranha/parsers/rspec.rb +11 -0
  69. data/vendor/aranha-parsers/lib/aranha/parsers/source_address.rb +10 -8
  70. data/vendor/aranha-parsers/lib/aranha/parsers/version.rb +1 -1
  71. data/vendor/aranha-parsers/spec/lib/rubocop_check_spec.rb +1 -1
  72. data/vendor/aranha-parsers/spec/spec_helper.rb +2 -9
  73. data/vendor/aranha-selenium/aranha-selenium.gemspec +2 -2
  74. data/vendor/aranha-selenium/lib/aranha/selenium/version.rb +1 -1
  75. data/vendor/aranha-selenium/spec/rubocop_check_spec.rb +1 -5
  76. data/vendor/aranha-selenium/spec/spec_helper.rb +2 -98
  77. data/vendor/eac_cli/eac_cli.gemspec +3 -3
  78. data/vendor/eac_cli/lib/eac_cli/config/entry.rb +0 -2
  79. data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
  80. data/vendor/eac_cli/spec/rubocop_spec.rb +1 -1
  81. data/vendor/eac_cli/spec/spec_helper.rb +2 -101
  82. data/vendor/eac_config/eac_config.gemspec +2 -2
  83. data/vendor/eac_config/lib/eac_config/version.rb +1 -1
  84. data/vendor/eac_config/spec/rubocop_spec.rb +1 -1
  85. data/vendor/eac_config/spec/spec_helper.rb +2 -15
  86. data/vendor/eac_docker/eac_docker.gemspec +2 -2
  87. data/vendor/eac_docker/lib/eac_docker/container.rb +7 -3
  88. data/vendor/eac_docker/lib/eac_docker/debug.rb +15 -0
  89. data/vendor/eac_docker/lib/eac_docker/images/coded.rb +4 -0
  90. data/vendor/eac_docker/lib/eac_docker/images/templatized.rb +16 -2
  91. data/vendor/eac_docker/lib/eac_docker/rspec/setup.rb +17 -0
  92. data/vendor/eac_docker/lib/eac_docker/rspec.rb +2 -10
  93. data/vendor/eac_docker/lib/eac_docker/version.rb +1 -1
  94. data/vendor/eac_docker/spec/rubocop_spec.rb +1 -1
  95. data/vendor/eac_docker/spec/spec_helper.rb +2 -104
  96. data/vendor/eac_ruby_base0/eac_ruby_base0.gemspec +4 -4
  97. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  98. data/vendor/eac_ruby_base0/spec/rubocop_spec.rb +1 -1
  99. data/vendor/eac_ruby_base0/spec/spec_helper.rb +2 -101
  100. data/vendor/eac_ruby_utils/eac_ruby_utils.gemspec +1 -1
  101. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/boolean.rb +1 -1
  102. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb +15 -3
  103. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +75 -0
  104. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb +35 -0
  105. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/recursive_builder.rb +51 -0
  106. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/default_setup.rb +20 -0
  107. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/conditionals.rb +17 -0
  108. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb +12 -0
  109. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup_manager.rb +49 -0
  110. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  111. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb +65 -0
  112. data/vendor/eac_ruby_utils/spec/rubocop_check_spec.rb +1 -1
  113. data/vendor/eac_ruby_utils/spec/spec_helper.rb +6 -6
  114. data/vendor/ehbrs_ruby_utils/ehbrs_ruby_utils.gemspec +6 -3
  115. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/finances/bb_browser/docker_image.rb +18 -0
  116. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/patches/object/template.rb +6 -0
  117. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/version.rb +1 -1
  118. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/stream.rb +11 -1
  119. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/file/rename.rb +28 -0
  120. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/file.rb +11 -8
  121. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec.rb +13 -0
  122. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.source.yaml +28 -0
  123. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.target.yaml +7 -0
  124. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.source.yaml +49 -0
  125. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.target.yaml +7 -0
  126. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.source.yaml +43 -0
  127. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.target.yaml +7 -0
  128. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.source.yaml +59 -0
  129. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.target.yaml +7 -0
  130. data/vendor/ehbrs_ruby_utils/spec/rubocop_check_spec.rb +1 -5
  131. data/vendor/ehbrs_ruby_utils/spec/spec_helper.rb +2 -98
  132. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/Dockerfile +44 -0
  133. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/Makefile +35 -0
  134. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/README.md +16 -0
  135. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/context/firefox.service +8 -0
  136. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/context/startbrowser.sh +9 -0
  137. metadata +149 -40
  138. data/lib/ehbrs/runner/cooking_book/build.rb +0 -50
  139. data/lib/ehbrs/runner/cooking_book.rb +0 -30
  140. data/lib/ehbrs/runner/finances/bb_browser.rb +0 -35
  141. data/lib/ehbrs/runner/finances.rb +0 -16
  142. data/lib/ehbrs/runner/fs/selected.rb +0 -79
  143. data/lib/ehbrs/runner/fs/used_space.rb +0 -159
  144. data/lib/ehbrs/runner/fs.rb +0 -16
  145. data/lib/ehbrs/runner/google/translate.rb +0 -87
  146. data/lib/ehbrs/runner/google.rb +0 -16
  147. data/lib/ehbrs/runner/music/selected.rb +0 -26
  148. data/lib/ehbrs/runner/music.rb +0 -16
  149. data/lib/ehbrs/runner/self/test.rb +0 -25
  150. data/lib/ehbrs/runner/self.rb +0 -16
  151. data/lib/ehbrs/runner/telegram/send_message.rb +0 -29
  152. data/lib/ehbrs/runner/telegram.rb +0 -26
  153. data/lib/ehbrs/runner/vg/ips.rb +0 -132
  154. data/lib/ehbrs/runner/vg/wii.rb +0 -72
  155. data/lib/ehbrs/runner/vg.rb +0 -16
  156. data/lib/ehbrs/runner/videos/extract.rb +0 -68
  157. data/lib/ehbrs/runner/videos/probe.rb +0 -32
  158. data/lib/ehbrs/runner/videos/series/rename.rb +0 -72
  159. data/lib/ehbrs/runner/videos/unsupported.rb +0 -59
  160. data/lib/ehbrs/runner/videos.rb +0 -16
  161. data/lib/ehbrs/runner/web_utils/videos/download.rb +0 -63
  162. data/lib/ehbrs/runner/web_utils/videos/upload.rb +0 -75
  163. data/lib/ehbrs/runner/web_utils.rb +0 -24
  164. data/lib/ehbrs/runner.rb +0 -19
  165. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/conditional.rb +0 -35
  166. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/stubbed_ssh.rb +0 -44
@@ -3,13 +3,13 @@
3
3
  require 'eac_cli/core_ext'
4
4
 
5
5
  module Ehbrs
6
- class Runner
7
- class Videos
8
- class Series
6
+ module Tools
7
+ class Runner
8
+ class Finances
9
9
  require_sub __FILE__
10
10
 
11
11
  runner_with :help, :subcommands do
12
- desc 'Ferramentas para seriados.'
12
+ desc 'Utilidades financeiras.'
13
13
  subcommands
14
14
  end
15
15
  end
@@ -0,0 +1,81 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/envs'
4
+ require 'eac_ruby_utils/fs/clearable_directory'
5
+ require 'ehbrs/core_ext'
6
+
7
+ module Ehbrs
8
+ module Tools
9
+ class Runner
10
+ class Fs
11
+ class Selected
12
+ DEFAULT_TRAVERSER_RECURSIVE = true
13
+
14
+ enable_jobs_runner
15
+ runner_with :confirmation, :help, :filesystem_traverser do
16
+ desc 'Seleciona diretórios.'
17
+ arg_opt '-b', '--build-dir', 'Constrói diretório alvo.'
18
+ end
19
+
20
+ def run
21
+ infov 'Recursive', traverser_recursive
22
+ run_jobs :show, :build
23
+ end
24
+
25
+ protected
26
+
27
+ def build_selected_directory(path)
28
+ path
29
+ end
30
+
31
+ def directory_label(directory)
32
+ directory.to_s
33
+ end
34
+
35
+ def directory_target_basename(directory)
36
+ directory.basename.to_path
37
+ end
38
+
39
+ private
40
+
41
+ def build
42
+ infom "Building directory \"#{build_dir}\" with selected..."
43
+ build_dir.clear
44
+ selected_directories.each do |directory|
45
+ ::EacRubyUtils::Envs.local.command(
46
+ 'ln', '-s', directory.to_path,
47
+ build_dir.join(directory_target_basename(directory))
48
+ ).system!
49
+ end
50
+ end
51
+
52
+ def build_dir_uncached
53
+ parsed.build_dir.if_present { |v| ::EacRubyUtils::Fs::ClearableDirectory.new(v) }
54
+ end
55
+
56
+ def run_build?
57
+ build_dir.present? && confirm?('Build?')
58
+ end
59
+
60
+ def selected_directories_uncached
61
+ infom 'Searching selected directories...'
62
+ @selected = []
63
+ run_filesystem_traverser
64
+ @selected.sort
65
+ end
66
+
67
+ def show
68
+ infov 'Directories found', selected_directories.count
69
+ selected_directories.each do |directory|
70
+ puts directory_label(directory)
71
+ end
72
+ end
73
+
74
+ def traverser_check_directory(path)
75
+ @selected << build_selected_directory(path) if path.join('.selected').exist?
76
+ end
77
+ end
78
+ end
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,161 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'ehbrs/self/observers/used_space'
5
+ require 'filesize'
6
+
7
+ module Ehbrs
8
+ module Tools
9
+ class Runner
10
+ class Fs
11
+ class UsedSpace
12
+ runner_with :help do
13
+ desc 'Verifica e anota alterações de espaço usado de um objeto de sistema de arquivos.'
14
+ bool_opt '-c', '--check', 'Anota o espaço em disco.'
15
+ bool_opt '-v', '--verbose', 'Verbose.'
16
+ pos_arg :paths, repeat: true
17
+ end
18
+
19
+ def run
20
+ root_banner
21
+ paths.each(&:run)
22
+ end
23
+
24
+ def check?
25
+ parsed.check
26
+ end
27
+
28
+ private
29
+
30
+ def root_banner
31
+ return unless verbose?
32
+
33
+ infov 'Paths', paths.count
34
+ infov 'Check?', check?
35
+ infov 'Verbose?', verbose?
36
+ end
37
+
38
+ def path_class
39
+ verbose? ? PathVerbose : PathUnverbose
40
+ end
41
+
42
+ def paths_uncached
43
+ parsed.paths.map { |path| path_class.new(self, path) }
44
+ end
45
+
46
+ def verbose?
47
+ parsed.verbose
48
+ end
49
+
50
+ class PathBase
51
+ enable_simple_cache
52
+ enable_speaker
53
+ common_constructor :runner, :path do
54
+ self.path = path.to_pathname
55
+ end
56
+
57
+ private
58
+
59
+ def last_change_time
60
+ time_label(observer.observer.last_change_time)
61
+ end
62
+
63
+ def last_check
64
+ time_label(observer.observer.last_check_time)
65
+ end
66
+
67
+ def last_value
68
+ bytes_label(observer.observer.last_value)
69
+ end
70
+
71
+ def current_value
72
+ bytes_label(observer.current_value).colorize(
73
+ observer.changing_value? ? :green : :light_black
74
+ )
75
+ end
76
+
77
+ def changing_value?
78
+ changing_label(observer.changing_value?)
79
+ end
80
+
81
+ def observer_uncached
82
+ ::Ehbrs::Self::Observers::UsedSpace.new(path)
83
+ end
84
+
85
+ def changing_label(bool)
86
+ bool.to_s.colorize(bool ? :green : :light_black)
87
+ end
88
+
89
+ def time_label(time)
90
+ time.if_present('-', &:to_s)
91
+ end
92
+ end
93
+
94
+ class PathVerbose < PathBase
95
+ def run
96
+ infom path.to_s
97
+ ::EacRubyUtils::Speaker.context.on(::EacCli::Speaker.new(err_line_prefix: ' ')) do
98
+ banner
99
+ check
100
+ end
101
+ end
102
+
103
+ private
104
+
105
+ def banner
106
+ { 'Path' => observer.path,
107
+ 'Persistence path' => observer.persistence_path,
108
+ 'Last check' => last_check,
109
+ 'Last change' => last_change_time,
110
+ 'Last value' => last_value,
111
+ 'Current value' => current_value,
112
+ 'Changing?' => changing_value? }.each do |k, v|
113
+ infov k, v
114
+ end
115
+ end
116
+
117
+ def check
118
+ return unless runner.check?
119
+
120
+ infom 'Checking...'
121
+ if observer.check_current_value
122
+ success 'A new value was recorded'
123
+ else
124
+ info 'No new value was recorded'
125
+ end
126
+ end
127
+
128
+ def bytes_label(number)
129
+ number.if_present('-') { |v| "#{v} (#{::Filesize.from("#{v} B").pretty})" }
130
+ end
131
+ end
132
+
133
+ class PathUnverbose < PathBase
134
+ def run
135
+ self.puts output_line
136
+ end
137
+
138
+ def output_line
139
+ [path.to_s.cyan, last_change_time, last_value, current_value, check_result]
140
+ .reject(&:blank?).join('|')
141
+ end
142
+
143
+ def check_result
144
+ return nil unless runner.check?
145
+
146
+ observer.check_current_value ? 'Recorded'.green : 'Unchanged'.light_black
147
+ end
148
+
149
+ def bytes_label(number)
150
+ number.if_present('-') { |v| ::Filesize.from("#{v} B").pretty }
151
+ end
152
+
153
+ def time_label(time)
154
+ time.if_present('-') { |t| t.strftime('%d/%m/%y %H:%M') }
155
+ end
156
+ end
157
+ end
158
+ end
159
+ end
160
+ end
161
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+
5
+ module Ehbrs
6
+ module Tools
7
+ class Runner
8
+ class Fs
9
+ require_sub __FILE__
10
+
11
+ runner_with :help, :subcommands do
12
+ desc 'Ferramentas para o sistema de arquivos.'
13
+ subcommands
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,89 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/default_runner'
4
+ require 'eac_ruby_utils/core_ext'
5
+ require 'ehbrs/google/translate/session'
6
+
7
+ module Ehbrs
8
+ module Tools
9
+ class Runner
10
+ class Google
11
+ class Translate
12
+ runner_with :help do
13
+ desc 'Traduz um documento com Google Translate.'
14
+ arg_opt '-o', '--output-file', 'Salva saída em <output-file>.'
15
+ bool_opt '-w', '--overwrite', 'Permite sobreescrever arquivo de saída.'
16
+ pos_arg 'source-file'
17
+ end
18
+
19
+ def run
20
+ start_banner
21
+ validate
22
+ if output_to_stdout?
23
+ out(translated_content)
24
+ else
25
+ ::File.write(output_file, translated_content)
26
+ end
27
+ success 'Concluído'
28
+ end
29
+
30
+ def start_banner
31
+ infov 'Source file', source_file
32
+ infov 'Target file', output_file
33
+ end
34
+
35
+ def translated_content_uncached
36
+ session.translate(source_file)
37
+ end
38
+
39
+ delegate :source_file, to: :parsed
40
+
41
+ def output_file
42
+ parsed.output_file || default_output_file
43
+ end
44
+
45
+ def default_output_file
46
+ ::File.join(
47
+ ::File.dirname(source_file),
48
+ ::File.basename(source_file, '.*') + '_translated.html'
49
+ )
50
+ end
51
+
52
+ def session_uncached
53
+ ::Ehbrs::Google::Translate::Session.new
54
+ end
55
+
56
+ def validate
57
+ validate_source_file
58
+ validate_output_file
59
+ validate_output_content
60
+ end
61
+
62
+ def validate_source_file
63
+ return if ::File.exist?(source_file)
64
+
65
+ fatal_error "Source file \"#{source_file}\" does not exist"
66
+ end
67
+
68
+ def validate_output_file
69
+ return if output_to_stdout?
70
+ return unless ::File.exist?(output_file)
71
+ return if parsed.overwrite?
72
+
73
+ fatal_error "Output file \"#{output_file}\" already exists"
74
+ end
75
+
76
+ def validate_output_content
77
+ return if translated_content.present?
78
+
79
+ fatal_error 'Output content is empty'
80
+ end
81
+
82
+ def output_to_stdout?
83
+ output_file == '-'
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
89
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+
5
+ module Ehbrs
6
+ module Tools
7
+ class Runner
8
+ class Google
9
+ require_sub __FILE__
10
+
11
+ runner_with :help, :subcommands do
12
+ desc 'Utilidades Google.'
13
+ subcommands
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs/music/album'
4
+ require 'ehbrs/tools/runner/fs/selected'
5
+
6
+ module Ehbrs
7
+ module Tools
8
+ class Runner
9
+ class Music
10
+ class Selected < ::Ehbrs::Tools::Runner::Fs::Selected
11
+ protected
12
+
13
+ def build_selected_directory(path)
14
+ ::Ehbrs::Music::Album.new(path)
15
+ end
16
+
17
+ def directory_label(directory)
18
+ directory.to_label
19
+ end
20
+
21
+ def directory_target_basename(directory)
22
+ directory.id
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -0,0 +1,18 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+
5
+ module Ehbrs
6
+ module Tools
7
+ class Runner
8
+ class Music
9
+ require_sub __FILE__
10
+
11
+ runner_with :help, :subcommands do
12
+ desc 'Ferramentas para músicas.'
13
+ subcommands
14
+ end
15
+ end
16
+ end
17
+ end
18
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'ehbrs/gems'
5
+ require 'eac_ruby_gems_utils/tests/multiple'
6
+
7
+ module Ehbrs
8
+ module Tools
9
+ class Runner
10
+ class Self
11
+ class Test
12
+ runner_with :help do
13
+ desc 'Test core and local gems.'
14
+ end
15
+
16
+ def run
17
+ fatal_error 'Some test did not pass' unless tests.ok?
18
+ end
19
+
20
+ def tests_uncached
21
+ ::EacRubyGemsUtils::Tests::Multiple.new(::Ehbrs::Gems.all)
22
+ end
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end