eac_tools 0.37.2 → 0.38.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +55 -48
  3. data/lib/eac_tools/version.rb +1 -1
  4. data/sub/aranha-parsers/Gemfile +8 -0
  5. data/sub/aranha-parsers/aranha-parsers.gemspec +25 -0
  6. data/sub/aranha-parsers/lib/aranha/parsers/base.rb +81 -0
  7. data/sub/aranha-parsers/lib/aranha/parsers/html/base.rb +47 -0
  8. data/sub/aranha-parsers/lib/aranha/parsers/html/item.rb +24 -0
  9. data/sub/aranha-parsers/lib/aranha/parsers/html/item_list.rb +33 -0
  10. data/sub/aranha-parsers/lib/aranha/parsers/html/node/base.rb +34 -0
  11. data/sub/aranha-parsers/lib/aranha/parsers/html/node/default/numeric_support.rb +70 -0
  12. data/sub/aranha-parsers/lib/aranha/parsers/html/node/default/string_support.rb +77 -0
  13. data/sub/aranha-parsers/lib/aranha/parsers/html/node/default.rb +34 -0
  14. data/sub/aranha-parsers/lib/aranha/parsers/html/node.rb +13 -0
  15. data/sub/aranha-parsers/lib/aranha/parsers/html.rb +11 -0
  16. data/sub/aranha-parsers/lib/aranha/parsers/invalid_state_exception.rb +8 -0
  17. data/sub/aranha-parsers/lib/aranha/parsers/json/base.rb +20 -0
  18. data/sub/aranha-parsers/lib/aranha/parsers/json.rb +11 -0
  19. data/sub/aranha-parsers/lib/aranha/parsers/patches/ofx_parser.rb +38 -0
  20. data/sub/aranha-parsers/lib/aranha/parsers/patches.rb +11 -0
  21. data/sub/aranha-parsers/lib/aranha/parsers/rspec/setup.rb +15 -0
  22. data/sub/aranha-parsers/lib/aranha/parsers/rspec/shared_examples/source_target_fixtures.rb +74 -0
  23. data/sub/aranha-parsers/lib/aranha/parsers/rspec/source_target_fixtures_controller.rb +39 -0
  24. data/sub/aranha-parsers/lib/aranha/parsers/rspec.rb +11 -0
  25. data/sub/aranha-parsers/lib/aranha/parsers/source_address/fetch_content_error.rb +10 -0
  26. data/sub/aranha-parsers/lib/aranha/parsers/source_address/file.rb +31 -0
  27. data/sub/aranha-parsers/lib/aranha/parsers/source_address/hash_http_base.rb +92 -0
  28. data/sub/aranha-parsers/lib/aranha/parsers/source_address/hash_http_get.rb +13 -0
  29. data/sub/aranha-parsers/lib/aranha/parsers/source_address/hash_http_post.rb +13 -0
  30. data/sub/aranha-parsers/lib/aranha/parsers/source_address/http_get.rb +59 -0
  31. data/sub/aranha-parsers/lib/aranha/parsers/source_address.rb +57 -0
  32. data/sub/aranha-parsers/lib/aranha/parsers/source_target_fixtures/source_target_file.rb +19 -0
  33. data/sub/aranha-parsers/lib/aranha/parsers/source_target_fixtures.rb +78 -0
  34. data/sub/aranha-parsers/lib/aranha/parsers/version.rb +7 -0
  35. data/sub/aranha-parsers/lib/aranha/parsers.rb +9 -0
  36. data/sub/aranha-parsers/spec/lib/aranha/parsers/rspec/shared_examples/source_target_fixtures_spec.rb +9 -0
  37. data/sub/aranha-parsers/spec/lib/aranha/parsers/rspec/shared_examples/source_target_fixtures_spec_files/fixture1.source.txt +1 -0
  38. data/sub/aranha-parsers/spec/lib/aranha/parsers/rspec/shared_examples/source_target_fixtures_spec_files/fixture1.target.yaml +3 -0
  39. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_address/http_get_spec.rb +21 -0
  40. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_address_spec.rb +74 -0
  41. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_target_fixtures_spec.rb +27 -0
  42. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_target_fixtures_spec_files/stub1.source.txt +1 -0
  43. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_target_fixtures_spec_files/stub1.target.html +1 -0
  44. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_target_fixtures_spec_files/stub2.source.html +1 -0
  45. data/sub/aranha-parsers/spec/lib/aranha/parsers/source_target_fixtures_spec_files/stub3.target.yaml +1 -0
  46. data/sub/aranha-parsers/spec/lib/rubocop_check_spec.rb +3 -0
  47. data/sub/aranha-parsers/spec/spec_helper.rb +4 -0
  48. data/sub/avm/avm.gemspec +2 -0
  49. data/sub/avm/lib/avm/executables.rb +1 -1
  50. data/sub/avm/lib/avm/file_formats/base.rb +2 -1
  51. data/sub/{avm-files/lib/avm/files/formatter.rb → avm/lib/avm/file_formats/search_formatter.rb} +17 -11
  52. data/sub/avm/lib/avm/file_formats/utf8_assert.rb +72 -0
  53. data/sub/avm/lib/avm/rspec/setup.rb +2 -1
  54. data/sub/avm/lib/avm/rspec/shared_examples/avm_file_formats_with_fixtures.rb +32 -0
  55. data/sub/avm/lib/avm/version.rb +1 -1
  56. data/sub/avm-eac_generic_base0/avm-eac_generic_base0.gemspec +1 -1
  57. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/file_formats/base.rb +2 -2
  58. data/sub/avm-eac_generic_base0/lib/avm/eac_generic_base0/version.rb +1 -1
  59. data/sub/avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec.rb +7 -0
  60. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec_files}/plain_text.source +0 -0
  61. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_generic_base0/spec/lib/avm/eac_generic_base0/file_formats/base_spec_files}/plain_text.target +0 -0
  62. data/sub/avm-eac_latex_base0/avm-eac_latex_base0.gemspec +3 -3
  63. data/sub/avm-eac_latex_base0/lib/avm/eac_latex_base0/executables.rb +22 -0
  64. data/sub/avm-eac_latex_base0/lib/avm/eac_latex_base0/sources/build.rb +3 -1
  65. data/sub/avm-eac_latex_base0/lib/avm/eac_latex_base0/version.rb +1 -1
  66. data/sub/avm-eac_php_base0/avm-eac_php_base0.gemspec +2 -2
  67. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/executables.rb +22 -0
  68. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/file_formats/base.rb +2 -2
  69. data/sub/avm-eac_php_base0/lib/avm/eac_php_base0/version.rb +1 -1
  70. data/sub/avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec.rb +7 -0
  71. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_code.php.source +0 -0
  72. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_code.php.target +0 -0
  73. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_code2.php.source +0 -0
  74. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_code2.php.target +0 -0
  75. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_html_code.php.source +0 -0
  76. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_html_code.php.target +0 -0
  77. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_iso88591_code.php.source +0 -0
  78. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_php_base0/spec/lib/avm/eac_php_base0/file_formats/base_spec_files}/php_iso88591_code.php.target +0 -0
  79. data/sub/avm-eac_python_base0/avm-eac_python_base0.gemspec +2 -2
  80. data/sub/avm-eac_python_base0/lib/avm/eac_python_base0/executables.rb +22 -0
  81. data/sub/avm-eac_python_base0/lib/avm/eac_python_base0/file_formats/base.rb +2 -2
  82. data/sub/avm-eac_python_base0/lib/avm/eac_python_base0/version.rb +1 -1
  83. data/sub/avm-eac_python_base0/spec/lib/avm/eac_python_base0/file_formats/base_spec.rb +7 -0
  84. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_python_base0/spec/lib/avm/eac_python_base0/file_formats/base_spec_files}/python_code.source +0 -0
  85. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_python_base0/spec/lib/avm/eac_python_base0/file_formats/base_spec_files}/python_code.target +0 -0
  86. data/sub/avm-eac_ruby_base1/avm-eac_ruby_base1.gemspec +3 -3
  87. data/sub/avm-eac_ruby_base1/lib/avm/eac_ruby_base1/version.rb +1 -1
  88. data/sub/avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec.rb +7 -0
  89. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files}/Gemfile.source +0 -0
  90. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files}/Gemfile.target +0 -0
  91. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files}/ruby_code.rb.source +0 -0
  92. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_ruby_base1/spec/lib/avm/eac_ruby_base1/file_formats/base_spec_files}/ruby_code.rb.target +0 -0
  93. data/sub/avm-eac_webapp_base0/avm-eac_webapp_base0.gemspec +3 -3
  94. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/executables.rb +26 -0
  95. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/css/file_apply.rb +48 -0
  96. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/css.rb +22 -0
  97. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/javascript.rb +2 -2
  98. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/provider.rb +2 -1
  99. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/file_formats/xml.rb +2 -2
  100. data/sub/avm-eac_webapp_base0/lib/avm/eac_webapp_base0/version.rb +1 -1
  101. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec.rb +7 -0
  102. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec_files/css1.source.css +11 -0
  103. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/css_spec_files/css1.target.css +11 -0
  104. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec.rb +7 -0
  105. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files}/html_code.html.erb.source +0 -0
  106. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files}/html_code.html.erb.target +0 -0
  107. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files}/html_code.html.source +0 -0
  108. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/html_spec_files}/html_code.html.target +0 -0
  109. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec.rb +7 -0
  110. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec_files}/javascript_code1.js.source +0 -0
  111. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/javascript_spec_files}/javascript_code1.js.target +0 -0
  112. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec.rb +7 -0
  113. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec_files}/json_code.json.source +0 -0
  114. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/json_spec_files}/json_code.json.target +0 -0
  115. data/sub/avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec.rb +7 -0
  116. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec_files}/xml_code.xml.source +0 -0
  117. data/sub/{avm-tools/spec/lib/avm/tools/runner/files/format_spec_files → avm-eac_webapp_base0/spec/lib/avm/eac_webapp_base0/file_formats/xml_spec_files}/xml_code.xml.target +0 -0
  118. data/sub/avm-files/avm-files.gemspec +2 -2
  119. data/sub/avm-files/lib/avm/files/version.rb +1 -1
  120. data/sub/avm-tools/avm-tools.gemspec +4 -7
  121. data/sub/avm-tools/lib/avm/tools/runner/files/format.rb +5 -5
  122. data/sub/avm-tools/lib/avm/tools/runner/git/auto_commit.rb +4 -2
  123. data/sub/avm-tools/lib/avm/tools/version.rb +1 -1
  124. data/sub/eac_ruby_utils/lib/eac_ruby_utils/patches/object/to_bool.rb +12 -0
  125. data/sub/eac_ruby_utils/lib/eac_ruby_utils/version.rb +1 -1
  126. metadata +113 -51
  127. data/sub/avm-files/lib/avm/files/formatter/utf8_assert.rb +0 -74
  128. data/sub/avm-tools/spec/lib/avm/tools/runner/files/format_spec.rb +0 -56
