avmtrf1-tools 0.29.0 → 0.32.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (55) hide show
  1. checksums.yaml +4 -4
  2. data/lib/avmtrf1/check_point/session.rb +10 -9
  3. data/lib/avmtrf1/esosti/instance/changed.rb +8 -5
  4. data/lib/avmtrf1/executables.rb +10 -2
  5. data/lib/avmtrf1/forponto/user/month.rb +1 -1
  6. data/lib/avmtrf1/inventario_sistemas.rb +40 -0
  7. data/lib/avmtrf1/inventario_sistemas/parser.rb +42 -0
  8. data/lib/avmtrf1/inventario_sistemas/parser/body.rb +27 -0
  9. data/lib/avmtrf1/inventario_sistemas/parser/body_row.rb +12 -0
  10. data/lib/avmtrf1/inventario_sistemas/parser/header.rb +38 -0
  11. data/lib/avmtrf1/inventario_sistemas/parser/header_column.rb +27 -0
  12. data/lib/avmtrf1/inventario_sistemas/site_build.rb +71 -0
  13. data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base.rb +41 -0
  14. data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/elements.rb +54 -0
  15. data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/layout.rb +55 -0
  16. data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/stylesheet.css +57 -0
  17. data/lib/avmtrf1/inventario_sistemas/site_build/index.rb +20 -0
  18. data/lib/avmtrf1/inventario_sistemas/site_build/sistema.rb +62 -0
  19. data/lib/avmtrf1/inventario_sistemas/site_build/sistemas_index.rb +31 -0
  20. data/lib/avmtrf1/patches/eac_launcher/git/base.rb +0 -15
  21. data/lib/avmtrf1/redmine/instance.rb +2 -1
  22. data/lib/avmtrf1/rest_provider/instance.rb +13 -55
  23. data/lib/avmtrf1/rest_provider/instance/issues.rb +30 -0
  24. data/lib/avmtrf1/rest_provider/request.rb +44 -0
  25. data/lib/avmtrf1/rest_provider/response.rb +77 -0
  26. data/lib/avmtrf1/tools/application.rb +13 -0
  27. data/lib/avmtrf1/tools/runner.rb +16 -26
  28. data/lib/avmtrf1/tools/runner/check_point.rb +1 -1
  29. data/lib/avmtrf1/tools/runner/check_point/login.rb +1 -1
  30. data/lib/avmtrf1/tools/runner/esosti.rb +1 -1
  31. data/lib/avmtrf1/tools/runner/esosti/changed.rb +7 -2
  32. data/lib/avmtrf1/tools/runner/esosti/fetch.rb +7 -2
  33. data/lib/avmtrf1/tools/runner/esosti/request.rb +88 -0
  34. data/lib/avmtrf1/tools/runner/forponto.rb +1 -1
  35. data/lib/avmtrf1/tools/runner/forponto/espelho.rb +1 -1
  36. data/lib/avmtrf1/tools/runner/forponto/marcacoes.rb +1 -1
  37. data/lib/avmtrf1/tools/runner/forponto/resumos.rb +1 -1
  38. data/lib/avmtrf1/tools/runner/forponto/saldo.rb +1 -1
  39. data/lib/avmtrf1/tools/runner/git.rb +1 -1
  40. data/lib/avmtrf1/tools/runner/git/issues_check.rb +1 -1
  41. data/lib/avmtrf1/tools/runner/git/push_large.rb +1 -1
  42. data/lib/avmtrf1/tools/runner/inventario_sistemas.rb +71 -0
  43. data/lib/avmtrf1/tools/runner/openvpn.rb +38 -0
  44. data/lib/avmtrf1/tools/runner/oracle.rb +1 -1
  45. data/lib/avmtrf1/tools/runner/oracle/query.rb +1 -1
  46. data/lib/avmtrf1/tools/runner/oracle/source_get.rb +1 -1
  47. data/lib/avmtrf1/tools/runner/oracle/user_clear.rb +1 -1
  48. data/lib/avmtrf1/tools/runner/php.rb +8 -15
  49. data/lib/avmtrf1/tools/runner/php/docker.rb +19 -29
  50. data/lib/avmtrf1/tools/runner/red.rb +1 -1
  51. data/lib/avmtrf1/tools/runner/trf1_dspace_base0.rb +1 -1
  52. data/lib/avmtrf1/tools/runner/trf1_dspace_base0/deploy.rb +3 -3
  53. data/lib/avmtrf1/tools/version.rb +1 -1
  54. data/lib/avmtrf1/trf1_dspace_base0/deploy.rb +3 -3
  55. metadata +56 -10
