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
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