@@ -0,0 +1,74 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/source_address'
4
+
5
+ RSpec.describe ::Aranha::Parsers::SourceAddress do
6
+ describe '#detect_sub' do
7
+ {
8
+ { method: :post, url: 'http://postdata.net', params: { key1: :value1 } } => {
9
+ klass: ::Aranha::Parsers::SourceAddress::HashHttpBase,
10
+ url: 'http://postdata.net',
11
+ serialization: <<~SERIALIZATION
12
+ --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
13
+ method: :post
14
+ url: http://postdata.net
15
+ params: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
16
+ key1: :value1
17
+ SERIALIZATION
18
+ },
19
+ { method: :get, url: 'http://getdata.net', params: { headers: %w[abc] } } => {
20
+ klass: ::Aranha::Parsers::SourceAddress::HashHttpBase,
21
+ url: 'http://getdata.net',
22
+ serialization: <<~SERIALIZATION
23
+ --- !ruby/hash:ActiveSupport::HashWithIndifferentAccess
24
+ method: :get
25
+ url: http://getdata.net
26
+ params: !ruby/hash:ActiveSupport::HashWithIndifferentAccess
27
+ headers:
28
+ - abc
29
+ SERIALIZATION
30
+ },
31
+ 'http://postdata.net' => {
32
+ klass: ::Aranha::Parsers::SourceAddress::HttpGet,
33
+ url: 'http://postdata.net',
34
+ serialization: 'http://postdata.net'
35
+ },
36
+ 'https://getdata.com.br' => {
37
+ klass: ::Aranha::Parsers::SourceAddress::HttpGet,
38
+ url: 'https://getdata.com.br',
39
+ serialization: 'https://getdata.com.br'
40
+ },
41
+ 'file:///postdata.net' => {
42
+ klass: ::Aranha::Parsers::SourceAddress::File,
43
+ url: 'file:///postdata.net',
44
+ serialization: 'file:///postdata.net'
45
+ },
46
+ '/postdata.net' => {
47
+ klass: ::Aranha::Parsers::SourceAddress::File,
48
+ url: 'file:///postdata.net',
49
+ serialization: 'file:///postdata.net'
50
+ }
51
+ }.each do |source, expected|
52
+ context "when source is #{source}" do
53
+ let(:sub) { described_class.detect_sub(source) }
54
+ let(:deserialized) { described_class.deserialize(sub.serialize).sub }
55
+
56
+ it "sub is a #{expected.fetch(:klass)}" do
57
+ expect(sub).to be_a(expected.fetch(:klass))
58
+ end
59
+
60
+ it "sub #{expected.fetch(:klass)} return properly URL" do
61
+ expect(sub.url).to eq(expected.fetch(:url))
62
+ end
63
+
64
+ it "sub #{expected.fetch(:klass)} serialize properly" do
65
+ expect(sub.serialize).to eq(expected.fetch(:serialization))
66
+ end
67
+
68
+ it 'deserialize properly' do
69
+ expect(deserialized).to eq(sub)
70
+ end
71
+ end
72
+ end
73
+ end
74
+ end
@@ -0,0 +1,27 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/source_target_fixtures'
4
+
5
+ RSpec.describe ::Aranha::Parsers::SourceTargetFixtures do
6
+ let(:fixtures_dir) { ::File.join(__dir__, 'source_target_fixtures_spec_files') }
7
+ let(:instance) { described_class.new(fixtures_dir) }
8
+
9
+ describe '#source_target_files' do
10
+ it { expect(instance.source_target_files.count).to eq(3) }
11
+
12
+ (1..3).each do |index|
13
+ basename = "stub#{index}"
14
+ let(basename) { instance.source_target_files.find { |stf| stf.basename == basename } }
15
+
16
+ it { expect(send(basename)).to be_present }
17
+ it { expect(send(basename).basename).to eq(basename) }
18
+ end
19
+
20
+ it { expect(stub1.source).to eq(::File.join(fixtures_dir, 'stub1.source.txt')) }
21
+ it { expect(stub1.target).to eq(::File.join(fixtures_dir, 'stub1.target.html')) }
22
+ it { expect(stub2.source).to eq(::File.join(fixtures_dir, 'stub2.source.html')) }
23
+ it { expect(stub2.target).to eq(nil) }
24
+ it { expect(stub3.source).to eq(nil) }
25
+ it { expect(stub3.target).to eq(::File.join(fixtures_dir, 'stub3.target.yaml')) }
26
+ end
27
+ end
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ ::EacRubyUtils::Rspec.default_setup.describe_rubocop
@@ -0,0 +1,4 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/rspec/default_setup'
4
+ ::EacRubyUtils::Rspec.default_setup_create(::File.expand_path('..', __dir__))
data/sub/avm/avm.gemspec CHANGED
@@ -12,9 +12,11 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
+ s.add_dependency 'aranha-parsers', '~> 0.14', '>= 0.14.4'
15
16
  s.add_dependency 'eac_cli', '~> 0.28'
