ehbrs-tools 0.22.0 → 0.25.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.
Files changed (151) hide show
  1. checksums.yaml +4 -4
  2. data/exe/ehbrs +2 -2
  3. data/lib/ehbrs/tools/runner.rb +21 -0
  4. data/lib/ehbrs/tools/runner/cooking_book.rb +32 -0
  5. data/lib/ehbrs/tools/runner/cooking_book/build.rb +52 -0
  6. data/lib/ehbrs/{runner/videos/series.rb → tools/runner/finances.rb} +4 -4
  7. data/lib/ehbrs/tools/runner/finances/bb_browser.rb +66 -0
  8. data/lib/ehbrs/tools/runner/fs.rb +18 -0
  9. data/lib/ehbrs/tools/runner/fs/selected.rb +81 -0
  10. data/lib/ehbrs/tools/runner/fs/used_space.rb +161 -0
  11. data/lib/ehbrs/tools/runner/google.rb +18 -0
  12. data/lib/ehbrs/tools/runner/google/translate.rb +89 -0
  13. data/lib/ehbrs/tools/runner/music.rb +18 -0
  14. data/lib/ehbrs/tools/runner/music/selected.rb +28 -0
  15. data/lib/ehbrs/tools/runner/self.rb +18 -0
  16. data/lib/ehbrs/tools/runner/self/test.rb +27 -0
  17. data/lib/ehbrs/tools/runner/telegram.rb +28 -0
  18. data/lib/ehbrs/tools/runner/telegram/send_message.rb +31 -0
  19. data/lib/ehbrs/tools/runner/vg.rb +18 -0
  20. data/lib/ehbrs/tools/runner/vg/ips.rb +134 -0
  21. data/lib/ehbrs/tools/runner/vg/wii.rb +74 -0
  22. data/lib/ehbrs/{runner/web_utils → tools/runner}/videos.rb +3 -3
  23. data/lib/ehbrs/tools/runner/videos/extract.rb +70 -0
  24. data/lib/ehbrs/tools/runner/videos/probe.rb +34 -0
  25. data/lib/ehbrs/tools/runner/videos/series.rb +20 -0
  26. data/lib/ehbrs/tools/runner/videos/series/rename.rb +74 -0
  27. data/lib/ehbrs/tools/runner/videos/unsupported.rb +61 -0
  28. data/lib/ehbrs/tools/runner/web_utils.rb +26 -0
  29. data/lib/ehbrs/tools/runner/web_utils/videos.rb +20 -0
  30. data/lib/ehbrs/tools/runner/web_utils/videos/download.rb +75 -0
  31. data/lib/ehbrs/tools/runner/web_utils/videos/upload.rb +77 -0
  32. data/lib/ehbrs/tools/version.rb +1 -1
  33. data/lib/ehbrs/vg/wii/game_file.rb +10 -0
  34. data/vendor/aranha-parsers/aranha-parsers.gemspec +2 -2
  35. data/vendor/{avm-apps/lib/avm/apps/jobs.rb → aranha-parsers/lib/aranha/parsers/rspec.rb} +3 -3
  36. data/vendor/aranha-parsers/lib/aranha/parsers/rspec/setup.rb +15 -0
  37. data/vendor/aranha-parsers/lib/aranha/parsers/{spec → rspec}/source_target_fixtures_example.rb +0 -0
  38. data/vendor/aranha-parsers/lib/aranha/parsers/source_address.rb +10 -8
  39. data/vendor/aranha-parsers/lib/aranha/parsers/version.rb +1 -1
  40. data/vendor/aranha-parsers/spec/lib/rubocop_check_spec.rb +1 -5
  41. data/vendor/aranha-parsers/spec/spec_helper.rb +2 -6
  42. data/vendor/aranha-selenium/aranha-selenium.gemspec +2 -2
  43. data/vendor/aranha-selenium/lib/aranha/selenium/version.rb +1 -1
  44. data/vendor/aranha-selenium/spec/rubocop_check_spec.rb +1 -5
  45. data/vendor/aranha-selenium/spec/spec_helper.rb +2 -98
  46. data/vendor/eac_cli/eac_cli.gemspec +3 -3
  47. data/vendor/eac_cli/lib/eac_cli/config.rb +2 -0
  48. data/vendor/eac_cli/lib/eac_cli/config/entry.rb +1 -3
  49. data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
  50. data/vendor/eac_cli/spec/rubocop_spec.rb +1 -1
  51. data/vendor/eac_cli/spec/spec_helper.rb +2 -101
  52. data/vendor/eac_config/eac_config.gemspec +2 -2
  53. data/vendor/eac_config/lib/eac_config/version.rb +1 -1
  54. data/vendor/eac_config/spec/rubocop_spec.rb +1 -1
  55. data/vendor/eac_config/spec/spec_helper.rb +2 -15
  56. data/vendor/eac_docker/eac_docker.gemspec +2 -2
  57. data/vendor/eac_docker/lib/eac_docker/container.rb +7 -3
  58. data/vendor/eac_docker/lib/eac_docker/debug.rb +15 -0
  59. data/vendor/eac_docker/lib/eac_docker/images/coded.rb +4 -0
  60. data/vendor/eac_docker/lib/eac_docker/images/templatized.rb +16 -2
  61. data/vendor/eac_docker/lib/eac_docker/rspec.rb +2 -10
  62. data/vendor/eac_docker/lib/eac_docker/rspec/setup.rb +17 -0
  63. data/vendor/eac_docker/lib/eac_docker/version.rb +1 -1
  64. data/vendor/eac_docker/spec/rubocop_spec.rb +1 -1
  65. data/vendor/eac_docker/spec/spec_helper.rb +2 -104
  66. data/vendor/eac_ruby_base0/eac_ruby_base0.gemspec +4 -4
  67. data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
  68. data/vendor/eac_ruby_base0/spec/rubocop_spec.rb +1 -1
  69. data/vendor/eac_ruby_base0/spec/spec_helper.rb +2 -101
  70. data/vendor/eac_ruby_utils/eac_ruby_utils.gemspec +1 -1
  71. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/boolean.rb +1 -1
  72. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb +15 -3
  73. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb +35 -0
  74. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +75 -0
  75. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/parent_n.rb +11 -0
  76. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/recursive_builder.rb +51 -0
  77. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/default_setup.rb +20 -0
  78. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb +12 -0
  79. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/conditionals.rb +17 -0
  80. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup_manager.rb +49 -0
  81. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  82. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/parent_n_spec.rb +33 -0
  83. data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb +65 -0
  84. data/vendor/eac_ruby_utils/spec/rubocop_check_spec.rb +1 -1
  85. data/vendor/eac_ruby_utils/spec/spec_helper.rb +6 -6
  86. data/vendor/ehbrs_ruby_utils/ehbrs_ruby_utils.gemspec +4 -2
  87. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/finances/bb_browser/docker_image.rb +18 -0
  88. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/patches/object/template.rb +6 -0
  89. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/version.rb +1 -1
  90. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/stream.rb +11 -1
  91. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/file.rb +11 -8
  92. data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/file/rename.rb +28 -0
  93. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec.rb +13 -0
  94. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.source.yaml +28 -0
  95. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.target.yaml +7 -0
  96. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.source.yaml +49 -0
  97. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.target.yaml +7 -0
  98. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.source.yaml +43 -0
  99. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.target.yaml +7 -0
  100. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.source.yaml +59 -0
  101. data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.target.yaml +7 -0
  102. data/vendor/ehbrs_ruby_utils/spec/rubocop_check_spec.rb +1 -5
  103. data/vendor/ehbrs_ruby_utils/spec/spec_helper.rb +2 -98
  104. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/Dockerfile +44 -0
  105. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/Makefile +35 -0
  106. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/README.md +16 -0
  107. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/context/firefox.service +8 -0
  108. data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/context/startbrowser.sh +9 -0
  109. metadata +68 -53
  110. data/lib/ehbrs/runner.rb +0 -19
  111. data/lib/ehbrs/runner/cooking_book.rb +0 -30
  112. data/lib/ehbrs/runner/cooking_book/build.rb +0 -50
  113. data/lib/ehbrs/runner/finances.rb +0 -16
  114. data/lib/ehbrs/runner/finances/bb_browser.rb +0 -35
  115. data/lib/ehbrs/runner/fs.rb +0 -16
  116. data/lib/ehbrs/runner/fs/selected.rb +0 -79
  117. data/lib/ehbrs/runner/fs/used_space.rb +0 -159
  118. data/lib/ehbrs/runner/google.rb +0 -16
  119. data/lib/ehbrs/runner/google/translate.rb +0 -87
  120. data/lib/ehbrs/runner/music.rb +0 -16
  121. data/lib/ehbrs/runner/music/selected.rb +0 -26
  122. data/lib/ehbrs/runner/self.rb +0 -16
  123. data/lib/ehbrs/runner/self/test.rb +0 -25
  124. data/lib/ehbrs/runner/telegram.rb +0 -26
  125. data/lib/ehbrs/runner/telegram/send_message.rb +0 -29
  126. data/lib/ehbrs/runner/vg.rb +0 -16
  127. data/lib/ehbrs/runner/vg/ips.rb +0 -132
  128. data/lib/ehbrs/runner/vg/wii.rb +0 -72
  129. data/lib/ehbrs/runner/videos.rb +0 -16
  130. data/lib/ehbrs/runner/videos/extract.rb +0 -68
  131. data/lib/ehbrs/runner/videos/probe.rb +0 -32
  132. data/lib/ehbrs/runner/videos/series/rename.rb +0 -72
  133. data/lib/ehbrs/runner/videos/unsupported.rb +0 -59
  134. data/lib/ehbrs/runner/web_utils.rb +0 -24
  135. data/lib/ehbrs/runner/web_utils/videos/download.rb +0 -63
  136. data/lib/ehbrs/runner/web_utils/videos/upload.rb +0 -75
  137. data/vendor/avm-apps/Gemfile +0 -5
  138. data/vendor/avm-apps/avm-apps.gemspec +0 -18
  139. data/vendor/avm-apps/lib/avm/apps.rb +0 -9
  140. data/vendor/avm-apps/lib/avm/apps/config.rb +0 -19
  141. data/vendor/avm-apps/lib/avm/apps/jobs/base.rb +0 -64
  142. data/vendor/avm-apps/lib/avm/apps/jobs/variables_source.rb +0 -24
  143. data/vendor/avm-apps/lib/avm/apps/sources/configuration.rb +0 -57
  144. data/vendor/avm-apps/lib/avm/apps/sources/configuration/_locale.rb +0 -18
  145. data/vendor/avm-apps/lib/avm/apps/sources/configuration/_rubocop.rb +0 -26
  146. data/vendor/avm-apps/lib/avm/apps/sources/configuration/_tests.rb +0 -29
  147. data/vendor/avm-apps/lib/avm/apps/version.rb +0 -7
  148. data/vendor/avm-apps/spec/rubocop_spec.rb +0 -3
  149. data/vendor/avm-apps/spec/spec_helper.rb +0 -103
  150. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/conditional.rb +0 -35
  151. data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/stubbed_ssh.rb +0 -44
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 65c2d3133ff7e4ef5b4525fd989ea39ca9ba76b6993d470d47543a06258f2f9c
4
- data.tar.gz: 42bc25487ca6b2b1aba7ce315a9a9bc311767d26480b08b7b04ee1e88fbf7b7a
3
+ metadata.gz: 3ca2d4a8d232e8161141dd7e815e3eb1efc9a830816f638a597916874af3f651
4
+ data.tar.gz: dc4e6dbaa6b95d33d14d7b96c0c97a170bf1793f2a342cee349c07c85b007c9c
5
5
  SHA512:
