avmtrf1-tools 0.29.0 → 0.32.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 (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
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: deffef9fed701fdd895529665042b9e0d4ff93932eef2f51e66d5bcf82ede6b2
4
- data.tar.gz: 882cd5b9a5a0397bfde0c6e0bece1120e260374cf45205cb649257145201814f
3
+ metadata.gz: d9aa73e79e88cb8fc99c82fcba49ed37759cbedf50e56638043a5c2d2eb21ead
4
+ data.tar.gz: 10cd681c9fdf7204ad4a2f1b114618cb1423275488dbf4a10c6b9131109a9d82
5
5
  SHA512:
6
- metadata.gz: 3e724ff217082ef2242ab23d1ea6246e3a72f67248ea53418c9eb6b293ce3d11f8a1eebaa5bda4b3bac4e0bd5ea99afc96c33d77e2d7e25e080c8f7fbbd590a2
7
- data.tar.gz: '09c35fc0433617d22eb1efce1d9ff57ba7b100002b0b1d9f49a7875ae24ea3a5a927b59f6cdd2ac01ccd1b2fb331602d20113f3b7094d35e76e7242ef68e34a4'
6
+ metadata.gz: 25533ea02ba54e86d4db42d91c79d9d5c8dcaf08f91530e0a8b94cfce4bdf13a32bec4972186d021ea1716111dc352a57e6fb929bef1c7b8f3d3ce6e389e07fc
7
+ data.tar.gz: 2999ace653f5ae5a4d97ac0ab859e52ba103ac2a7907f27d7d6de11017b6ad2b3b86635922c28040d9a1accacd4f52c005baa2c79bbbe93538e16d05b633bfce
@@ -2,10 +2,13 @@
2
2
 
3
3
  require 'avmtrf1/ad_user'
4
4
  require 'avmtrf1/check_point/session/login'
5
+ require 'eac_ruby_utils/core_ext'
5
6
 
6
7
  module Avmtrf1
7
8
  module CheckPoint
8
9
  class Session
10
+ enable_simple_cache
11
+
9
12
  ROOT_URL = 'https://cp.trf1.jus.br'
10
13
  LOGIN_URL = "#{ROOT_URL}/connect/PortalMain"
11
14
  LOGGED_TITLE_TEXT = 'Network Access Granted'
@@ -24,15 +27,7 @@ module Avmtrf1
24
27
  end
25
28
  end
26
29
 
27
- attr_reader :username, :password, :session
28
-
29
- def initialize(username, password, driver_options = {})
30
- @username = username
31
- @password = password
32
- @session = ::Aranha::Selenium::Session.new(
33
- driver_options.merge(accept_insecure_certs: true)
34
- )
35
- end
30
+ common_constructor :username, :password, :driver_options, default: [{}]
36
31
 
37
32
  def logged?
38
33
  session.navigate.to LOGIN_URL
@@ -54,6 +49,12 @@ module Avmtrf1
54
49
  end
55
50
  result_text
56
51
  end
52
+
53
+ private
54
+
55
+ def session_uncached
56
+ ::Aranha::Selenium::Session.new(driver_options.merge(accept_insecure_certs: true))
57
+ end
57
58
  end
58
59
  end
59
60
  end
@@ -1,19 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'avmtrf1/esosti/raw_data_sanitizer'
4
+ require 'eac_ruby_utils/core_ext'
4
5
 
5
6
  module Avmtrf1
6
7
  module Esosti
7
8
  class Instance < ::Avmtrf1::RestProvider::Instance
8
9
  module Changed
9
10
  def changed(since)
10
- changed_parse_result(request(changed_url_suffix(since)))
11
+ changed_request(since).response.body_data_or_raise
11
12
  end
12
13
 
13
- def changed_parse_result(raw_data)
14
- ::Avmtrf1::Esosti::RawDataSanitizer.sanitize(
15
- raw_data.fetch('TICKETMboSet').fetch('TICKET')
16
- ).map { |ticket| ticket.fetch('Attributes').fetch('TICKETID').downcase }
14
+ def changed_request(since)
15
+ request_json(changed_url_suffix(since)) do |data|
16
+ ::Avmtrf1::Esosti::RawDataSanitizer.sanitize(
17
+ data.fetch('TICKETMboSet').fetch('TICKET')
18
+ ).map { |ticket| ticket.fetch('Attributes').fetch('TICKETID').downcase }
19
+ end
17
20
  end
18
21
 
19
22
  def changed_url_suffix(since)
@@ -1,14 +1,22 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'eac_ruby_utils/core_ext'
4
+
3
5
  module Avmtrf1
4
6
  module Executables
5
7
  class << self
8
+ enable_simple_cache
9
+
6
10
  def env
7
11
  ::EacRubyUtils::Envs.local
8
12
  end
9
13
 
10
- def docker
11
- @docker ||= env.executable('docker', '--version')
14
+ private
15
+
16
+ %w[docker sudo].each do |program|
17
+ define_method(program.underscore + '_uncached') do
18
+ env.executable(program, '--version')
19
+ end
12
20
  end
13
21
  end
14
22
  end
@@ -117,7 +117,7 @@ module Avmtrf1
117
117
  def cached_data
118
118
  raise 'There is no data cached' unless data_cache.cached?
119
119
 
120
- ::EacRubyUtils::Yaml.load_common(data_cache.read)
120
+ ::EacRubyUtils::Yaml.load(data_cache.read)
121
121
  end
122
122
 
123
123
  def fresh_data
@@ -0,0 +1,40 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'roo'
5
+
6
+ module Avmtrf1
7
+ class InventarioSistemas
8
+ require_sub __FILE__, include_modules: true
9
+
10
+ SHEET_NAME = 'TRF1'
11
+ UNUSED_OFFSET = 1
12
+ UNUSED_SIZE = 2
13
+ HEADER_OFFSET = UNUSED_OFFSET + UNUSED_SIZE
14
+ HEADER_SIZE = 2
15
+ BODY_OFFSET = HEADER_OFFSET + HEADER_SIZE
16
+
17
+ enable_simple_cache
18
+ common_constructor :path do
19
+ self.path = path.to_pathname
20
+ end
21
+
22
+ def to_s
23
+ path.to_s
24
+ end
25
+
26
+ private
27
+
28
+ def roo_uncached
29
+ ::Roo::Spreadsheet.open(path.to_path)
30
+ end
31
+
32
+ def sheet_uncached
33
+ roo.sheet(SHEET_NAME) || raise("Sheet not found: \"#{SHEET_NAME}\"")
34
+ end
35
+
36
+ def sheet_row_count
37
+ sheet.last_row
38
+ end
39
+ end
40
+ end
@@ -0,0 +1,42 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'roo'
5
+
6
+ module Avmtrf1
7
+ class InventarioSistemas
8
+ class Parser
9
+ require_sub __FILE__, include_modules: true
10
+
11
+ SHEET_NAME = 'TRF1'
12
+ UNUSED_OFFSET = 1
13
+ UNUSED_SIZE = 2
14
+ HEADER_OFFSET = UNUSED_OFFSET + UNUSED_SIZE
15
+ HEADER_SIZE = 2
16
+ BODY_OFFSET = HEADER_OFFSET + HEADER_SIZE
17
+
18
+ enable_simple_cache
19
+ common_constructor :path do
20
+ self.path = path.to_pathname
21
+ end
22
+
23
+ def to_s
24
+ path.to_s
25
+ end
26
+
27
+ private
28
+
29
+ def roo_uncached
30
+ ::Roo::Spreadsheet.open(path.to_path)
31
+ end
32
+
33
+ def sheet_uncached
34
+ roo.sheet(SHEET_NAME) || raise("Sheet not found: \"#{SHEET_NAME}\"")
35
+ end
36
+
37
+ def sheet_row_count
38
+ sheet.last_row
39
+ end
40
+ end
41
+ end
42
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avmtrf1
6
+ class InventarioSistemas
7
+ class Parser
8
+ module Body
9
+ def body_rows_uncached
10
+ index = 0
11
+ r = []
12
+ loop do
13
+ raw_row_i = BODY_OFFSET + index
14
+ return r if raw_row_i > sheet.last_row
15
+
16
+ r << sheet.row(raw_row_i).map { |v| v.to_s.strip }
17
+ index += 1
18
+ end
19
+ end
20
+
21
+ def body_rows_offset
22
+ Header::HEADER_ROW_OFFSET + Header::HEADER_ROWS_SIZE
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,12 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avmtrf1
6
+ class InventarioSistemas
7
+ class Parser
8
+ class BodyRow
9
+ end
10
+ end
11
+ end
12
+ end
@@ -0,0 +1,38 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avmtrf1
6
+ class InventarioSistemas
7
+ class Parser
8
+ module Header
9
+ HEADER_ROW_OFFSET = 3
10
+ HEADER_ROWS_SIZE = 2
11
+
12
+ private
13
+
14
+ def header_columns_uncached
15
+ r = []
16
+ last_main = nil
17
+ main_row.each_with_index do |main, index|
18
+ sub = sub_row[index]
19
+ main ||= last_main
20
+ raise "[main] is blank (Index: #{index}, Sub: #{sub})" if main.blank?
21
+
22
+ r << HeaderColumn.new(index, main, sub)
23
+ last_main = main if main.present?
24
+ end
25
+ r
26
+ end
27
+
28
+ def main_row_uncached
29
+ sheet.row(HEADER_ROW_OFFSET)
30
+ end
31
+
32
+ def sub_row_uncached
33
+ sheet.row(HEADER_ROW_OFFSET + 1)
34
+ end
35
+ end
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avmtrf1
6
+ class InventarioSistemas
7
+ class Parser
8
+ class HeaderColumn
9
+ class << self
10
+ def build_id(main, sub)
11
+ "#{main}_#{sub || 'nil'}".downcase.parameterize
12
+ end
13
+ end
14
+
15
+ common_constructor :index, :main, :sub
16
+
17
+ def id
18
+ self.class.build_id(main, sub)
19
+ end
20
+
21
+ def key
22
+ main + sub.if_present('') { |v| "/#{v}" }
23
+ end
24
+ end
25
+ end
26
+ end
27
+ end
@@ -0,0 +1,71 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avmtrf1
6
+ class InventarioSistemas
7
+ class SiteBuild
8
+ require_sub __FILE__
9
+ enable_simple_cache
10
+ common_constructor :input_file, :output_directory
11
+
12
+ UNIQUES = %w[index sistemas_index].freeze
13
+
14
+ def run
15
+ create_output_directory
16
+ build_uniques
17
+ build_sistemas
18
+ end
19
+
20
+ def column(main, sub)
21
+ indexed_columns.fetch(
22
+ ::Avmtrf1::InventarioSistemas::Parser::HeaderColumn.build_id(main, sub)
23
+ )
24
+ end
25
+
26
+ private
27
+
28
+ def build_uniques
29
+ UNIQUES.each { |unique| send(unique).build }
30
+ end
31
+
32
+ def build_sistemas
33
+ sistemas.each(&:build)
34
+ end
35
+
36
+ def create_output_directory
37
+ output_directory.mkpath
38
+ end
39
+
40
+ def parser_uncached
41
+ ::Avmtrf1::InventarioSistemas::Parser.new(input_file)
42
+ end
43
+
44
+ def sistemas_uncached
45
+ parser.body_rows
46
+ .map { |body_row| new_sistema(body_row) }
47
+ .sort_by { |sistema| [sistema.title.downcase] }
48
+ end
49
+
50
+ def indexed_columns_uncached
51
+ parser.header_columns.map do |c|
52
+ [c.id, c]
53
+ end.to_h
54
+ end
55
+
56
+ def index_uncached
57
+ ::Avmtrf1::InventarioSistemas::SiteBuild::Index.new(self, nil)
58
+ end
59
+
60
+ def sistemas_index_uncached
61
+ ::Avmtrf1::InventarioSistemas::SiteBuild::SistemasIndex.new(self, index)
62
+ end
63
+
64
+ def new_sistema(body_row)
65
+ ::Avmtrf1::InventarioSistemas::SiteBuild::Sistema.new(
66
+ self, sistemas_index, body_row
67
+ )
68
+ end
69
+ end
70
+ end
71
+ end
@@ -0,0 +1,41 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+
5
+ module Avmtrf1
6
+ class InventarioSistemas
7
+ class SiteBuild
8
+ class HtmlPageBase
9
+ require_sub __FILE__, include_modules: true
10
+ enable_console_speaker
11
+ common_constructor :site, :parent
12
+
13
+ SITE_TITLE = 'Inventário de Sistemas'
14
+ NAVBAR_SEPARATOR = ' > '
15
+
16
+ def build
17
+ infom "Building #{href}..."
18
+ output_path.write(output_content)
19
+ end
20
+
21
+ def href
22
+ "#{uid}.html"
23
+ end
24
+
25
+ def output_path
26
+ site.output_directory.join(href)
27
+ end
28
+
29
+ def uid
30
+ r = self.class.name.demodulize
31
+ r += "_#{id}" if respond_to?(:id)
32
+ r.parameterize
33
+ end
34
+
35
+ def site_title
36
+ SITE_TITLE.to_s
37
+ end
38
+ end
39
+ end
40
+ end
41
+ end
@@ -0,0 +1,54 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'addressable'
4
+
5
+ module Avmtrf1
6
+ class InventarioSistemas
7
+ class SiteBuild
8
+ class HtmlPageBase
9
+ module Elements
10
+ def html_link(link_text, link_href)
11
+ "<a href=#{link_href}>#{link_text}</a>"
12
+ end
13
+
14
+ def html_linkfy(input)
15
+ output = url_or_text(input)
16
+ if output.is_a?(::Addressable::URI)
17
+ html_link(output, output)
18
+ else
19
+ output
20
+ end
21
+ end
22
+
23
+ def html_table(columns, rows)
24
+ b = '<table><theader>'
25
+ b += html_table_row(columns, 'th', '')
26
+ b += '</theader><tbody>'
27
+ rows.each_with_index do |row, index|
28
+ b += html_table_row(row, 'td', (index % 2).zero? ? 'even' : 'odd')
29
+ end
30
+ b + '</tbody></theader>'
31
+ end
32
+
33
+ def html_table_row(values, tag, css_class)
34
+ begin_tag = "<#{tag} class='#{css_class}'>"
35
+ end_tag = "</#{tag}>"
36
+ '<tr>' + values.map { |v| begin_tag + v + end_tag }.join + "</tr>\n"
37
+ end
38
+
39
+ def self_html_link
40
+ html_link(title, href)
41
+ end
42
+
43
+ def url_or_text(input)
44
+ converted_input = input.gsub('\\', '/').gsub(%r{\A//}, 'smb://')
45
+ uri = ::Addressable::URI.parse(converted_input)
46
+ uri.scheme.present? && uri.host.present? ? uri : input
47
+ rescue Addressable::URI::InvalidURIError
48
+ input
49
+ end
50
+ end
51
+ end
52
+ end
53
+ end
54
+ end