16
17
  s.add_dependency 'eac_config', '~> 0.11', '>= 0.11.1'
17
18
  s.add_dependency 'eac_docker', '~> 0.5'
19
+ s.add_dependency 'eac_fs', '~> 0.12', '>= 0.12.3'
18
20
  s.add_dependency 'eac_git', '~> 0.13'
19
21
  s.add_dependency 'eac_ruby_utils', '~> 0.105'
20
22
  s.add_dependency 'eac_templates', '~> 0.3', '>= 0.3.2'
@@ -14,7 +14,7 @@ module Avm
14
14
 
15
15
  private
16
16
 
17
- %w[file git js-beautify latex php-cs-fixer tidy yapf xdg-open].each do |program|
17
+ %w[xdg-open].each do |program|
18
18
  define_method(program.underscore + '_uncached') do
19
19
  env.executable(program, '--version')
20
20
  end
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/file_formats/utf8_assert'
3
4
  require 'eac_fs/file_info'
4
5
  require 'ostruct'
5
6
 
@@ -10,7 +11,7 @@ module Avm
10
11
 
11
12
  def apply(files)
12
13
  old_content = Hash[files.map { |f| [f, File.read(f)] }]
13
- ::Avm::Files::Formatter::Utf8Assert.assert_files(files) { internal_apply(files) }
14
+ ::Avm::FileFormats::Utf8Assert.assert_files(files) { internal_apply(files) }
14
15
  files.map { |f| build_file_result(f, old_content[f]) }