6
- metadata.gz: e73a214bae3409ae28b10ecbfdccc70ccc9981af6140a6371ab158b8552cd1564c8346964f6c4dff005b53e3434e162d9a48fc404c2d321d69504c393ea4a372
7
- data.tar.gz: 6a84239f517e9a985e9890717a6dd6a5e2db3623199913da8165bcdf0a484c264428027a3d5514464b6fe7721cc3ffb54753b58f5a4eb399c8b463ec1effb580
6
+ metadata.gz: e7f68b4e30e166f7d34c1558e40f9eef3c9aee1e58b5b82bd9b27a422ee2fa591cb62315495c710c50f7ec120876a036a87107cb025fe65631339bb3b1bb6abb
7
+ data.tar.gz: 8adff386213db3055d097f5e48b363f9d17a99278dc6f09aa10950d49e35fe36278affef93e37916cf5323c2bc6253411b3c3398d1e4f05184756b3269285cb6
data/exe/ehbrs CHANGED
@@ -2,5 +2,5 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  $LOAD_PATH.unshift("#{__dir__}/../lib")
5
- require 'ehbrs/runner'
6
- ::Ehbrs::Runner.run
5
+ require 'ehbrs/tools/runner'
6
+ ::Ehbrs::Tools::Runner.run
@@ -0,0 +1,21 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_base0/runner'
4
+ require 'ehbrs/tools/application'
5
+
6
+ module Ehbrs
7
+ module Tools
8
+ class Runner
9
+ require_sub __FILE__
10
+ include ::EacRubyBase0::Runner
11
+
12
+ runner_definition do
13
+ desc 'Tools for EHB/RS.'
14
+ end
15
+
16
+ def application
17
+ ::Ehbrs::Tools.application
18
+ end
19
+ end
20
+ end
21
+ end
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'ehbrs/cooking_book/project'
5
+
6
+ module Ehbrs
7
+ module Tools
8
+ class Runner
9
+ class CookingBook
10
+ require_sub __FILE__
11
+
12
+ DEFAULT_SOURCE_DIR = '.'
13
+
14
+ runner_with :help, :subcommands do
15
+ desc 'Operações para livros de receitas.'
16
+ arg_opt '-C', '--source-dir', 'Caminho para o diretório do código-fonte.'
17
+ subcommands
18
+ end
19
+
20
+ private
21
+
22
+ def source_dir_uncached
23
+ (parsed.source_dir || DEFAULT_SOURCE_DIR).to_pathname.expand_path
24
+ end
25
+
26
+ def project_uncached
27
+ ::Ehbrs::CookingBook::Project.new(source_dir)
28
+ end
29
+ end
30
+ end
31
+ end
32
+ end
@@ -0,0 +1,52 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_cli/core_ext'
4
+ require 'ehbrs/cooking_book/build'
5
+ require 'os'
6
+
7
+ module Ehbrs
8
+ module Tools
9
+ class Runner
10
+ class CookingBook
11
+ class Build
12
+ runner_with :help, :subcommands do
13
+ desc 'Operações para livros de receitas.'
14
+ arg_opt '-d', '--target-dir', 'Caminho para o diretório destino da construção.'
15
+ bool_opt '--open', 'Show the result.'
16
+ end
17
+
18
+ def run
19
+ start_banner
20
+ build.run
21
+ open
22
+ success 'Done'
23
+ end
24
+
25
+ private
26
+
27
+ def build_uncached
28
+ ::Ehbrs::CookingBook::Build.new(
29
+ runner_context.call(:project), target_dir: parsed.target_dir
30
+ )
31
+ end
32
+
33
+ def open
34
+ return unless parsed.open?
35
+
36
+ infom "Opening \"#{open_path}\"..."
37
+ ::EacRubyUtils::Envs.local.command(OS.open_file_command, open_path).system!
38
+ end
39
+
40
+ def open_path
41
+ build.index_page.target_path
42
+ end
43
+
44
+ def start_banner
45
+ infov 'Project', build.project
46
+ infov 'Target directory', build.target_dir
47
+ end
48
+ end
49
+ end
50
+ end
51
+ end
52
+ end
@@ -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,66 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'ehbrs/core_ext'
4
+ require 'ehbrs_ruby_utils/finances/bb_browser/docker_image'
5
+
6
+ module Ehbrs
7
+ module Tools
8
+ class Runner
9
+ class Finances
10
+ class BbBrowser
11
+ runner_with :help do
12
+ desc 'Bankline para Banco do Brasil com módulo de segurança.'
13
+ end
14
+
15
+ def run
16
+ infov 'Docker run arguments', ::Shellwords.join(docker_container.run_command_args)
17
+ infov 'System result', docker_container.run_command.system
18
+ end
19
+
20
+ private
21
+
22
+ def docker_image_uncached
23
+ ::EhbrsRubyUtils::Finances::BbBrowser::DockerImage.create
24
+ end
25
+
26
+ def docker_container_uncached
27
+ r = docker_image.container
28
+ .temporary(true).interactive(true).tty(true)
29
+ .command_arg('seg.bb.com.br')
30
+ %w[capabilities environment_variables volumes].inject(r) do |a, e|
31
+ send("docker_container_#{e}", a)
32
+ end
33
+ end
34
+
35
+ def docker_container_capabilities(container)
36
+ %w[CAP_AUDIT_WRITE CAP_SYS_PTRACE].inject(container) { |a, e| a.capability(e) }
37
+ end
38
+
39
+ def docker_container_environment_variables(container)
40
+ {
41
+ 'USER_UID' => user_id,
42
+ 'USER_GID' => group_id
43
+ }.inject(container) { |a, e| a.env(e[0], e[1]) }
44
+ end
45
+
46
+ def docker_container_volumes(container)
47
+ {
48
+ ::File.join(ENV.fetch('HOME'), 'Downloads') => '/home/user/Downloads',
49
+ ::File.join(ENV.fetch('HOME'), '.Xauthority') => '/home/user/.Xauthority:ro',
50
+ '/tmp/.X11-unix' => '/tmp/.X11-unix:ro',
51
+ '/etc/machine-id' => '/etc/machine-id:ro'
52
+ }.inject(container) { |a, e| a.volume(e[0], e[1]) }
53
+ end
54
+
55
+ def user_id
56
+ ::EacRubyUtils::Envs.local.command('id', '-u').execute!.strip
57
+ end
58
+
59
+ def group_id
60
+ ::EacRubyUtils::Envs.local.command('id', '-g').execute!.strip
61
+ end
62
+ end
63
+ end
64
+ end
65
+ end
66
+ 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,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