avmtrf1-tools 0.30.0 → 0.31.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/lib/avmtrf1/inventario_sistemas.rb +40 -0
- data/lib/avmtrf1/inventario_sistemas/parser.rb +42 -0
- data/lib/avmtrf1/inventario_sistemas/parser/body.rb +27 -0
- data/lib/avmtrf1/inventario_sistemas/parser/body_row.rb +12 -0
- data/lib/avmtrf1/inventario_sistemas/parser/header.rb +38 -0
- data/lib/avmtrf1/inventario_sistemas/parser/header_column.rb +27 -0
- data/lib/avmtrf1/inventario_sistemas/site_build.rb +71 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base.rb +41 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/elements.rb +54 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/layout.rb +55 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/html_page_base/stylesheet.css +57 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/index.rb +20 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/sistema.rb +62 -0
- data/lib/avmtrf1/inventario_sistemas/site_build/sistemas_index.rb +31 -0
- data/lib/avmtrf1/patches/eac_launcher/git/base.rb +0 -15
- data/lib/avmtrf1/tools/runner/inventario_sistemas.rb +73 -0
- data/lib/avmtrf1/tools/version.rb +1 -1
- metadata +38 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c5bad455467daeed4b784815ef6ced2bc39df34293b23d68154fb346df27684
|
4
|
+
data.tar.gz: dfc6d8d87add56ea1ac6d24a454908ef787950b5613c7527659a288e3f11a99b
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ede8d1068d069269c3574f8b19a8ff457290cf42b9d159dbf4ffcf30a0161673d892e34b9c463e384118660363490e02a4b4e767a1af84d37f732d726bcfbe9c
|
7
|
+
data.tar.gz: fe50b0768fed63003306e5886a83841de7c814bd0e545885624d502e9a1a0af83e3378121c322591ac80acb348af1ac798000fdcbe72a10c8c3b2173845a9f92
|
@@ -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,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
|
@@ -0,0 +1,55 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
module Avmtrf1
|
4
|
+
class InventarioSistemas
|
5
|
+
class SiteBuild
|
6
|
+
class HtmlPageBase
|
7
|
+
module Layout
|
8
|
+
def metadata_info
|
9
|
+
"<div class='input_metadata'>" \
|
10
|
+
"Extraído de <strong>#{site.input_file.basename}</strong>." \
|
11
|
+
'</div>'
|
12
|
+
end
|
13
|
+
|
14
|
+
def output_body
|
15
|
+
<<HTML
|
16
|
+
<body><div id="top">
|
17
|
+
#{output_navbar}
|
18
|
+
<h1>#{site_title}</h1>
|
19
|
+
#{metadata_info}
|
20
|
+
</div><div id="inner">
|
21
|
+
<h2>#{title}</h2>
|
22
|
+
#{output_inner_content}
|
23
|
+
</div></body>
|
24
|
+
HTML
|
25
|
+
end
|
26
|
+
|
27
|
+
def output_content
|
28
|
+
"<html>\n" + output_header + output_body + '</html>'
|
29
|
+
end
|
30
|
+
|
31
|
+
def output_header
|
32
|
+
<<HTML
|
33
|
+
<head>
|
34
|
+
<meta charset="UTF-8">
|
35
|
+
<title>#{site_title} - #{title}</title>
|
36
|
+
<style>
|
37
|
+
#{::File.read(::File.join(__dir__, 'stylesheet.css'))}
|
38
|
+
</style>
|
39
|
+
</head>
|
40
|
+
HTML
|
41
|
+
end
|
42
|
+
|
43
|
+
def output_navbar
|
44
|
+
'<nav>' + output_navbar_path(false) + '</nav>'
|
45
|
+
end
|
46
|
+
|
47
|
+
def output_navbar_path(links)
|
48
|
+
(parent.present? ? parent.output_navbar_path(true) + NAVBAR_SEPARATOR : '') +
|
49
|
+
(links ? self_html_link : title)
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
@@ -0,0 +1,57 @@
|
|
1
|
+
body, #top, #top * {
|
2
|
+
padding: 0;
|
3
|
+
margin: 0;
|
4
|
+
box-sizing: border-box;
|
5
|
+
}
|
6
|
+
|
7
|
+
#top * {
|
8
|
+
padding: 0.3em;
|
9
|
+
}
|
10
|
+
|
11
|
+
#inner {
|
12
|
+
margin: 0.3em;
|
13
|
+
}
|
14
|
+
|
15
|
+
nav {
|
16
|
+
padding: 0.2em;
|
17
|
+
}
|
18
|
+
|
19
|
+
a {
|
20
|
+
color: blue;
|
21
|
+
}
|
22
|
+
|
23
|
+
a:visited {
|
24
|
+
color: darkblue;
|
25
|
+
}
|
26
|
+
|
27
|
+
h1 {
|
28
|
+
text-align: right;
|
29
|
+
background-color: lightyellow;
|
30
|
+
}
|
31
|
+
|
32
|
+
.input_metadata {
|
33
|
+
text-align: right;
|
34
|
+
background-color: lightblue;
|
35
|
+
}
|
36
|
+
|
37
|
+
table {
|
38
|
+
border: thin solid black;
|
39
|
+
border-collapse: collapse;
|
40
|
+
}
|
41
|
+
|
42
|
+
.odd {
|
43
|
+
background-color: lightgray;
|
44
|
+
}
|
45
|
+
|
46
|
+
td, th {
|
47
|
+
border-left: thin solid black;
|
48
|
+
}
|
49
|
+
|
50
|
+
th {
|
51
|
+
border-bottom: thin solid black;
|
52
|
+
}
|
53
|
+
|
54
|
+
nav, nav a, nav a:visited, th {
|
55
|
+
background-color: black;
|
56
|
+
color: white;
|
57
|
+
}
|
@@ -0,0 +1,20 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'avmtrf1/inventario_sistemas/site_build/html_page_base'
|
5
|
+
|
6
|
+
module Avmtrf1
|
7
|
+
class InventarioSistemas
|
8
|
+
class SiteBuild
|
9
|
+
class Index < ::Avmtrf1::InventarioSistemas::SiteBuild::HtmlPageBase
|
10
|
+
def output_inner_content
|
11
|
+
['<ul>', "<li>#{site.sistemas_index.self_html_link}</li>", '</ul>'].join("\n")
|
12
|
+
end
|
13
|
+
|
14
|
+
def title
|
15
|
+
'Índice'
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
20
|
+
end
|
@@ -0,0 +1,62 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'avmtrf1/inventario_sistemas/parser/header_column'
|
5
|
+
require 'avmtrf1/inventario_sistemas/site_build/html_page_base'
|
6
|
+
|
7
|
+
module Avmtrf1
|
8
|
+
class InventarioSistemas
|
9
|
+
class SiteBuild
|
10
|
+
class Sistema < ::Avmtrf1::InventarioSistemas::SiteBuild::HtmlPageBase
|
11
|
+
attr_reader :raw_row
|
12
|
+
|
13
|
+
def initialize(site, parent, raw_row)
|
14
|
+
super(site, parent)
|
15
|
+
@raw_row = raw_row
|
16
|
+
end
|
17
|
+
|
18
|
+
def id
|
19
|
+
nome.parameterize
|
20
|
+
end
|
21
|
+
|
22
|
+
def gestor
|
23
|
+
column_value('gestor na jf1', 'unidade')
|
24
|
+
end
|
25
|
+
|
26
|
+
def nome
|
27
|
+
column_value('sistema', 'sigla')
|
28
|
+
end
|
29
|
+
|
30
|
+
def producao
|
31
|
+
html_linkfy(column_value('ambientes', 'produção – serv. ap'))
|
32
|
+
end
|
33
|
+
|
34
|
+
def responsavel
|
35
|
+
%w[unidade seção nome]
|
36
|
+
.map { |sub| column_value('responsável pelo desenvolvimento', sub) }
|
37
|
+
.reject(&:blank?).join(' » ')
|
38
|
+
end
|
39
|
+
|
40
|
+
def output_inner_content
|
41
|
+
column_values = site.parser.header_columns.map { |c| [c.key, column_value(c)] }
|
42
|
+
'<h3>Detalhes</h3>' + html_table(%w[Campo Valor], column_values)
|
43
|
+
end
|
44
|
+
|
45
|
+
def title
|
46
|
+
nome
|
47
|
+
end
|
48
|
+
|
49
|
+
def column_value(main, sub = nil)
|
50
|
+
column = if main.is_a?(::Avmtrf1::InventarioSistemas::Parser::HeaderColumn)
|
51
|
+
main
|
52
|
+
else
|
53
|
+
site.column(main, sub)
|
54
|
+
end
|
55
|
+
raise 'Out of bound' if column.index >= raw_row.count
|
56
|
+
|
57
|
+
raw_row[column.index]
|
58
|
+
end
|
59
|
+
end
|
60
|
+
end
|
61
|
+
end
|
62
|
+
end
|
@@ -0,0 +1,31 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/core_ext'
|
4
|
+
require 'avmtrf1/inventario_sistemas/site_build/html_page_base'
|
5
|
+
|
6
|
+
module Avmtrf1
|
7
|
+
class InventarioSistemas
|
8
|
+
class SiteBuild
|
9
|
+
class SistemasIndex < ::Avmtrf1::InventarioSistemas::SiteBuild::HtmlPageBase
|
10
|
+
def output_inner_content
|
11
|
+
output_count + output_list
|
12
|
+
end
|
13
|
+
|
14
|
+
def title
|
15
|
+
'Sistemas'
|
16
|
+
end
|
17
|
+
|
18
|
+
def output_count
|
19
|
+
"<p>Quantidade: #{site.sistemas.count}</p>"
|
20
|
+
end
|
21
|
+
|
22
|
+
def output_list
|
23
|
+
html_table(
|
24
|
+
%w[Nome Produção Responsável Gestor],
|
25
|
+
site.sistemas.map { |s| [s.self_html_link, s.producao, s.responsavel, s.gestor] }
|
26
|
+
)
|
27
|
+
end
|
28
|
+
end
|
29
|
+
end
|
30
|
+
end
|
31
|
+
end
|
@@ -16,21 +16,6 @@ module Avmtrf1
|
|
16
16
|
end
|
17
17
|
|
18
18
|
module InstanceMethods
|
19
|
-
def execute(*args)
|
20
|
-
args, options = build_args(args)
|
21
|
-
::EacRubyUtils::Envs.local.command(*args).execute(options)
|
22
|
-
end
|
23
|
-
|
24
|
-
def system(*args)
|
25
|
-
args, options = build_args(args)
|
26
|
-
::EacRubyUtils::Envs.local.command(*args).system(options)
|
27
|
-
end
|
28
|
-
|
29
|
-
def command(*args)
|
30
|
-
args, _options = build_args(args)
|
31
|
-
::EacRubyUtils::Envs.local.command(*args)
|
32
|
-
end
|
33
|
-
|
34
19
|
def status_files
|
35
20
|
execute!('-c', 'core.quotepath=off', 'status', '--porcelain').each_line.map do |line|
|
36
21
|
parse_status_file(line)
|
@@ -0,0 +1,73 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
3
|
+
require 'eac_ruby_utils/console/docopt_runner'
|
4
|
+
require 'avmtrf1/tools/runner/check_point/login'
|
5
|
+
require 'avmtrf1/inventario_sistemas/parser'
|
6
|
+
|
7
|
+
module Avmtrf1
|
8
|
+
module Tools
|
9
|
+
class Runner < ::EacRubyUtils::Console::DocoptRunner
|
10
|
+
class InventarioSistemas < ::EacRubyUtils::Console::DocoptRunner
|
11
|
+
include ::EacCli::DefaultRunner
|
12
|
+
|
13
|
+
DEFAULT_OUTPUT_DIR = './inventario-sistemas'
|
14
|
+
|
15
|
+
runner_definition do
|
16
|
+
desc 'Formata a planilha de inventário de sistemas do TRF1.'
|
17
|
+
bool_opt '-w', '--overwrite', 'Sobreescreve diretório de saída se já existir.'
|
18
|
+
arg_opt '-d', '--output-directory', "Diretório de saída [default: #{DEFAULT_OUTPUT_DIR}]."
|
19
|
+
pos_arg 'source-file-path'
|
20
|
+
end
|
21
|
+
|
22
|
+
def run
|
23
|
+
start_banner
|
24
|
+
prepare
|
25
|
+
build
|
26
|
+
end_banner
|
27
|
+
end
|
28
|
+
|
29
|
+
private
|
30
|
+
|
31
|
+
def end_banner
|
32
|
+
success "Aplicação gerada em #{output_directory}"
|
33
|
+
end
|
34
|
+
|
35
|
+
def build
|
36
|
+
site_build.run
|
37
|
+
end
|
38
|
+
|
39
|
+
def input_file_uncached
|
40
|
+
options.fetch('<source-file-path>').to_pathname.expand_path
|
41
|
+
end
|
42
|
+
|
43
|
+
def site_build_uncached
|
44
|
+
::Avmtrf1::InventarioSistemas::SiteBuild.new(input_file, output_directory)
|
45
|
+
end
|
46
|
+
|
47
|
+
def output_directory_uncached
|
48
|
+
options.fetch('--output-directory').if_present(DEFAULT_OUTPUT_DIR).to_pathname.expand_path
|
49
|
+
end
|
50
|
+
|
51
|
+
def overwrite?
|
52
|
+
options.fetch('--overwrite')
|
53
|
+
end
|
54
|
+
|
55
|
+
def start_banner
|
56
|
+
infov 'Arquivo de entrada', input_file
|
57
|
+
infov 'Diretório de saída', output_directory
|
58
|
+
end
|
59
|
+
|
60
|
+
def prepare
|
61
|
+
return unless output_directory.exist?
|
62
|
+
|
63
|
+
if overwrite?
|
64
|
+
infom "Removendo \"#{output_directory}\"..."
|
65
|
+
::FileUtils.rm_r(output_directory.to_path)
|
66
|
+
else
|
67
|
+
fatal_error "#{output_directory}: já existe (Utilize --overwrite para sobreescrever)"
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
71
|
+
end
|
72
|
+
end
|
73
|
+
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: avmtrf1-tools
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.31.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Eduardo H. Bogoni
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-08-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: aranha-parsers
|
@@ -168,6 +168,26 @@ dependencies:
|
|
168
168
|
- - ">="
|
169
169
|
- !ruby/object:Gem::Version
|
170
170
|
version: 1.1.1
|
171
|
+
- !ruby/object:Gem::Dependency
|
172
|
+
name: roo
|
173
|
+
requirement: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - "~>"
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '2.8'
|
178
|
+
- - ">="
|
179
|
+
- !ruby/object:Gem::Version
|
180
|
+
version: 2.8.3
|
181
|
+
type: :runtime
|
182
|
+
prerelease: false
|
183
|
+
version_requirements: !ruby/object:Gem::Requirement
|
184
|
+
requirements:
|
185
|
+
- - "~>"
|
186
|
+
- !ruby/object:Gem::Version
|
187
|
+
version: '2.8'
|
188
|
+
- - ">="
|
189
|
+
- !ruby/object:Gem::Version
|
190
|
+
version: 2.8.3
|
171
191
|
- !ruby/object:Gem::Dependency
|
172
192
|
name: eac_ruby_gem_support
|
173
193
|
requirement: !ruby/object:Gem::Requirement
|
@@ -259,6 +279,20 @@ files:
|
|
259
279
|
- lib/avmtrf1/git/reference.rb
|
260
280
|
- lib/avmtrf1/ini.rb
|
261
281
|
- lib/avmtrf1/ini/profile.rb
|
282
|
+
- lib/avmtrf1/inventario_sistemas.rb
|
283
|
+
- lib/avmtrf1/inventario_sistemas/parser.rb
|
284
|
+
- lib/avmtrf1/inventario_sistemas/parser/body.rb
|
285
|
+
- lib/avmtrf1/inventario_sistemas/parser/body_row.rb
|
286
|
+
- lib/avmtrf1/inventario_sistemas/parser/header.rb
|
287
|
+
- lib/avmtrf1/inventario_sistemas/parser/header_column.rb
|
288
|
+
- lib/avmtrf1/inventario_sistemas/site_build.rb
|
289
|
+
- lib/avmtrf1/inventario_sistemas/site_build/html_page_base.rb
|
290
|
+
- lib/avmtrf1/inventario_sistemas/site_build/html_page_base/elements.rb
|
291
|
+
- lib/avmtrf1/inventario_sistemas/site_build/html_page_base/layout.rb
|
292
|
+
- lib/avmtrf1/inventario_sistemas/site_build/html_page_base/stylesheet.css
|
293
|
+
- lib/avmtrf1/inventario_sistemas/site_build/index.rb
|
294
|
+
- lib/avmtrf1/inventario_sistemas/site_build/sistema.rb
|
295
|
+
- lib/avmtrf1/inventario_sistemas/site_build/sistemas_index.rb
|
262
296
|
- lib/avmtrf1/issues.rb
|
263
297
|
- lib/avmtrf1/issues/factory.rb
|
264
298
|
- lib/avmtrf1/jira.rb
|
@@ -324,6 +358,7 @@ files:
|
|
324
358
|
- lib/avmtrf1/tools/runner/git.rb
|
325
359
|
- lib/avmtrf1/tools/runner/git/issues_check.rb
|
326
360
|
- lib/avmtrf1/tools/runner/git/push_large.rb
|
361
|
+
- lib/avmtrf1/tools/runner/inventario_sistemas.rb
|
327
362
|
- lib/avmtrf1/tools/runner/oracle.rb
|
328
363
|
- lib/avmtrf1/tools/runner/oracle/query.rb
|
329
364
|
- lib/avmtrf1/tools/runner/oracle/source_get.rb
|
@@ -368,8 +403,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
368
403
|
- !ruby/object:Gem::Version
|
369
404
|
version: '0'
|
370
405
|
requirements: []
|
371
|
-
|
372
|
-
rubygems_version: 2.7.7
|
406
|
+
rubygems_version: 3.0.8
|
373
407
|
signing_key:
|
374
408
|
specification_version: 4
|
375
409
|
summary: Ferramentas para AVM-TRF1.
|