15
16
  end
16
17
 
@@ -5,8 +5,8 @@ require 'eac_ruby_utils/core_ext'
5
5
  require 'eac_fs/traversable'
6
6
 
7
7
  module Avm
8
- module Files
9
- class Formatter
8
+ module FileFormats
9
+ class SearchFormatter
10
10
  include ::EacFs::Traversable
11
11
  require_sub __FILE__
12
12
  enable_simple_cache
@@ -27,9 +27,9 @@ module Avm
27
27
  private
28
28
 
29
29
  def apply
30
- infom "Applying #{@formats_files.count} format(s)... "
30
+ speak(:infom, "Applying #{@formats_files.count} format(s)... ")
31
31
  @formats_files.each do |format, files|
32
- infom "Applying format #{format.name} (Files matched: #{files.count})..."
32
+ speak(:infom, "Applying format #{format.name} (Files matched: #{files.count})...")
33
33
  next unless options[OPTION_APPLY]
34
34
 
35
35
  @result += format.apply(files)
@@ -38,7 +38,7 @@ module Avm
38
38
 
39
39
  def traverser_check_file(file)
40
40
  format = find_format(file)
41
- infov file, format ? format.class : '-' if options[OPTION_VERBOSE]
41
+ speak(:infov, file, format ? format.class : '-')
42
42
  return unless format
