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.
- checksums.yaml +4 -4
- data/exe/ehbrs +2 -2
- data/lib/ehbrs/tools/runner.rb +21 -0
- data/lib/ehbrs/tools/runner/cooking_book.rb +32 -0
- data/lib/ehbrs/tools/runner/cooking_book/build.rb +52 -0
- data/lib/ehbrs/{runner/videos/series.rb → tools/runner/finances.rb} +4 -4
- data/lib/ehbrs/tools/runner/finances/bb_browser.rb +66 -0
- data/lib/ehbrs/tools/runner/fs.rb +18 -0
- data/lib/ehbrs/tools/runner/fs/selected.rb +81 -0
- data/lib/ehbrs/tools/runner/fs/used_space.rb +161 -0
- data/lib/ehbrs/tools/runner/google.rb +18 -0
- data/lib/ehbrs/tools/runner/google/translate.rb +89 -0
- data/lib/ehbrs/tools/runner/music.rb +18 -0
- data/lib/ehbrs/tools/runner/music/selected.rb +28 -0
- data/lib/ehbrs/tools/runner/self.rb +18 -0
- data/lib/ehbrs/tools/runner/self/test.rb +27 -0
- data/lib/ehbrs/tools/runner/telegram.rb +28 -0
- data/lib/ehbrs/tools/runner/telegram/send_message.rb +31 -0
- data/lib/ehbrs/tools/runner/vg.rb +18 -0
- data/lib/ehbrs/tools/runner/vg/ips.rb +134 -0
- data/lib/ehbrs/tools/runner/vg/wii.rb +74 -0
- data/lib/ehbrs/{runner/web_utils → tools/runner}/videos.rb +3 -3
- data/lib/ehbrs/tools/runner/videos/extract.rb +70 -0
- data/lib/ehbrs/tools/runner/videos/probe.rb +34 -0
- data/lib/ehbrs/tools/runner/videos/series.rb +20 -0
- data/lib/ehbrs/tools/runner/videos/series/rename.rb +74 -0
- data/lib/ehbrs/tools/runner/videos/unsupported.rb +61 -0
- data/lib/ehbrs/tools/runner/web_utils.rb +26 -0
- data/lib/ehbrs/tools/runner/web_utils/videos.rb +20 -0
- data/lib/ehbrs/tools/runner/web_utils/videos/download.rb +75 -0
- data/lib/ehbrs/tools/runner/web_utils/videos/upload.rb +77 -0
- data/lib/ehbrs/tools/version.rb +1 -1
- data/lib/ehbrs/vg/wii/game_file.rb +10 -0
- data/vendor/aranha-parsers/aranha-parsers.gemspec +2 -2
- data/vendor/{avm-apps/lib/avm/apps/jobs.rb → aranha-parsers/lib/aranha/parsers/rspec.rb} +3 -3
- data/vendor/aranha-parsers/lib/aranha/parsers/rspec/setup.rb +15 -0
- data/vendor/aranha-parsers/lib/aranha/parsers/{spec → rspec}/source_target_fixtures_example.rb +0 -0
- data/vendor/aranha-parsers/lib/aranha/parsers/source_address.rb +10 -8
- data/vendor/aranha-parsers/lib/aranha/parsers/version.rb +1 -1
- data/vendor/aranha-parsers/spec/lib/rubocop_check_spec.rb +1 -5
- data/vendor/aranha-parsers/spec/spec_helper.rb +2 -6
- data/vendor/aranha-selenium/aranha-selenium.gemspec +2 -2
- data/vendor/aranha-selenium/lib/aranha/selenium/version.rb +1 -1
- data/vendor/aranha-selenium/spec/rubocop_check_spec.rb +1 -5
- data/vendor/aranha-selenium/spec/spec_helper.rb +2 -98
- data/vendor/eac_cli/eac_cli.gemspec +3 -3
- data/vendor/eac_cli/lib/eac_cli/config.rb +2 -0
- data/vendor/eac_cli/lib/eac_cli/config/entry.rb +1 -3
- data/vendor/eac_cli/lib/eac_cli/version.rb +1 -1
- data/vendor/eac_cli/spec/rubocop_spec.rb +1 -1
- data/vendor/eac_cli/spec/spec_helper.rb +2 -101
- data/vendor/eac_config/eac_config.gemspec +2 -2
- data/vendor/eac_config/lib/eac_config/version.rb +1 -1
- data/vendor/eac_config/spec/rubocop_spec.rb +1 -1
- data/vendor/eac_config/spec/spec_helper.rb +2 -15
- data/vendor/eac_docker/eac_docker.gemspec +2 -2
- data/vendor/eac_docker/lib/eac_docker/container.rb +7 -3
- data/vendor/eac_docker/lib/eac_docker/debug.rb +15 -0
- data/vendor/eac_docker/lib/eac_docker/images/coded.rb +4 -0
- data/vendor/eac_docker/lib/eac_docker/images/templatized.rb +16 -2
- data/vendor/eac_docker/lib/eac_docker/rspec.rb +2 -10
- data/vendor/eac_docker/lib/eac_docker/rspec/setup.rb +17 -0
- data/vendor/eac_docker/lib/eac_docker/version.rb +1 -1
- data/vendor/eac_docker/spec/rubocop_spec.rb +1 -1
- data/vendor/eac_docker/spec/spec_helper.rb +2 -104
- data/vendor/eac_ruby_base0/eac_ruby_base0.gemspec +4 -4
- data/vendor/eac_ruby_base0/lib/eac_ruby_base0/version.rb +1 -1
- data/vendor/eac_ruby_base0/spec/rubocop_spec.rb +1 -1
- data/vendor/eac_ruby_base0/spec/spec_helper.rb +2 -101
- data/vendor/eac_ruby_utils/eac_ruby_utils.gemspec +1 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/boolean.rb +1 -1
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/envs/executable.rb +15 -3
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry.rb +35 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/gems_registry/gem.rb +75 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/patches/pathname/parent_n.rb +11 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/recursive_builder.rb +51 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/default_setup.rb +20 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup.rb +12 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup/conditionals.rb +17 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/setup_manager.rb +49 -0
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/patches/pathname/parent_n_spec.rb +33 -0
- data/vendor/eac_ruby_utils/spec/lib/eac_ruby_utils/recursive_builder_spec.rb +65 -0
- data/vendor/eac_ruby_utils/spec/rubocop_check_spec.rb +1 -1
- data/vendor/eac_ruby_utils/spec/spec_helper.rb +6 -6
- data/vendor/ehbrs_ruby_utils/ehbrs_ruby_utils.gemspec +4 -2
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/finances/bb_browser/docker_image.rb +18 -0
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/patches/object/template.rb +6 -0
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/version.rb +1 -1
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/videos/stream.rb +11 -1
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/file.rb +11 -8
- data/vendor/ehbrs_ruby_utils/lib/ehbrs_ruby_utils/web_utils/videos/file/rename.rb +28 -0
- data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec.rb +13 -0
- data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.source.yaml +28 -0
- data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_attachment.target.yaml +7 -0
- data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.source.yaml +49 -0
- data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_audio.target.yaml +7 -0
- data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.source.yaml +43 -0
- data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_subtitle.target.yaml +7 -0
- data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.source.yaml +59 -0
- data/vendor/ehbrs_ruby_utils/spec/lib/ehbrs_ruby_utils/videos/stream_spec_files/menina_ovo_video.target.yaml +7 -0
- data/vendor/ehbrs_ruby_utils/spec/rubocop_check_spec.rb +1 -5
- data/vendor/ehbrs_ruby_utils/spec/spec_helper.rb +2 -98
- data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/Dockerfile +44 -0
- data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/Makefile +35 -0
- data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/README.md +16 -0
- data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/context/firefox.service +8 -0
- data/vendor/ehbrs_ruby_utils/template/ehbrs_ruby_utils/finances/bb_browser/docker_image/context/startbrowser.sh +9 -0
- metadata +68 -53
- data/lib/ehbrs/runner.rb +0 -19
- data/lib/ehbrs/runner/cooking_book.rb +0 -30
- data/lib/ehbrs/runner/cooking_book/build.rb +0 -50
- data/lib/ehbrs/runner/finances.rb +0 -16
- data/lib/ehbrs/runner/finances/bb_browser.rb +0 -35
- data/lib/ehbrs/runner/fs.rb +0 -16
- data/lib/ehbrs/runner/fs/selected.rb +0 -79
- data/lib/ehbrs/runner/fs/used_space.rb +0 -159
- data/lib/ehbrs/runner/google.rb +0 -16
- data/lib/ehbrs/runner/google/translate.rb +0 -87
- data/lib/ehbrs/runner/music.rb +0 -16
- data/lib/ehbrs/runner/music/selected.rb +0 -26
- data/lib/ehbrs/runner/self.rb +0 -16
- data/lib/ehbrs/runner/self/test.rb +0 -25
- data/lib/ehbrs/runner/telegram.rb +0 -26
- data/lib/ehbrs/runner/telegram/send_message.rb +0 -29
- data/lib/ehbrs/runner/vg.rb +0 -16
- data/lib/ehbrs/runner/vg/ips.rb +0 -132
- data/lib/ehbrs/runner/vg/wii.rb +0 -72
- data/lib/ehbrs/runner/videos.rb +0 -16
- data/lib/ehbrs/runner/videos/extract.rb +0 -68
- data/lib/ehbrs/runner/videos/probe.rb +0 -32
- data/lib/ehbrs/runner/videos/series/rename.rb +0 -72
- data/lib/ehbrs/runner/videos/unsupported.rb +0 -59
- data/lib/ehbrs/runner/web_utils.rb +0 -24
- data/lib/ehbrs/runner/web_utils/videos/download.rb +0 -63
- data/lib/ehbrs/runner/web_utils/videos/upload.rb +0 -75
- data/vendor/avm-apps/Gemfile +0 -5
- data/vendor/avm-apps/avm-apps.gemspec +0 -18
- data/vendor/avm-apps/lib/avm/apps.rb +0 -9
- data/vendor/avm-apps/lib/avm/apps/config.rb +0 -19
- data/vendor/avm-apps/lib/avm/apps/jobs/base.rb +0 -64
- data/vendor/avm-apps/lib/avm/apps/jobs/variables_source.rb +0 -24
- data/vendor/avm-apps/lib/avm/apps/sources/configuration.rb +0 -57
- data/vendor/avm-apps/lib/avm/apps/sources/configuration/_locale.rb +0 -18
- data/vendor/avm-apps/lib/avm/apps/sources/configuration/_rubocop.rb +0 -26
- data/vendor/avm-apps/lib/avm/apps/sources/configuration/_tests.rb +0 -29
- data/vendor/avm-apps/lib/avm/apps/version.rb +0 -7
- data/vendor/avm-apps/spec/rubocop_spec.rb +0 -3
- data/vendor/avm-apps/spec/spec_helper.rb +0 -103
- data/vendor/eac_ruby_utils/lib/eac_ruby_utils/rspec/conditional.rb +0 -35
- 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:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 3ca2d4a8d232e8161141dd7e815e3eb1efc9a830816f638a597916874af3f651
|
|
4
|
+
data.tar.gz: dc4e6dbaa6b95d33d14d7b96c0c97a170bf1793f2a342cee349c07c85b007c9c
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: e7f68b4e30e166f7d34c1558e40f9eef3c9aee1e58b5b82bd9b27a422ee2fa591cb62315495c710c50f7ec120876a036a87107cb025fe65631339bb3b1bb6abb
|
|
7
|
+
data.tar.gz: 8adff386213db3055d097f5e48b363f9d17a99278dc6f09aa10950d49e35fe36278affef93e37916cf5323c2bc6253411b3c3398d1e4f05184756b3269285cb6
|
data/exe/ehbrs
CHANGED
|
@@ -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
|
-
|
|
7
|
-
class
|
|
8
|
-
class
|
|
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 '
|
|
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
|