justy 1.0.0
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/justy +7 -0
- data/lib/justy/commands/find_command.rb +24 -0
- data/lib/justy/commands/find_command_factory.rb +20 -0
- data/lib/justy/commands/md5_find_command.rb +22 -0
- data/lib/justy/commands/name_find_command.rb +20 -0
- data/lib/justy/finder.rb +38 -0
- data/lib/justy/parser.rb +43 -0
- data/lib/justy/version.rb +3 -0
- data/lib/justy.rb +7 -0
- metadata +82 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA1:
|
|
3
|
+
metadata.gz: a9eeaf48c6f4abb323b781760c2ba625e9cf111e
|
|
4
|
+
data.tar.gz: 14c797be4fb065f10cf82405e0da4ec51b66862e
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: 6c88578c8f4df0bd08f2aed8e7ebceab9250e3bff0cde3680032fc044b860da3dcd3afa62ee7952cce0d951270e5410d103b515db06756ad977a431e4fde218a
|
|
7
|
+
data.tar.gz: 2f666525e63f0fa82dbe16bae00d5053ff981efc3c20aa53b06cec93eec3bda223b72dc02a617f964eb0aea1961f99e1fd04e71e36e958496b825423e5ef0754
|
data/bin/justy
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
|
|
2
|
+
class FindCommand
|
|
3
|
+
|
|
4
|
+
attr_accessor :files
|
|
5
|
+
|
|
6
|
+
def initialize
|
|
7
|
+
@files = {}
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
def run(folder)
|
|
11
|
+
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def output
|
|
15
|
+
puts "\r\n === Identical files ===\n"
|
|
16
|
+
@files.each_value do |filename_array|
|
|
17
|
+
if filename_array.length > 1
|
|
18
|
+
puts "-------------------"
|
|
19
|
+
filename_array.each { |filename| puts ' '+filename }
|
|
20
|
+
end
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require 'justy/commands/find_command'
|
|
4
|
+
require 'justy/commands/md5_find_command'
|
|
5
|
+
require 'justy/commands/name_find_command'
|
|
6
|
+
|
|
7
|
+
class FindCommandFactory
|
|
8
|
+
|
|
9
|
+
def self.create_command(type)
|
|
10
|
+
case type
|
|
11
|
+
when :md5
|
|
12
|
+
MD5FindCommand.new
|
|
13
|
+
when :filename
|
|
14
|
+
NameFindCommand.new
|
|
15
|
+
else
|
|
16
|
+
raise "Bad search type: #{type}"
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require 'digest/md5'
|
|
4
|
+
require 'justy/commands/find_command'
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
class MD5FindCommand < FindCommand
|
|
8
|
+
|
|
9
|
+
def run(folder)
|
|
10
|
+
Dir.glob(folder + '**/*', File::FNM_DOTMATCH).each do |filename|
|
|
11
|
+
next if File.directory?(filename)
|
|
12
|
+
key = Digest::MD5.hexdigest(IO.read(filename)).to_sym
|
|
13
|
+
if @files.has_key? key
|
|
14
|
+
@files[key].push filename
|
|
15
|
+
else
|
|
16
|
+
@files[key] = [filename]
|
|
17
|
+
end
|
|
18
|
+
end
|
|
19
|
+
output()
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
end
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require 'justy/commands/find_command'
|
|
4
|
+
|
|
5
|
+
class NameFindCommand < FindCommand
|
|
6
|
+
|
|
7
|
+
def run(folder)
|
|
8
|
+
Dir.glob(folder + '/**/*', File::FNM_DOTMATCH).each do |full_filename|
|
|
9
|
+
next if File.directory?(full_filename)
|
|
10
|
+
key = File.basename(full_filename)
|
|
11
|
+
if @files.has_key? key
|
|
12
|
+
@files[key].push full_filename
|
|
13
|
+
else
|
|
14
|
+
@files[key] = [full_filename]
|
|
15
|
+
end
|
|
16
|
+
end
|
|
17
|
+
output()
|
|
18
|
+
end
|
|
19
|
+
|
|
20
|
+
end
|
data/lib/justy/finder.rb
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require 'justy/parser'
|
|
4
|
+
require 'justy/commands/find_command_factory'
|
|
5
|
+
require 'justy/commands/find_command'
|
|
6
|
+
|
|
7
|
+
module Justy
|
|
8
|
+
class Finder
|
|
9
|
+
attr_reader :parser
|
|
10
|
+
attr_reader :find_command
|
|
11
|
+
|
|
12
|
+
def initialize
|
|
13
|
+
super
|
|
14
|
+
@parser = Parser.new
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def run(args)
|
|
18
|
+
options = @parser.parse(args)
|
|
19
|
+
@find_command = FindCommandFactory.create_command(options[:type].to_sym)
|
|
20
|
+
folder = folder_for_options(options)
|
|
21
|
+
@find_command.run(folder)
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def folder_for_options(options)
|
|
25
|
+
if (options[:relative])
|
|
26
|
+
folder_path = Dir.pwd
|
|
27
|
+
if (options[:folder])
|
|
28
|
+
folder_path = folder_path + "/" + options[:folder]
|
|
29
|
+
end
|
|
30
|
+
else
|
|
31
|
+
folder_path = options[:folder]
|
|
32
|
+
end
|
|
33
|
+
return folder_path
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
end
|
data/lib/justy/parser.rb
ADDED
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# encoding: UTF-8
|
|
2
|
+
|
|
3
|
+
require 'optparse'
|
|
4
|
+
module Justy
|
|
5
|
+
class Parser
|
|
6
|
+
attr_accessor :options
|
|
7
|
+
attr_reader :options_parser
|
|
8
|
+
|
|
9
|
+
def initialize
|
|
10
|
+
super
|
|
11
|
+
init_parser
|
|
12
|
+
end
|
|
13
|
+
|
|
14
|
+
def init_parser
|
|
15
|
+
@options_parser = OptionParser.new do|opts|
|
|
16
|
+
opts.banner = "Usage: justy [options]"
|
|
17
|
+
opts.on('-t', '--type type', 'Search type. Must be md5 or filename.') do |type|
|
|
18
|
+
@options[:type] = type;
|
|
19
|
+
end
|
|
20
|
+
|
|
21
|
+
opts.on('-r', '--relative', 'Relative to current folder') do
|
|
22
|
+
@options[:relative] = true
|
|
23
|
+
end
|
|
24
|
+
|
|
25
|
+
opts.on('-f', '--folder folder', 'Search folder') do |folder|
|
|
26
|
+
@options[:folder] = folder
|
|
27
|
+
end
|
|
28
|
+
|
|
29
|
+
opts.on('-h', '--help', 'Displays Help') do
|
|
30
|
+
puts opts
|
|
31
|
+
exit
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def parse(args)
|
|
37
|
+
@options = {:type => nil, :folder => nil, :relative => false }
|
|
38
|
+
options_parser.parse!
|
|
39
|
+
return options
|
|
40
|
+
end
|
|
41
|
+
|
|
42
|
+
end
|
|
43
|
+
end
|
data/lib/justy.rb
ADDED
metadata
ADDED
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
|
2
|
+
name: justy
|
|
3
|
+
version: !ruby/object:Gem::Version
|
|
4
|
+
version: 1.0.0
|
|
5
|
+
platform: ruby
|
|
6
|
+
authors:
|
|
7
|
+
- Kirill Kunst
|
|
8
|
+
autorequire:
|
|
9
|
+
bindir: bin
|
|
10
|
+
cert_chain: []
|
|
11
|
+
date: 2013-01-26 00:00:00.000000000 Z
|
|
12
|
+
dependencies:
|
|
13
|
+
- !ruby/object:Gem::Dependency
|
|
14
|
+
name: bundler
|
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
|
16
|
+
requirements:
|
|
17
|
+
- - "~>"
|
|
18
|
+
- !ruby/object:Gem::Version
|
|
19
|
+
version: '1.3'
|
|
20
|
+
type: :development
|
|
21
|
+
prerelease: false
|
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
23
|
+
requirements:
|
|
24
|
+
- - "~>"
|
|
25
|
+
- !ruby/object:Gem::Version
|
|
26
|
+
version: '1.3'
|
|
27
|
+
- !ruby/object:Gem::Dependency
|
|
28
|
+
name: rake
|
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
|
30
|
+
requirements:
|
|
31
|
+
- - ">="
|
|
32
|
+
- !ruby/object:Gem::Version
|
|
33
|
+
version: '0'
|
|
34
|
+
type: :development
|
|
35
|
+
prerelease: false
|
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
|
37
|
+
requirements:
|
|
38
|
+
- - ">="
|
|
39
|
+
- !ruby/object:Gem::Version
|
|
40
|
+
version: '0'
|
|
41
|
+
description: When you want to find duplicate files in folder, all you need is Justy
|
|
42
|
+
email:
|
|
43
|
+
- kirillkunst@gmail.com
|
|
44
|
+
executables:
|
|
45
|
+
- justy
|
|
46
|
+
extensions: []
|
|
47
|
+
extra_rdoc_files: []
|
|
48
|
+
files:
|
|
49
|
+
- lib/justy/commands/find_command.rb
|
|
50
|
+
- lib/justy/commands/find_command_factory.rb
|
|
51
|
+
- lib/justy/commands/md5_find_command.rb
|
|
52
|
+
- lib/justy/commands/name_find_command.rb
|
|
53
|
+
- lib/justy/finder.rb
|
|
54
|
+
- lib/justy/parser.rb
|
|
55
|
+
- lib/justy/version.rb
|
|
56
|
+
- lib/justy.rb
|
|
57
|
+
- bin/justy
|
|
58
|
+
homepage: http://github.com/leoru/justy
|
|
59
|
+
licenses:
|
|
60
|
+
- MIT
|
|
61
|
+
metadata: {}
|
|
62
|
+
post_install_message:
|
|
63
|
+
rdoc_options: []
|
|
64
|
+
require_paths:
|
|
65
|
+
- lib
|
|
66
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
|
67
|
+
requirements:
|
|
68
|
+
- - ">="
|
|
69
|
+
- !ruby/object:Gem::Version
|
|
70
|
+
version: '0'
|
|
71
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
72
|
+
requirements:
|
|
73
|
+
- - ">="
|
|
74
|
+
- !ruby/object:Gem::Version
|
|
75
|
+
version: '0'
|
|
76
|
+
requirements: []
|
|
77
|
+
rubyforge_project:
|
|
78
|
+
rubygems_version: 2.1.10
|
|
79
|
+
signing_key:
|
|
80
|
+
specification_version: 4
|
|
81
|
+
summary: Justy - duplicate files finder
|
|
82
|
+
test_files: []
|