43
43
 
44
44
  @formats_files[format] ||= []
@@ -66,9 +66,9 @@ module Avm
66
66
  end
67
67
 
68
68
  def search_files
69
- infov 'Directories to search', source_paths.count
69
+ speak(:infov, 'Directories to search', source_paths.count)
70
70
  source_paths.each do |source_path|
71
- infom "Searching files on \"#{source_path}\"..."
71
+ speak(:infom, "Searching files on \"#{source_path}\"...")
72
72
  traverser_check_path(source_path)
73
73
  end
74
74
  end
@@ -76,16 +76,22 @@ module Avm
76
76
  def show_results
77
77
  changed = @result.select(&:changed)
78
78
  changed.each do |h|
79
- out h.file.to_s.cyan
80
- out " (#{h.format})".yellow
81
- puts ' changed'.green
79
+ speak(:out, h.file.to_s.cyan)
80
+ speak(:out, " (#{h.format})".yellow)
81
+ speak(:puts, ' changed'.green)
82
82
  end
83
- infov('Files changed', "#{changed.count}/#{@result.count}")
83
+ speak(:infov, 'Files changed', "#{changed.count}/#{@result.count}")
84
84
  end
85
85
 
86
86
  def traverser_recursive
87
87
  options[OPTION_RECURSIVE]
88
88
  end
