avm-files 0.4.1 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 3085133d00ac94129da5d5e78859c07481852f0069ab0f26e2eb3444fb94702b
4
- data.tar.gz: d224e3473ce1a5a04600cb7956a2150551f5c9c5b6faeef78d6ece26806ab127
3
+ metadata.gz: d5d5cb06e33cdfb8e9c6b35d9349dfdfebd3751af5fa4ee2c7809769c97e4941
4
+ data.tar.gz: fcfc92226e4436f50623e2e29d40f21ddb7fdb9c4d7a5bfb401e9b73f58f7bb1
5
5
  SHA512:
6
- metadata.gz: dc02d2d6c0b3eaa3f9e2a7c2632a1a6d4d8593a5a57dd1e966fc3494306d0ae14868af2471713a5b423710bd857bd3e4bc0f5691b620065491dc5ca6e1ec2994
7
- data.tar.gz: 9e48c31f7224c9bfafb7103a03cd854ef4e158a2dd5d289a13391e0ca2082296468031a575a6126015f331baf0abdeea95be3738b01053b20bd9f1abc26812fc
6
+ metadata.gz: da6fb0ff60feff999ccabc04353c5db56aa76412508c583a4d0f48f54b1522305cc849c1d17c4cebf7bdf4013ceb8caf2b2066b29329e2f9563f5c8bbf9c244b
7
+ data.tar.gz: e6c8d78575769d1e4b0fa4115b74d54875bbc8b89d24086fe55b47648482b2767679a49d7e316f45c49ab3187fade40a6d2f1b8fe5d93fefacc0d6ef0b6bfd16
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require 'avm/registry'
3
4
  require 'eac_ruby_utils/core_ext'
4
5
  require 'eac_fs/traversable'
5
6
 
@@ -16,8 +17,6 @@ module Avm
16
17
  options.assert_valid_keys(self.class.lists.option.values)
17
18
  end
18
19
 
19
- FORMATS = %w[ruby php html python xml javascript json generic_plain].freeze
20
-
21
20
  def run
22
21
  clear
23
22
  search_files
@@ -59,9 +58,11 @@ module Avm
59
58
  end
60
59
 
61
60
  def formats_uncached
62
- FORMATS.map do |identifier|
63
- "avm/files/formatter/formats/#{identifier}".camelize.constantize.new
64
- end
61
+ formats_from_registry
62
+ end
63
+
64
+ def formats_from_registry
65
+ ::Avm::Registry.file_formats.available.reverse.map(&:new)
65
66
  end
66
67
 
67
68
  def search_files
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Avm
4
4
  module Files
5
- VERSION = '0.4.1'
5
+ VERSION = '0.5.0'
6
6
  end
7
7
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: avm-files
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.1
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Put here the authors
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-09-22 00:00:00.000000000 Z
11
+ date: 2022-10-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: avm
@@ -16,14 +16,14 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.43'
19
+ version: '0.51'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.43'
26
+ version: '0.51'
27
27
  - !ruby/object:Gem::Dependency
28
28
  name: eac_cli
29
29
  requirement: !ruby/object:Gem::Requirement
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: '0.103'
67
+ version: '0.105'
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: '0.103'
74
+ version: '0.105'
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: eac_templates
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -122,16 +122,6 @@ files:
122
122
  - lib/avm/files/appender.rb
123
123
  - lib/avm/files/deploy.rb
124
124
  - lib/avm/files/formatter.rb
125
- - lib/avm/files/formatter/formats.rb
126
- - lib/avm/files/formatter/formats/base.rb
127
- - lib/avm/files/formatter/formats/generic_plain.rb
128
- - lib/avm/files/formatter/formats/html.rb
129
- - lib/avm/files/formatter/formats/javascript.rb
130
- - lib/avm/files/formatter/formats/json.rb
131
- - lib/avm/files/formatter/formats/php.rb
132
- - lib/avm/files/formatter/formats/python.rb
133
- - lib/avm/files/formatter/formats/ruby.rb
134
- - lib/avm/files/formatter/formats/xml.rb
135
125
  - lib/avm/files/formatter/utf8_assert.rb
