teodoro 0.0.7 → 0.0.8

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b847466dec2ee0dfa4debb804d5af16dd183dcceeeb28664d0adea46b3f4ec95
4
- data.tar.gz: 4c7aacf5cfdaf9af17298538947fb59cdfa82fd069d1136f06300cde54d3f463
3
+ metadata.gz: 715220b95bb70bc46665ecff3b112fc2d5ed6496ce069c1f186b9c2763b28c90
4
+ data.tar.gz: 753ce68d220b8134f457df47ac6cefd007530a10d51534689e816a091819228d
5
5
  SHA512:
6
- metadata.gz: 2dc6d426102161726682f79f701f2b481bf14c9a65f4838663d808c31cdf804a1fd651bc4f3116cc8a82ba7efec16405e8d336ea4ae484e26b2e8c651cbfdbf9
7
- data.tar.gz: 07ce6e6d6f2e57a3358dd77d6a218c28e09b92f8abe1420924dd79d4c22fe62cfb1695cd4b0b9630d7e6bbca9fab27caee932258bc6fc8dbba6b44f7dedff23e
6
+ metadata.gz: 8ae28ea683456163c96e3efa9f78bcc9b3f880826bb46c2267a608757c0d8f8225e5209c19bf1b46e916d4724c240272813274c336c3221cdd46c5e144fa386e
7
+ data.tar.gz: f9c43aabab55122d8ca1044da63a0496baeacd6039cfdfc5a00679b508fe9744d2ea1188a6523ab340a44fb03a0c93e8a6543574be364bb12a7147c5f2e4f828
data/bin/teodoro CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'teodoro'
3
- Teodoro::Execucao.new(ARGV).call
3
+ Teodoro.call(ARGV)
data/lib/teodoro.rb CHANGED
@@ -2,7 +2,80 @@ require 'nokogiri'
2
2
  require 'os'
3
3
  require 'zip'
4
4
 
5
- require_relative 'teodoro/execucao'
5
+ require_relative 'teodoro/console'
6
+ require_relative 'teodoro/empresa'
6
7
 
7
8
  module Teodoro
9
+ def self.call(args)
10
+ Execution.new(args).call
11
+ end
12
+
13
+ class Execution
14
+ NOME_DO_PROGRAMA = 'teodoro'.freeze
15
+
16
+ private
17
+
18
+ def initialize(args)
19
+ @args = args
20
+ end
21
+
22
+ attr_reader :args
23
+
24
+ public
25
+
26
+ def call
27
+ executar
28
+ rescue StandardError => e
29
+ Console.print e.message, *e.backtrace, color: :red
30
+ exit
31
+ end
32
+
33
+ private
34
+
35
+ def executar
36
+ validar_argumentos
37
+ validar_existencia_do_diretorio_de_origem
38
+ validar_que_diretorio_de_origem_nao_esta_vazio
39
+ validar_que_diretorio_de_destino_esta_vazio
40
+
41
+ processar_empresas
42
+ end
43
+
44
+ def validar_argumentos
45
+ erro "#{NOME_DO_PROGRAMA} [diretório de origem] [diretório de destino]" unless args.size == 2
46
+ end
47
+
48
+ def validar_existencia_do_diretorio_de_origem
49
+ erro 'Diretório de origem não existe.' unless File.directory?(origem)
50
+ end
51
+
52
+ def origem
53
+ @origem ||= args[0]
54
+ end
55
+
56
+ def validar_que_diretorio_de_origem_nao_esta_vazio
57
+ erro 'Diretório de origem vazio.' if Dir.empty?(origem)
58
+ end
59
+
60
+ def validar_que_diretorio_de_destino_esta_vazio
61
+ erro 'Diretório de destino deve estar vazio.' unless Dir.empty?(destino)
62
+ end
63
+
64
+ def destino
65
+ @destino ||= args[1]
66
+ end
67
+
68
+ def erro(erro)
69
+ puts erro
70
+ exit
71
+ end
72
+
73
+ def processar_empresas
74
+ empresas.each(&:processar)
75
+ end
76
+
77
+ def empresas
78
+ Dir[File.join(origem, '*')].map { |caminho| Empresa.new(caminho: caminho, destino: destino) }
79
+ end
80
+ end
8
81
  end
@@ -5,17 +5,12 @@ module Teodoro
5
5
  attr_reader :xml_do_evento, :xml_do_recibo, :destino_dos_arquivos_data
6
6
 
7
7
  def criar_arquivo_data
8
- raise if File.exist?(caminho_do_arquivo_data)
8
+ raise caminho_do_arquivo_data if File.exist?(caminho_do_arquivo_data)
9
9
 
10
10
  File.write(caminho_do_arquivo_data, conteudo_do_arquivo_data)
11
11
  end
12
12
 
13
- def caminho_do_arquivo_data
14
- criar_caminho_do_arquivo_data(nome_do_arquivo_data)
15
- end
16
-
17
13
  def criar_caminho_do_arquivo_data(nome_do_arquivo)
18
- # FIXME: Tales demais caracteres especiais
19
14
  File.join(
20
15
  destino_dos_arquivos_data,
21
16
  "#{windows? ? nome_do_arquivo.gsub(%r{[<|>:"/\\?*]}, '_') : nome_do_arquivo}.data"
@@ -50,5 +50,9 @@ module Teodoro
50
50
  def numero_do_recibo
51
51
  recibo['retornoEvento/recibo/nrRecibo']
52
52
  end
53
+
54
+ def caminho_do_arquivo_data
55
+ criar_caminho_do_arquivo_data(nome_do_arquivo_data)
56
+ end
53
57
  end
54
58
  end
@@ -14,7 +14,7 @@ module Teodoro
14
14
  public