89
+
90
+ def speak(method, *method_args)
91
+ return unless options[OPTION_VERBOSE].to_bool
92
+
93
+ send(method, *method_args)
94
+ end
89
95
  end
90
96
  end
91
97
  end
@@ -0,0 +1,72 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_fs/file_info'
4
+
5
+ module Avm
6
+ module FileFormats
7
+ class Utf8Assert
8
+ UTF8_CHARSET = 'utf-8'
9
+ UTF8_CHARSETS = [UTF8_CHARSET, 'us-ascii'].freeze
10
+
11
+ class << self
12
+ def assert_files(files)
13
+ asserters = files.map { |file| new(file) }
14
+ begin
15
+ asserters.each(&:assert)
16
+ yield
17
+ ensure
18
+ asserters.each(&:revert)
19
+ end
20
+ end
21
+ end
22
+
23
+ enable_simple_cache
24
+ common_constructor :path
25
+
26
+ def assert
27
+ return if original_utf8?
28
+
29
+ convert_self(original_charset, UTF8_CHARSET)
30
+ end
31
+
32
+ def revert
33
+ return if original_utf8?
34
+
35
+ convert_self(UTF8_CHARSET, original_charset)
36
+ end
37
+
38
+ private
39
+
40
+ def original_info_uncached
41
+ ::EacFs::FileInfo.new(path)
42
+ end
43
+
44
+ def original_charset_uncached
45
+ return original_info.content_type.charset if original_info.content_type.charset.present?
46
+
47
+ raise 'No charset found'
48
+ rescue StandardError => e
49
+ raise "Unable to determine the charset of #{path} (#{e.message})"
50
+ end
51
+
52
+ def original_utf8?
53
+ UTF8_CHARSETS.include?(original_charset)
54
+ end
55
+
56
+ def convert_file(from_path, from_charset, to_path, to_charset)
57
+ File.open(from_path, "r:#{from_charset}") do |input|
58
+ File.open(to_path, "w:#{to_charset}") do |output|
59
+ output.write(input.read)
60
+ end
61
+ end
62
+ end
63
+
64
+ def convert_self(from_charset, to_charset)
65
+ temp = ::Tempfile.new
66
+ temp.close
67
+ convert_file(path, from_charset, temp.path, to_charset)
68
+ ::FileUtils.mv(temp.path, path)
69
+ end
70
+ end
71
+ end
72
+ end
@@ -7,7 +7,8 @@ module Avm
7
7
  module Rspec
8
8
  module Setup
9
9
  require_sub __FILE__
10
- EXAMPLES = %w[entries_values in_avm_registry not_in_avm_registry].freeze
10
+ EXAMPLES = %w[avm_file_formats_with_fixtures entries_values in_avm_registry
11
+ not_in_avm_registry].freeze
11
12
 
12
13
  def self.extended(obj)
13
14
  obj.setup_examples
@@ -0,0 +1,32 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'aranha/parsers/source_target_fixtures'
4
+ require 'avm/file_formats/search_formatter'
5
+ require 'eac_ruby_utils/core_ext'
6
+
7
+ ::RSpec.shared_examples 'avm_file_formats_with_fixtures' do |the_spec_file|
8
+ include_examples 'source_target_fixtures', the_spec_file
9
+
10
+ def format_files_in_directory(target_dir)
11
+ ::Avm::FileFormats::SearchFormatter
12
+ .new([target_dir], recursive: true, apply: true, verbose: false)
13
+ .run
14
+ end
15
+
16
+ def source_data(source_file)
17
+ dir = temp_dir
18
+ source_basename = source_file_basename_without_source_extname(source_file)
19
+ source_path = dir.join(source_basename)
20
+ ::FileUtils.cp(source_file, source_path)
21
+ format_files_in_directory(dir)
22
+ source_path.read
23
+ end
24
+
25
+ def source_file_basename_without_source_extname(source_file)
26
+ source_file.to_pathname.basename_sub { |b| b.to_path.gsub(/\.source/, '') }.basename
27
+ end
28
+
29
+ def target_data(target_file)
30
+ ::File.read(target_file)
31
+ end
32
+ end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Avm
4
- VERSION = '0.51.0'
4
+ VERSION = '0.52.0'
5
5
  end
