teodoro 0.0.2 → 0.0.7

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: c18c4a97d06ec343c73f7d326b354b27e95370fa7f3104667a2d9d54b12fcb7b
4
- data.tar.gz: b1da791432faec6aa9dd89985ac3ffd112417d7c97d9eba9149011dd09f27bd7
3
+ metadata.gz: b847466dec2ee0dfa4debb804d5af16dd183dcceeeb28664d0adea46b3f4ec95
4
+ data.tar.gz: 4c7aacf5cfdaf9af17298538947fb59cdfa82fd069d1136f06300cde54d3f463
5
5
  SHA512:
6
- metadata.gz: 7ac6862ec43f13ece37dbd2dfa7eeb51c14f37797c5773d4934a96bf71e62391194d9cb337544f436cf5b395d096d58348e10195c39a301475221c4335bb7934
7
- data.tar.gz: bf5285db8b35d62a766bf2f6ee896405c0f1e156655c836440ca98f24600d6386ddc795092c022dd2602616354d408dbfc74fdc8794daecd420eeb65cb328c2e
6
+ metadata.gz: 2dc6d426102161726682f79f701f2b481bf14c9a65f4838663d808c31cdf804a1fd651bc4f3116cc8a82ba7efec16405e8d336ea4ae484e26b2e8c651cbfdbf9
7
+ data.tar.gz: 07ce6e6d6f2e57a3358dd77d6a218c28e09b92f8abe1420924dd79d4c22fe62cfb1695cd4b0b9630d7e6bbca9fab27caee932258bc6fc8dbba6b44f7dedff23e
data/bin/teodoro CHANGED
@@ -1,3 +1,3 @@
1
1
  #!/usr/bin/env ruby
2
2
  require 'teodoro'
3
- Teodoro.call
3
+ Teodoro::Execucao.new(ARGV).call
data/lib/teodoro.rb CHANGED
@@ -1,7 +1,8 @@
1
+ require 'nokogiri'
2
+ require 'os'
3
+ require 'zip'
4
+
1
5
  require_relative 'teodoro/execucao'
2
6
 
3
7
  module Teodoro
4
- def self.call
5
- Execucao.new(origem: ARGV[0], destino: ARGV[1]).call
6
- end
7
8
  end
@@ -5,9 +5,27 @@ 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)
9
+
8
10
  File.write(caminho_do_arquivo_data, conteudo_do_arquivo_data)
9
11
  end
10
12
 
13
+ def caminho_do_arquivo_data
14
+ criar_caminho_do_arquivo_data(nome_do_arquivo_data)
15
+ end
16
+
17
+ def criar_caminho_do_arquivo_data(nome_do_arquivo)
18
+ # FIXME: Tales demais caracteres especiais
19
+ File.join(
20
+ destino_dos_arquivos_data,
21
+ "#{windows? ? nome_do_arquivo.gsub(%r{[<|>:"/\\?*]}, '_') : nome_do_arquivo}.data"
22
+ )
23
+ end
24
+
25
+ def windows?
26
+ OS.windows?
27
+ end
28
+
11
29
  def evento
12
30
  @evento ||= XML.new(xml_do_evento)
13
31
  end
@@ -38,10 +38,7 @@ module Teodoro
38
38
  end
39
39
 
40
40
  def obter_caminho_do_arquivo_data(inicio_da_validade)
41
- File.join(
42
- destino_dos_arquivos_data,
43
- "#{nome_base_do_arquivo_data}[#{inicio_da_validade.delete('-')}].data"
44
- )
41
+ criar_caminho_do_arquivo_data("#{nome_base_do_arquivo_data}[#{inicio_da_validade.delete('-')}]")
45
42
  end
46
43
 
47
44
  def nome_base_do_arquivo_data
@@ -32,7 +32,7 @@ module Teodoro
32
32
  end
33
33
 
34
34
  def caminho_do_arquivo_data_original
35
- File.join(destino_dos_arquivos_data, "#{nome_do_arquivo_original}.data")
35
+ criar_caminho_do_arquivo_data(nome_do_arquivo_original)
36
36
  end
37
37
 
38
38
  def nome_do_arquivo_original
