# frozen_string_literal: true require 'ehbrs/tools/core_ext' require 'ehbrs_ruby_utils/finances/bb_browser/docker_image' module Ehbrs module Tools class Runner class Finances class BbBrowser runner_with :help do desc 'Bankline para Banco do Brasil com módulo de segurança.' end def run infov 'Docker run arguments', ::Shellwords.join(docker_container.run_command_args) infov 'System result', docker_container.run_command.system end private def docker_image_uncached ::EhbrsRubyUtils::Finances::BbBrowser::DockerImage.create end def docker_container_uncached r = docker_image.container .temporary(true).interactive(true).tty(true) .command_arg('seg.bb.com.br') %w[capabilities environment_variables volumes].inject(r) do |a, e| send("docker_container_#{e}", a) end end def docker_container_capabilities(container) %w[CAP_AUDIT_WRITE CAP_SYS_PTRACE].inject(container) { |a, e| a.capability(e) } end def docker_container_environment_variables(container) { 'USER_UID' => user_id, 'USER_GID' => group_id }.inject(container) { |a, e| a.env(e[0], e[1]) } end def docker_container_volumes(container) { ::File.join(Dir.home, 'Downloads') => '/home/user/Downloads', ::File.join(Dir.home, '.Xauthority') => '/home/user/.Xauthority:ro', '/tmp/.X11-unix' => '/tmp/.X11-unix:ro', '/etc/machine-id' => '/etc/machine-id:ro' }.inject(container) { |a, e| a.volume(e[0], e[1]) } end def user_id ::EacRubyUtils::Envs.local.command('id', '-u').execute!.strip end def group_id ::EacRubyUtils::Envs.local.command('id', '-g').execute!.strip end end end end end end