ehbrs-tools 0.22.0 → 0.25.0

Sign up to get free protection for your applications and to get access to all the features.
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