@@ -0,0 +1,13 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_base0/application'
4
+
5
+ module Avmtrf1
6
+ module Tools
7
+ class << self
8
+ def application
9
+ @application ||= ::EacRubyBase0::Application.new(::File.expand_path('../../..', __dir__))
10
+ end
11
+ end
12
+ end
13
+ end
@@ -1,39 +1,29 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'aranha/selenium/driver_factory/base'
4
- require 'eac_ruby_utils/console/docopt_runner'
5
- require 'eac_ruby_utils/require_sub'
6
- require 'avmtrf1/tools/version'
7
4
  require 'avmtrf1/ruby/gems/not_found_error'
8
- require 'eac_ruby_utils/console/speaker'
5
+ require 'avmtrf1/tools/application'
6
+ require 'eac_ruby_base0/runner'
9
7
 
10
8
  module Avmtrf1
11
9
  module Tools
12
- class Runner < ::EacRubyUtils::Console::DocoptRunner
13
- ::EacRubyUtils.require_sub(__FILE__)
14
- include ::EacRubyUtils::Console::Speaker
15
-
16
- DOC = <<~DOCOPT
17
- Utilidades para AVM-TRF1 (http://redmine.trf1.gov.br/projects/avm-trf1).
18
-
19
- Usage:
20
- __PROGRAM__ [options] __SUBCOMMANDS__
21
- __PROGRAM__ -h | --help
22
- __PROGRAM__ --version
10
+ class Runner
11
+ require_sub __FILE__
12
+ include ::EacRubyBase0::Runner
13
+
14
+ runner_definition do
15
+ desc 'Utilidades para AVM-TRF1 (http://redmine.trf1.gov.br/projects/avm-trf1).'
16
+ bool_opt '-H', '--headless',
17
+ 'Quando usando Selenium não mostra a interface gráfica do navegador web.'
18
+ end
23
19
 
24
- Options:
25
- -h --help Show this screen.
26
- -v --version Show version.
27
- -H --headless Quando usando Selenium não mostra a interface gráfica do navegador web.
28
- DOCOPT
20
+ def application
21
+ ::Avmtrf1::Tools.application
22
+ end
29
23
 
30
24
  def run
31
- ::Aranha::Selenium::DriverFactory::Base.default_headless = options.fetch('--headless')
32
- if options.fetch('--version')
33
- out(::Avmtrf1::Tools::VERSION + "\n")
34
- else
35
- run_with_subcommand
36
- end
25
+ ::Aranha::Selenium::DriverFactory::Base.default_headless = parsed.headless?
26
+ super
37
27
  rescue ::Avmtrf1::Ruby::Gems::NotFoundError => e
38
28
  on_gem_not_found(e.dependency)
39
29
  end
@@ -5,7 +5,7 @@ require 'avmtrf1/tools/runner/check_point/login'
5
5
 
6
6
  module Avmtrf1
7
7
  module Tools
8
- class Runner < ::EacRubyUtils::Console::DocoptRunner
8
+ class Runner
9
9
  class CheckPoint < ::EacRubyUtils::Console::DocoptRunner
10
10
  DOC = <<~DOCOPT
11
11
  Utilidades para Check Point (https://cp.trf1.jus.br).
@@ -8,7 +8,7 @@ require 'avmtrf1/check_point/session'
8
8
 
9
9
  module Avmtrf1
10
10
  module Tools
11
- class Runner < ::EacRubyUtils::Console::DocoptRunner
11
+ class Runner
12
12
  class CheckPoint < ::EacRubyUtils::Console::DocoptRunner
13
13
  class Login < ::EacRubyUtils::Console::DocoptRunner
14
14
  include ::EacRubyUtils::SimpleCache
@@ -8,7 +8,7 @@ require 'avmtrf1/red/profile'
8
8
 
9
9
  module Avmtrf1
10
10
  module Tools
11
- class Runner < ::EacRubyUtils::Console::DocoptRunner
11
+ class Runner
12
12
  class Esosti < ::EacRubyUtils::Console::DocoptRunner
13
13
  require_sub __FILE__
14
14
  enable_console_speaker
@@ -8,7 +8,7 @@ require 'avmtrf1/red/profile'
8
8
 
9
9
  module Avmtrf1
10
10
  module Tools
11
- class Runner < ::EacRubyUtils::Console::DocoptRunner
11
+ class Runner
12
12
  class Esosti < ::EacRubyUtils::Console::DocoptRunner
13
13
  class Changed < ::EacRubyUtils::Console::DocoptRunner
14
14
  enable_console_speaker
@@ -27,6 +27,7 @@ module Avmtrf1
27
27
 
28
28
  def run
29
29
  infov 'Time', time
30
+ infov 'URL', request.url
30
31
  out data.to_yaml
31
32
  end
32
33
 
@@ -34,7 +35,11 @@ module Avmtrf1
34
35
 
35
36
  def data_uncached
36
37
  infom 'Recuperando informações...'
37
- context(:esosti_instance).changed(time)
38
+ request.response.body_data_or_raise
39
+ end
40
+
41
+ def request_uncached
42
+ context(:esosti_instance).changed_request(time)
38
43
  end
39
44
 
40
45
  def time
@@ -8,7 +8,7 @@ require 'avmtrf1/red/profile'
8
8
 
9
9
  module Avmtrf1
10
10
  module Tools
11
- class Runner < ::EacRubyUtils::Console::DocoptRunner
11
+ class Runner
12
12
  class Esosti < ::EacRubyUtils::Console::DocoptRunner
13
13
  class Fetch < ::EacRubyUtils::Console::DocoptRunner
14
14
  enable_console_speaker
@@ -26,15 +26,20 @@ module Avmtrf1
26
26
  DOCOPT
27
27
 
28
28
  def run
29
+ infov 'URL', request.url
29
30
  fatal_error("Issue não encontrado: #{solicitacao_id}") unless issue
30
31
  out issue.data.to_yaml
31
32
  end
32
33
 
33
34
  private
34
35
 
36
+ def request_uncached
37
+ context(:esosti_instance).issue_request(solicitacao_id)
38
+ end
39
+
35
40
  def issue_uncached
36
41
  infom "Recuperando informações de #{solicitacao_id}..."
37
- context(:esosti_instance).issue(solicitacao_id)
42
+ request.response.body_data_or_raise
38
43
  end
39
44
 
40
45
  def solicitacao_id
@@ -0,0 +1,88 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/console/docopt_runner'
4
+ require 'eac_ruby_utils/core_ext'
5
+ require 'avmtrf1/default_esosti'
6
+ require 'avmtrf1/ini'
7
+ require 'avmtrf1/red/profile'
8
+
9
+ module Avmtrf1
10
+ module Tools
11
+ class Runner
12
+ class Esosti < ::EacRubyUtils::Console::DocoptRunner
13
+ class Request < ::EacRubyUtils::Console::DocoptRunner
14
+ enable_console_speaker
15
+ enable_simple_cache
16
+
17
+ DOC = <<~DOCOPT
18
+ Requisições genéricas para e-Sosti (Control Desk).
19
+
20
+ Usage:
21
+ __PROGRAM__ [options] <url-suffix>
22
+ __PROGRAM__ -h | --help
23
+
24
+ Options:
25
+ -h --help Mostra esta ajuda.
26
+ -d --default Opções --json e --yaml.
27
+ -j --json Solicita resposta em JSON.
28
+ -x --xml Solicita resposta em XML.
29
+ -y --yaml Imprime saída em YAML.
30
+ DOCOPT
31
+
32
+ def run
33
+ start_banner
34
+ output_data
35
+ end
36
+
37
+ private
38
+
39
+ def json?
40
+ options.fetch('--json') || options.fetch('--default')
41
+ end
42
+
43
+ def start_banner
44
+ infov 'URL', request.url
45
+ infom 'Recuperando informações...'
46
+ infov 'Response status', response.status
47
+ end
48
+
49
+ def output_data
50
+ if yaml?
51
+ out ::YAML.dump(response.body_data)
52
+ else
53
+ out response.body_str
54
+ end
55
+ end
56
+
57
+ def request_uncached
58
+ context(:esosti_instance).request(url_suffix, request_headers)
59
+ end
60
+
61
+ def request_headers
62
+ r = {}
63
+ %w[json xml].each do |format|
64
+ r['Accept'] = "application/#{format}" if send("#{format}?")
65
+ end
66
+ r
67
+ end
68
+
69
+ def response_uncached
70
+ request.response
71
+ end
72
+
73
+ def url_suffix
74
+ options.fetch('<url-suffix>')
75
+ end
76
+
77
+ def xml?
78
+ options.fetch('--xml')
79
+ end
80
+
81
+ def yaml?
82
+ options.fetch('--yaml') || options.fetch('--default')
83
+ end
84
+ end
85
+ end
86
+ end
87
+ end
88
+ end
@@ -9,7 +9,7 @@ require 'avmtrf1/forponto/user'
9
9
 
10
10
  module Avmtrf1
11
11
  module Tools
12
- class Runner < ::EacRubyUtils::Console::DocoptRunner
12
+ class Runner
13
13
  class Forponto < ::EacRubyUtils::Console::DocoptRunner
14
14
  include ::EacRubyUtils::SimpleCache
15
15
  include ::EacRubyUtils::Console::Speaker
@@ -6,7 +6,7 @@ require 'eac_ruby_utils/simple_cache'
6
6
 
7
7
  module Avmtrf1
8
8
  module Tools
9
- class Runner < ::EacRubyUtils::Console::DocoptRunner
9
+ class Runner
10
10
  class Forponto < ::EacRubyUtils::Console::DocoptRunner
11
11
  class Espelho < ::EacRubyUtils::Console::DocoptRunner
12
12
  include ::EacRubyUtils::SimpleCache
@@ -6,7 +6,7 @@ require 'eac_ruby_utils/core_ext'
6
6
 
7
7
  module Avmtrf1
8
8
  module Tools
9
- class Runner < ::EacRubyUtils::Console::DocoptRunner
9
+ class Runner
10
10
  class Forponto < ::EacRubyUtils::Console::DocoptRunner
11
11
  class Marcacoes < ::EacRubyUtils::Console::DocoptRunner
12
12
  enable_console_speaker
@@ -6,7 +6,7 @@ require 'eac_ruby_utils/simple_cache'
6
6
 
7
7
  module Avmtrf1
8
8
  module Tools
9
- class Runner < ::EacRubyUtils::Console::DocoptRunner
9
+ class Runner
10
10
  class Forponto < ::EacRubyUtils::Console::DocoptRunner
11
11
  class Resumos < ::EacRubyUtils::Console::DocoptRunner
12
12
  include ::EacRubyUtils::SimpleCache
@@ -6,7 +6,7 @@ require 'eac_ruby_utils/simple_cache'
6
6
 
7
7
  module Avmtrf1
8
8
  module Tools
9
- class Runner < ::EacRubyUtils::Console::DocoptRunner
9
+ class Runner
10
10
  class Forponto < ::EacRubyUtils::Console::DocoptRunner
11
11
  class Saldo < ::EacRubyUtils::Console::DocoptRunner
12
12
  include ::EacRubyUtils::SimpleCache
@@ -8,7 +8,7 @@ require 'avmtrf1/patches/avm/git/issue/complete'
8
8
 
9
9
  module Avmtrf1
10
10
  module Tools
11
- class Runner < ::EacRubyUtils::Console::DocoptRunner
11
+ class Runner
12
12
  class Git < ::Avm::Tools::Runner::Git
13
13
  end
14
14
  end
@@ -7,7 +7,7 @@ require 'avmtrf1/git/cached_repository'
7
7
 
8
8
  module Avmtrf1
9
9
  module Tools
10
- class Runner < ::EacRubyUtils::Console::DocoptRunner
10
+ class Runner
11
11
  class Git < ::Avm::Tools::Runner::Git
12
12
  class IssuesCheck < ::EacRubyUtils::Console::DocoptRunner
13
13
  include ::EacRubyUtils::SimpleCache
@@ -5,7 +5,7 @@ require 'avmtrf1/git/push_large'
5
5
 
6
6
  module Avmtrf1
7
7
  module Tools
8
- class Runner < ::EacRubyUtils::Console::DocoptRunner
8
+ class Runner
9
9
  class Git < ::Avm::Tools::Runner::Git
10
10
  class PushLarge < ::EacRubyUtils::Console::DocoptRunner
11
11
  DOC = <<~DOCOPT
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/tools/runner/check_point/login'
4
+ require 'avmtrf1/inventario_sistemas/parser'
5
+ require 'eac_cli/core_ext'
6
+
7
+ module Avmtrf1
8
+ module Tools
9
+ class Runner
10
+ class InventarioSistemas
11
+ DEFAULT_OUTPUT_DIR = './inventario-sistemas'
12
+
13
+ runner_with :help do
14
+ desc 'Formata a planilha de inventário de sistemas do TRF1.'
15
+ bool_opt '-w', '--overwrite', 'Sobreescreve diretório de saída se já existir.'
16
+ arg_opt '-d', '--output-directory', "Diretório de saída [default: #{DEFAULT_OUTPUT_DIR}]."
17
+ pos_arg 'source-file-path'
18
+ end
19
+
20
+ def run
21
+ start_banner
22
+ prepare
23
+ build
24
+ end_banner
25
+ end
26
+
27
+ private
28
+
29
+ def end_banner
30
+ success "Aplicação gerada em #{output_directory}"
31
+ end
32
+
33
+ def build
34
+ site_build.run
35
+ end
36
+
37
+ def input_file_uncached
38
+ parsed.source_file_path.to_pathname.expand_path
39
+ end
40
+
41
+ def site_build_uncached
42
+ ::Avmtrf1::InventarioSistemas::SiteBuild.new(input_file, output_directory)
43
+ end
44
+
45
+ def output_directory_uncached
46
+ parsed.output_directory.if_present(DEFAULT_OUTPUT_DIR).to_pathname.expand_path
47
+ end
48
+
49
+ def overwrite?
50
+ parsed.overwrite?
51
+ end
52
+
53
+ def start_banner
54
+ infov 'Arquivo de entrada', input_file
55
+ infov 'Diretório de saída', output_directory
56
+ end
57
+
58
+ def prepare
59
+ return unless output_directory.exist?
60
+
61
+ if overwrite?
62
+ infom "Removendo \"#{output_directory}\"..."
63
+ ::FileUtils.rm_r(output_directory.to_path)
64
+ else
65
+ fatal_error "#{output_directory}: já existe (Utilize --overwrite para sobreescrever)"
66
+ end
67
+ end
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avmtrf1/executables'
4
+ require 'eac_cli/core_ext'
5
+
6
+ module Avmtrf1
7
+ module Tools
8
+ class Runner
9
+ class Openvpn
10
+ runner_with :help do
11
+ desc 'Conecta-se utilizando OpenVPN com configurações dinâmicas.'
12
+ bool_opt '-S', '--no-sudo', 'Não executa com "sudo".'
13
+ pos_arg :ovpn_path
14
+ end
15
+
16
+ def run
17
+ infov 'Arquivo de configuração', parsed.ovpn_path
18
+ infov 'Linha de comando', ::Shellwords.join(command.args)
19
+ infov 'Resultado', command.system
20
+ end
21
+
22
+ private
23
+
24
+ def command_uncached
25
+ if parsed.no_sudo?
26
+ ::Avmtrf1::Executables.env.command(*openvpn_args)
27
+ else
28
+ ::Avmtrf1::Executables.sudo.command(*openvpn_args)
29
+ end
30
+ end
31
+
32
+ def openvpn_args
33
+ ['openvpn', '--config', parsed.ovpn_path]
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end