@@ -12,7 +12,7 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib,locale}/**/*']
14
14
 
15
- s.add_dependency 'avm', '~> 0.51'
15
+ s.add_dependency 'avm', '~> 0.52'
16
16
  s.add_dependency 'eac_ruby_utils', '~> 0.105'
17
17
 
18
18
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'
@@ -6,8 +6,8 @@ module Avm
6
6
  module EacGenericBase0
7
7
  class FileFormats
8
8
  class Base < ::Avm::FileFormats::Base
9
- VALID_BASENAMES = %w[*.asm *.bat *.css.coffee *.java *.js *.rb *.s *.scss *.sql *.tex
10
- *.url *.yml *.yaml].freeze
9
+ VALID_BASENAMES = %w[*.asm *.bat *.coffee *.java *.js *.rb *.s *.sql *.tex *.url *.yml
10
+ *.yaml].freeze
11
11
 
12
12
  VALID_TYPES = %w[plain x-shellscript].freeze
13
13
 
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacGenericBase0
5
- VERSION = '0.6.0'
5
+ VERSION = '0.7.0'
6
6
  end
7
7
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_generic_base0/file_formats/base'
4
+
5
+ ::RSpec.describe ::Avm::EacGenericBase0::FileFormats::Base do
6
+ include_examples 'avm_file_formats_with_fixtures', __FILE__
7
+ end
@@ -12,9 +12,9 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib}/**/*']
14
14
 
15
- s.add_dependency 'avm', '~> 0.45'
16
- s.add_dependency 'avm-eac_webapp_base0', '~> 0.9'
17
- s.add_dependency 'eac_ruby_utils', '~> 0.104'
15
+ s.add_dependency 'avm', '~> 0.52'
16
+ s.add_dependency 'avm-eac_webapp_base0', '~> 0.12'
17
+ s.add_dependency 'eac_ruby_utils', '~> 0.106'
18
18
 
19
19
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5', '>= 0.5.1'
20
20
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/envs'
5
+
6
+ module Avm
7
+ module EacPythonBase0
8
+ module Executables
9
+ class << self
10
+ enable_simple_cache
11
+
12
+ private
13
+
14
+ %w[latex].each do |program|
15
+ define_method(program.underscore + '_uncached') do
16
+ ::EacRubyUtils::Envs.local.executable(program, '--version')
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,6 +1,7 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  require 'avm/executables'
4
+ require 'avm/eac_latex_base0/executables'
4
5
  require 'eac_ruby_utils/core_ext'
5
6
  require 'eac_ruby_utils/fs/temp'
6
7
  require 'eac_ruby_utils/fs/clearable_directory'
@@ -62,7 +63,8 @@ module Avm
62
63
  end
63
64
 
64
65
  def compile_command
65
- ::Avm::Executables.latex.command(*compile_command_args).chdir(source_temp_dir)
66
+ ::Avm::EacLatexBase0::Executables.latex.command(*compile_command_args)
67
+ .chdir(source_temp_dir)
66
68
  end
67
69
 
68
70
  def compile_command_args
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacLatexBase0
5
- VERSION = '0.2.1'
5
+ VERSION = '0.3.0'
6
6
  end
7
7
  end
@@ -12,8 +12,8 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib,locale,template}/**/*']
14
14
 
15
- s.add_dependency 'avm-eac_generic_base0', '~> 0.6'
16
- s.add_dependency 'eac_ruby_utils', '~> 0.105'
15
+ s.add_dependency 'avm-eac_generic_base0', '~> 0.7'
16
+ s.add_dependency 'eac_ruby_utils', '~> 0.106'
17
17
 
18
18
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5', '>= 0.5.1'
19
19
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/envs'
5
+
6
+ module Avm
7
+ module EacPhpBase0
8
+ module Executables
9
+ class << self
10
+ enable_simple_cache
11
+
12
+ private
13
+
14
+ %w[php-cs-fixer].each do |program|
15
+ define_method(program.underscore + '_uncached') do
16
+ ::EacRubyUtils::Envs.local.executable(program, '--version')
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/executables'
3
+ require 'avm/eac_php_base0/executables'
4
4
  require 'avm/eac_generic_base0/file_formats/base'