136
126
  - lib/avm/files/runner_with.rb
137
127
  - lib/avm/files/runner_with/file_replacer.rb
@@ -1,62 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_fs/file_info'
4
- require 'ostruct'
5
-
6
- module Avm
7
- module Files
8
- class Formatter
9
- module Formats
10
- class Base
11
- def apply(files)
12
- old_content = Hash[files.map { |f| [f, File.read(f)] }]
13
- ::Avm::Files::Formatter::Utf8Assert.assert_files(files) { internal_apply(files) }
14
- files.map { |f| build_file_result(f, old_content[f]) }
15
- end
16
-
17
- def name
18
- self.class.name.demodulize
19
- end
20
-
21
- def match?(file)
22
- match_by_filename?(file) || match_by_type?(file)
23
- end
24
-
25
- def valid_basenames
26
- constant_or_array('VALID_BASENAMES')
27
- end
28
-
29
- def valid_types
30
- constant_or_array('VALID_TYPES')
31
- end
32
-
33
- private
34
-
35
- def constant_or_array(name)
36
- return [] unless self.class.const_defined?(name)
37
-
38
- self.class.const_get(name)
39
- end
40
-
41
- def build_file_result(file, old_content)
42
- ::OpenStruct.new(file: file, format: self.class,
43
- changed: (old_content != File.read(file)))
44
- end
45
-
46
- def match_by_filename?(file)
47
- valid_basenames.any? do |valid_basename|
48
- file.basename.fnmatch?(valid_basename)
49
- end
50
- end
51
-
52
- def match_by_type?(file)
53
- info = ::EacFs::FileInfo.new(file)
54
- return unless info.content_type.type == 'text'
55
-
56
- valid_types.include?(info.content_type.subtype)
57
- end
58
- end
59
- end
60
- end
61
- end
62
- end
@@ -1,34 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/files/formatter/formats/base'
4
-
5
- module Avm
6
- module Files
7
- class Formatter
8
- module Formats
9
- class GenericPlain < ::Avm::Files::Formatter::Formats::Base
10
- VALID_BASENAMES = %w[*.asm *.bat *.css.coffee *.java *.js *.rb *.s *.scss *.sql *.tex
11
- *.url *.yml *.yaml].freeze
12
-
13
- VALID_TYPES = %w[plain x-shellscript].freeze
14
-
15
- def internal_apply(files)
16
- files.each { |file| file_apply(file) }
17
- end
18
-
19
- def file_apply(file)
20
- file.write(string_apply(file.read))
21
- end
22
-
23
- def string_apply(string)
24
- b = ''
25
- string.each_line do |line|
26
- b += "#{line.rstrip}\n"
27
- end
28
- "#{b.strip}\n".gsub(/\t/, ' ')
29
- end
30
- end
31
- end
32
- end
33
- end
34
- end
@@ -1,45 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/files/formatter/formats/generic_plain'
4
- require 'htmlbeautifier'
5
-
6
- module Avm
7
- module Files
8
- class Formatter
9
- module Formats
10
- class Html < ::Avm::Files::Formatter::Formats::GenericPlain
11
- VALID_BASENAMES = %w[*.html *.html.erb].freeze
12
- VALID_TYPES = ['html'].freeze
13
-
14
- def file_apply(path)
15
- input = ::File.read(path)
16
- temppath = tempfile_path
17
- ::File.open(temppath, 'w') do |output|
18
- beautify path, input, output
19
- end
20
- ::FileUtils.mv(temppath, path)
21
- super(path)
22
- end
23
-
24
- private
25
-
26
- def beautify(name, input, output)
27
- output.puts ::HtmlBeautifier.beautify(input, htmlbeautify_options)
28
- rescue StandardError => e
29
- raise "Error parsing #{name}: #{e}"
30
- end
31
-
32
- def htmlbeautify_options
33
- @htmlbeautify_options ||= { indent: ' ' }
34
- end
35
-
36
- def tempfile_path
37
- tempfile = ::Tempfile.new
38
- tempfile.close
39
- tempfile.path
40
- end
41
- end
42
- end
43
- end
44
- end
45
- end
@@ -1,24 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/executables'
4
- require 'avm/files/formatter/formats/generic_plain'
5
-
6
- module Avm
7
- module Files
8
- class Formatter
9
- module Formats
10
- class Javascript < ::Avm::Files::Formatter::Formats::GenericPlain
11
- VALID_BASENAMES = %w[*.js].freeze
12
- VALID_TYPES = [].freeze
13
-
14
- def internal_apply(files)
15
- ::Avm::Executables.js_beautify.command.append(
16
- ['--indent-size=2', '--end-with-newline', '--replace', *files]
17
- ).system!
18
- super(files)
19
- end
20
- end
21
- end
22
- end
23
- end
24
- end
@@ -1,27 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/files/formatter/formats/generic_plain'
4
-
5
- module Avm
6
- module Files
7
- class Formatter
8
- module Formats
9
- class Json < ::Avm::Files::Formatter::Formats::GenericPlain
10
- VALID_BASENAMES = %w[*.json].freeze
11
- VALID_TYPES = [].freeze
12
-
13
- def file_apply(file)
14
- ::File.write(file, ::JSON.pretty_generate(::JSON.parse(::File.read(file))))
15
- end
16
-
17
- def json_file?(file)
18
- ::JSON.parse(::File.read(file))
19
- true
20
- rescue JSON::ParserError
21
- false
22
- end
23
- end
24
- end
25
- end
26
- end
27
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/executables'
4
- require 'avm/files/formatter/formats/generic_plain'
5
-
6
- module Avm
7
- module Files
8
- class Formatter
9
- module Formats
10
- class Php < ::Avm::Files::Formatter::Formats::GenericPlain
11
- VALID_BASENAMES = %w[*.php].freeze
12
- VALID_TYPES = ['x-php'].freeze
13
-
14
- def file_apply(file)
15
- ::Avm::Executables.php_cs_fixer.command.append(['fix', file]).system!
16
- super(file)
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/executables'
4
- require 'avm/files/formatter/formats/generic_plain'
5
-
6
- module Avm
7
- module Files
8
- class Formatter
9
- module Formats
10
- class Python < ::Avm::Files::Formatter::Formats::GenericPlain
11
- VALID_BASENAMES = %w[*.py].freeze
12
- VALID_TYPES = ['x-python'].freeze
13
-
14
- def internal_apply(files)
15
- ::Avm::Executables.yapf.command.append(['--in-place', *files]).system!
16
- super(files)
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,22 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/files/formatter/formats/generic_plain'
4
- require 'avm/eac_ruby_base1/rubocop'
5
-
6
- module Avm
7
- module Files
8
- class Formatter
9
- module Formats
10
- class Ruby < ::Avm::Files::Formatter::Formats::GenericPlain
11
- VALID_BASENAMES = %w[*.gemspec *.rake *.rb Gemfile Rakefile].freeze
12
- VALID_TYPES = ['x-ruby'].freeze
13
-
14
- def internal_apply(files)
15
- ::Avm::EacRubyBase1::Rubocop.new('.', ['-a', '--ignore-parent-exclusion'] + files).run
16
- super(files)
17
- end
18
- end
19
- end
20
- end
21
- end
22
- end
@@ -1,28 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'avm/executables'
4
- require 'avm/files/formatter/formats/generic_plain'
5
-
6
- module Avm
7
- module Files
8
- class Formatter
9
- module Formats
10
- class Xml < ::Avm::Files::Formatter::Formats::GenericPlain
11
- VALID_BASENAMES = %w[*.xml].freeze
12
- VALID_TYPES = ['xml'].freeze
13
-
14
- def internal_apply(files)
15
- format_command(files).system!
16
- super(files)
17
- end
18
-
19
- def format_command(files)
20
- ::Avm::Executables.tidy.command.append(
21
- %w[-xml -modify --indent auto --indent-spaces 2 --wrap 100] + files
22
- )
23
- end
24
- end
25
- end
26
- end
27
- end
28
- end
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'eac_ruby_utils/core_ext'
4
-
5
- module Avm
6
- module Files
7
- class Formatter
8
- module Formats
9
- require_sub __FILE__
10
- end
11
- end
12
- end
13
- end