extension_fixer 0.0.2
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 +7 -0
- data/bin/extension_check +4 -0
- data/bin/extension_fixer +4 -0
- data/lib/extension_fixer.rb +73 -0
- metadata +108 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: 400ee500244e52dd6227bd1328b6e4cf5b56dcda
|
|
4
|
+
data.tar.gz: 05bb290415e754ab6f9534a3f5e2efb90487bc47
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 5e5866ba9b1a9f5e1ff94eb14d61c55aa8bc8ece6af1c17b533c4414141a118fd700856f8f6c251ad70346088341289aec015315dc72d6cf65f0f8a2e3546d0d
|
|
7
|
+
data.tar.gz: ca10980ed8916c567cfe3bb2244fd37b2701380a93a9c8c54040c4ff10180580edfb5bddf956145a89eb349928dadd8e32769ba0af35fe72d1fcf9c05dd2294b
|
data/bin/extension_check
ADDED
data/bin/extension_fixer
ADDED
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
require 'rake'
|
|
2
|
+
require 'pathname'
|
|
3
|
+
require 'mime/types'
|
|
4
|
+
|
|
5
|
+
# A ruby gem to fix file extensions
|
|
6
|
+
class ExtensionFixer
|
|
7
|
+
def check
|
|
8
|
+
# Check all files for the correct extension type
|
|
9
|
+
walk_args do |file, right_ext|
|
|
10
|
+
p "#{file} should have a #{right_ext} extension."
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def fix
|
|
15
|
+
# Change all files to the correct extension types
|
|
16
|
+
walk_args do |file, right_extension|
|
|
17
|
+
p "$ mv #{file.gsub(File.extname(file), '{\0,.' + right_extension + '}')}"
|
|
18
|
+
File.rename file, file.ext(right_extension)
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
# Extracts the MIME::Type of a file using unix `file` command.
|
|
25
|
+
# Then reverses the mime/type to a list of possible extensions
|
|
26
|
+
def extension_by_file(file)
|
|
27
|
+
command = ['file', '--brief', '--mime-type', file]
|
|
28
|
+
mimetype = IO.popen(command, in: :close, err: :close).read.chomp
|
|
29
|
+
unless MIME::Types[mimetype].is_a? Array
|
|
30
|
+
p "File #{file} doesn't have any setted mime/type."
|
|
31
|
+
return []
|
|
32
|
+
end
|
|
33
|
+
MIME::Types[mimetype]
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
# Check if the file has one of the possible extensions from mime/type
|
|
37
|
+
def correct_extension?(file)
|
|
38
|
+
extension = File.extname(file).delete('.')
|
|
39
|
+
extension_by_file(file).any? do |possible_extensions|
|
|
40
|
+
possible_extensions.extensions.include? extension
|
|
41
|
+
end
|
|
42
|
+
end
|
|
43
|
+
|
|
44
|
+
# Calls `scan` for every argument
|
|
45
|
+
def walk_args(&block)
|
|
46
|
+
ARGV.each do |path_or_file|
|
|
47
|
+
scan(path_or_file, &block)
|
|
48
|
+
end
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
# Scans each file and calls `walk_directory` when presented with a directory.
|
|
52
|
+
def scan(path, &block)
|
|
53
|
+
if File.file?(path) && !correct_extension?(path)
|
|
54
|
+
correct_extension = extension_by_file(path).first
|
|
55
|
+
if correct_extension.nil?
|
|
56
|
+
p "Skipping #{path}, unknown mimetype"
|
|
57
|
+
else
|
|
58
|
+
yield path, correct_extension.preferred_extension
|
|
59
|
+
end
|
|
60
|
+
elsif File.directory?(path)
|
|
61
|
+
walk_directory(path, &block)
|
|
62
|
+
end
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
# For each file call `scan`
|
|
66
|
+
def walk_directory(path, &block)
|
|
67
|
+
Dir.foreach(path) do |file|
|
|
68
|
+
filename = File.join(path, file)
|
|
69
|
+
next if ['.', '..'].include?(file)
|
|
70
|
+
scan(filename, &block)
|
|
71
|
+
end
|
|
72
|
+
end
|
|
73
|
+
end
|
metadata
ADDED
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: extension_fixer
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 0.0.2
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- John Gabriel
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2017-08-02 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: rake
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: 12.0.0
|
|
20
|
+
- - ">="
|
|
21
|
+
- !ruby/object:Gem::Version
|
|
22
|
+
version: 12.0.0
|
|
23
|
+
type: :development
|
|
24
|
+
prerelease: false
|
|
25
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
26
|
+
requirements:
|
|
27
|
+
- - "~>"
|
|
28
|
+
- !ruby/object:Gem::Version
|
|
29
|
+
version: 12.0.0
|
|
30
|
+
- - ">="
|
|
31
|
+
- !ruby/object:Gem::Version
|
|
32
|
+
version: 12.0.0
|
|
33
|
+
- !ruby/object:Gem::Dependency
|
|
34
|
+
name: rmagick
|
|
35
|
+
requirement: !ruby/object:Gem::Requirement
|
|
36
|
+
requirements:
|
|
37
|
+
- - "~>"
|
|
38
|
+
- !ruby/object:Gem::Version
|
|
39
|
+
version: 2.12.0
|
|
40
|
+
- - ">="
|
|
41
|
+
- !ruby/object:Gem::Version
|
|
42
|
+
version: 2.12.0
|
|
43
|
+
type: :development
|
|
44
|
+
prerelease: false
|
|
45
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
46
|
+
requirements:
|
|
47
|
+
- - "~>"
|
|
48
|
+
- !ruby/object:Gem::Version
|
|
49
|
+
version: 2.12.0
|
|
50
|
+
- - ">="
|
|
51
|
+
- !ruby/object:Gem::Version
|
|
52
|
+
version: 2.12.0
|
|
53
|
+
- !ruby/object:Gem::Dependency
|
|
54
|
+
name: test-unit
|
|
55
|
+
requirement: !ruby/object:Gem::Requirement
|
|
56
|
+
requirements:
|
|
57
|
+
- - "~>"
|
|
58
|
+
- !ruby/object:Gem::Version
|
|
59
|
+
version: 3.2.5
|
|
60
|
+
- - ">="
|
|
61
|
+
- !ruby/object:Gem::Version
|
|
62
|
+
version: 3.2.5
|
|
63
|
+
type: :development
|
|
64
|
+
prerelease: false
|
|
65
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
66
|
+
requirements:
|
|
67
|
+
- - "~>"
|
|
68
|
+
- !ruby/object:Gem::Version
|
|
69
|
+
version: 3.2.5
|
|
70
|
+
- - ">="
|
|
71
|
+
- !ruby/object:Gem::Version
|
|
72
|
+
version: 3.2.5
|
|
73
|
+
description: A ruby gem to fix files extensions based on file headers
|
|
74
|
+
email: joaumg@gmail.com
|
|
75
|
+
executables:
|
|
76
|
+
- extension_check
|
|
77
|
+
- extension_fixer
|
|
78
|
+
extensions: []
|
|
79
|
+
extra_rdoc_files: []
|
|
80
|
+
files:
|
|
81
|
+
- bin/extension_check
|
|
82
|
+
- bin/extension_fixer
|
|
83
|
+
- lib/extension_fixer.rb
|
|
84
|
+
homepage: https://github.com/joaumg/extension_fixer
|
|
85
|
+
licenses:
|
|
86
|
+
- MIT
|
|
87
|
+
metadata: {}
|
|
88
|
+
post_install_message:
|
|
89
|
+
rdoc_options: []
|
|
90
|
+
require_paths:
|
|
91
|
+
- lib
|
|
92
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
93
|
+
requirements:
|
|
94
|
+
- - ">="
|
|
95
|
+
- !ruby/object:Gem::Version
|
|
96
|
+
version: '0'
|
|
97
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
98
|
+
requirements:
|
|
99
|
+
- - ">="
|
|
100
|
+
- !ruby/object:Gem::Version
|
|
101
|
+
version: '0'
|
|
102
|
+
requirements: []
|
|
103
|
+
rubyforge_project:
|
|
104
|
+
rubygems_version: 2.6.12
|
|
105
|
+
signing_key:
|
|
106
|
+
specification_version: 4
|
|
107
|
+
summary: A file extension fixer
|
|
108
|
+
test_files: []
|