@@ -50,9 +50,5 @@ 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
- File.join(destino_dos_arquivos_data, "#{nome_do_arquivo_data}.data")
56
- end
57
53
  end
58
54
  end
@@ -1,19 +1,17 @@
1
- require 'nokogiri'
2
- require 'zip'
3
-
4
1
  require_relative 'console'
5
2
  require_relative 'empresa'
6
3
 
7
4
  module Teodoro
8
5
  class Execucao
6
+ NOME_DO_PROGRAMA = 'teodoro'.freeze
7
+
9
8
  private
10
9
 
11
- def initialize(origem:, destino:)
12
- @origem = origem
13
- @destino = destino
10
+ def initialize(args)
11
+ @args = args
14
12
  end
15
13
 
16
- attr_reader :origem, :destino
14
+ attr_reader :args
17
15
 
18
16
  public
19
17
 
@@ -27,6 +25,7 @@ module Teodoro
27
25
  private
28
26
 
29
27
  def executar
28
+ validar_argumentos
30
29
  validar_existencia_do_diretorio_de_origem
31
30
  validar_que_diretorio_de_origem_nao_esta_vazio
32
31
  validar_que_diretorio_de_destino_esta_vazio
@@ -34,10 +33,18 @@ module Teodoro
34
33
  processar_empresas
35
34
  end
36
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
+
37
40
  def validar_existencia_do_diretorio_de_origem
38
41
  erro 'Diretório de origem não existe.' unless File.directory?(origem)
39
42
  end
40
43
 
44
+ def origem
45
+ @origem ||= args[0]
46
+ end
47
+
41
48
  def validar_que_diretorio_de_origem_nao_esta_vazio
42
49
  erro 'Diretório de origem vazio.' if Dir.empty?(origem)
43
50
  end
@@ -46,6 +53,10 @@ module Teodoro
46
53
  erro 'Diretório de destino deve estar vazio.' unless Dir.empty?(destino)
47
54
  end
48
55
 
56
+ def destino
57
+ @destino ||= args[1]
58
+ end
59
+
49
60
  def erro(erro)
50
61
  puts erro
51
62
  exit
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: teodoro
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.7
5
5
  platform: ruby
6
6
  authors:
7
7
  - Clavius Tales
@@ -12,12 +12,54 @@ date: 2021-04-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: nokogiri
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '1.11'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '1.11'
27
+ - !ruby/object:Gem::Dependency
28
+ name: os
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '1.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '1.1'
41
+ - !ruby/object:Gem::Dependency
42
+ name: rubyzip
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - "~>"
46
+ - !ruby/object:Gem::Version
47
+ version: '2.3'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - "~>"
53
+ - !ruby/object:Gem::Version
54
+ version: '2.3'
55
+ - !ruby/object:Gem::Dependency
56
+ name: bundler
15
57
  requirement: !ruby/object:Gem::Requirement
16
58
  requirements:
17
59
  - - ">="
18
60
  - !ruby/object:Gem::Version
19
61
  version: '0'
20
- type: :runtime
62
+ type: :development
21
63
  prerelease: false
22
64
  version_requirements: !ruby/object:Gem::Requirement
23
65
  requirements:
@@ -25,13 +67,13 @@ dependencies:
25
67
  - !ruby/object:Gem::Version
26
68
  version: '0'
27
69
  - !ruby/object:Gem::Dependency
28
- name: zip
70
+ name: byebug
29
71
  requirement: !ruby/object:Gem::Requirement
30
72
  requirements:
31
73
  - - ">="
32
74
  - !ruby/object:Gem::Version
33
75
  version: '0'
34
- type: :runtime
76
+ type: :development
35
77
  prerelease: false
36
78
  version_requirements: !ruby/object:Gem::Requirement
37
79
  requirements:
@@ -39,7 +81,7 @@ dependencies:
39
81
  - !ruby/object:Gem::Version
40
82
  version: '0'
41
83
  - !ruby/object:Gem::Dependency
42
- name: byebug
84
+ name: rake
43
85
  requirement: !ruby/object:Gem::Requirement
44
86
  requirements:
45
87
  - - ">="