5
5
 
6
6
  module Avm
@@ -11,7 +11,7 @@ module Avm
11
11
  VALID_TYPES = ['x-php'].freeze
12
12
 
13
13
  def file_apply(file)
14
- ::Avm::Executables.php_cs_fixer.command.append(['fix', file]).system!
14
+ ::Avm::EacPhpBase0::Executables.php_cs_fixer.command.append(['fix', file]).system!
15
15
  super(file)
16
16
  end
17
17
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacPhpBase0
5
- VERSION = '0.2.0'
5
+ VERSION = '0.3.0'
6
6
  end
7
7
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_php_base0/file_formats/base'
4
+
5
+ ::RSpec.describe ::Avm::EacPhpBase0::FileFormats::Base do
6
+ include_examples 'avm_file_formats_with_fixtures', __FILE__
7
+ end
@@ -12,8 +12,8 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib,locale,template}/**/*']
14
14
 
15
- s.add_dependency 'avm-eac_generic_base0', '~> 0.6'
16
- s.add_dependency 'eac_ruby_utils', '~> 0.105'
15
+ s.add_dependency 'avm-eac_generic_base0', '~> 0.7'
16
+ s.add_dependency 'eac_ruby_utils', '~> 0.106'
17
17
 
18
18
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5', '>= 0.5.1'
19
19
  end
@@ -0,0 +1,22 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'eac_ruby_utils/core_ext'
4
+ require 'eac_ruby_utils/envs'
5
+
6
+ module Avm
7
+ module EacPythonBase0
8
+ module Executables
9
+ class << self
10
+ enable_simple_cache
11
+
12
+ private
13
+
14
+ %w[yapf].each do |program|
15
+ define_method(program.underscore + '_uncached') do
16
+ ::EacRubyUtils::Envs.local.executable(program, '--version')
17
+ end
18
+ end
19
+ end
20
+ end
21
+ end
22
+ end
@@ -1,6 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- require 'avm/executables'
3
+ require 'avm/eac_python_base0/executables'
4
4
  require 'avm/eac_generic_base0/file_formats/base'
5
5
 
6
6
  module Avm
@@ -11,7 +11,7 @@ module Avm
11
11
  VALID_TYPES = ['x-python'].freeze
12
12
 
13
13
  def internal_apply(files)
14
- ::Avm::Executables.yapf.command.append(['--in-place', *files]).system!
14
+ ::Avm::EacPythonBase0::Executables.yapf.command.append(['--in-place', *files]).system!
15
15
  super(files)
16
16
  end
17
17
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module EacPythonBase0
5
- VERSION = '0.1.0'
5
+ VERSION = '0.2.0'
6
6
  end
7
7
  end
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ require 'avm/eac_python_base0/file_formats/base'
4
+
5
+ ::RSpec.describe ::Avm::EacPythonBase0::FileFormats::Base do
6
+ include_examples 'avm_file_formats_with_fixtures', __FILE__
7
+ end
@@ -12,9 +12,9 @@ Gem::Specification.new do |s|
12
12
 
13
13
  s.files = Dir['{lib,locale,template}/**/*']
14
14
 
15
- s.add_dependency 'avm', '~> 0.51'
16
- s.add_dependency 'avm-eac_generic_base0', '~> 0.6'
17
- s.add_dependency 'eac_ruby_utils', '~> 0.105'
15
+ s.add_dependency 'avm', '~> 0.52'
16
+ s.add_dependency 'avm-eac_generic_base0', '~> 0.7'
17
+ s.add_dependency 'eac_ruby_utils', '~> 0.106'
18
18
 
19
19
  s.add_development_dependency 'aranha-parsers', '~> 0.14', '>= 0.14.1'
20
20
  s.add_development_dependency 'eac_ruby_gem_support', '~> 0.5.1'