15
15
 
16
16
  def descompactar
17
- puts File.basename(caminho)
17
+ print "\e[2Kdescompactando #{File.basename(caminho)}...\r"
18
18
 
19
19
  Zip::File.open(caminho) do |zip|
20
20
  zip
@@ -24,6 +24,8 @@ module Teodoro
24
24
  end
25
25
 
26
26
  def processar
27
+ print "\e[2Kprocessando #{nome}.xml...\r"
28
+
27
29
  return unless %w[S1000 S1005 S1010 S1020 S1030 S1040 S1050 S1070 S2190 S2200 S2205 S2206 S2230 S2250 S2300 S2306]
28
30
  .include?(tipo_de_evento)
29
31
 
@@ -21,12 +21,12 @@ module Teodoro
21
21
  descompactar_arquivos_de_origem
22
22
  criar_diretorio_dos_arquivos_data
23
23
  processar_arquivos_xml
24
+ limpar_linha_de_feedback
24
25
  end
25
26
 
26
27
  private
27
28
 
28
29
  def dar_feedback_para_o_usuario
29
- puts ''
30
30
  Console.print nome_do_diretorio, color: :green
31
31
  end
32
32
 
@@ -81,5 +81,9 @@ module Teodoro
81
81
  def de_recibo_para_nome_do_arquivo_data
82
82
  @de_recibo_para_nome_do_arquivo_data ||= {}
83
83
  end
84
+
85
+ def limpar_linha_de_feedback
86
+ print "\e[2K"
87
+ end
84
88
  end
85
89
  end
@@ -18,7 +18,11 @@ module Teodoro
18
18
  end
19
19
 
20
20
  def identificacao_do_arquivo_data
21
- ['RUB', codigo]
21
+ ['RUB', "#{identificador_da_tabela_de_rubricas}_#{codigo}"] # FIXME: Tales
22
+ end
23
+
24
+ def identificador_da_tabela_de_rubricas
25
+ @identificador_da_tabela_de_rubricas ||= evento['evtTabRubrica/infoRubrica/*/ideRubrica/ideTabRubr']
22
26
  end
23
27
 
24
28
  def codigo
@@ -36,7 +40,7 @@ module Teodoro
36
40
  ['InicioValidade', inicio_da_validade],
37
41
  ['FimValidade', fim_da_validade],
38
42
  ['chkIdTabelaRubrica'],
39
- ['IdTabelaRubrica', evento['evtTabRubrica/infoRubrica/*/ideRubrica/ideTabRubr']],
43
+ ['IdTabelaRubrica', identificador_da_tabela_de_rubricas],
40
44
  ['IdTabelaRubricaText'],
41
45
  ['DadosRubrica_Descricao', evento['evtTabRubrica/infoRubrica/*/dadosRubrica/dscRubr']],
42
46
  ['DadosRubrica_Natureza', evento['evtTabRubrica/infoRubrica/*/dadosRubrica/natRubr']],
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teodoro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.7
4
+ version: 0.0.8
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clavius Tales
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-04-08 00:00:00.000000000 Z
11
+ date: 2021-04-09 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
@@ -181,7 +181,6 @@ files:
181
181
  - lib/teodoro/cnpj.rb
182
182
  - lib/teodoro/console.rb
183
183
  - lib/teodoro/empresa.rb
184
- - lib/teodoro/execucao.rb
185
184
  - lib/teodoro/leiaute_2_4_1.rb
186
185
  - lib/teodoro/leiaute_2_4_1/arquivo_s1000.rb
187
186
  - lib/teodoro/leiaute_2_4_1/arquivo_s1005.rb
@@ -1,73 +0,0 @@
1
- require_relative 'console'
2
- require_relative 'empresa'
3
-
4
- module Teodoro
5
- class Execucao
6
- NOME_DO_PROGRAMA = 'teodoro'.freeze
7
-
8
- private
9
-
10
- def initialize(args)
11
- @args = args
12
- end
13
-
14
- attr_reader :args
15
-
16
- public
17
-
18
- def call
19
- executar
20
- rescue StandardError => e
21
- Console.print e.message, *e.backtrace, color: :red
22
- exit
23
- end
24
-
25
- private
26
-
27
- def executar
28
- validar_argumentos
29
- validar_existencia_do_diretorio_de_origem
30
- validar_que_diretorio_de_origem_nao_esta_vazio
31
- validar_que_diretorio_de_destino_esta_vazio
32
-
33
- processar_empresas
34
- end
35
-
36
- def validar_argumentos
37
- erro "#{NOME_DO_PROGRAMA} [diretório de origem] [diretório de destino]" unless args.size == 2
38
- end
39
-
40
- def validar_existencia_do_diretorio_de_origem
41
- erro 'Diretório de origem não existe.' unless File.directory?(origem)
42
- end
43
-
44
- def origem
45
- @origem ||= args[0]
46
- end
47
-
48
- def validar_que_diretorio_de_origem_nao_esta_vazio
49
- erro 'Diretório de origem vazio.' if Dir.empty?(origem)
50
- end
51
-
52
- def validar_que_diretorio_de_destino_esta_vazio
53
- erro 'Diretório de destino deve estar vazio.' unless Dir.empty?(destino)
54
- end
55
-
56
- def destino
57
- @destino ||= args[1]
58
- end
59
-
60
- def erro(erro)
61
- puts erro
62
- exit
63
- end
64
-
65
- def processar_empresas
66
- empresas.each(&:processar)
67
- end
68
-
69
- def empresas
70
- Dir[File.join(origem, '*')].map { |caminho| Empresa.new(caminho: caminho, destino: destino) }
71
- end
72
- end
73
- end