img-sort 0.1.3 → 0.2.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.
Files changed (6) hide show
  1. data/Gemfile +2 -3
  2. data/Gemfile.lock +10 -8
  3. data/VERSION +1 -1
  4. data/img-sort.gemspec +18 -25
  5. data/lib/img-sort.rb +35 -8
  6. metadata +82 -74
data/Gemfile CHANGED
@@ -8,7 +8,6 @@ source "http://rubygems.org"
8
8
  gem 'rmagick'
9
9
  group :development do
10
10
  gem "rspec", "~> 2.3.0"
11
- gem "bundler", "~> 1.0.0"
12
- gem "jeweler", "~> 1.5.2"
13
- gem "rcov", ">= 0"
11
+ gem "bundler"
12
+ gem "jeweler"
14
13
  end
@@ -1,14 +1,17 @@
1
1
  GEM
2
2
  remote: http://rubygems.org/
3
3
  specs:
4
- diff-lcs (1.1.2)
4
+ diff-lcs (1.1.3)
5
5
  git (1.2.5)
6
- jeweler (1.5.2)
7
- bundler (~> 1.0.0)
6
+ jeweler (1.8.4)
7
+ bundler (~> 1.0)
8
8
  git (>= 1.2.5)
9
9
  rake
10
- rake (0.8.7)
11
- rcov (0.9.9)
10
+ rdoc
11
+ json (1.7.3)
12
+ rake (0.9.2.2)
13
+ rdoc (3.12)
14
+ json (~> 1.4)
12
15
  rmagick (2.13.1)
13
16
  rspec (2.3.0)
14
17
  rspec-core (~> 2.3.0)
@@ -23,8 +26,7 @@ PLATFORMS
23
26
  ruby
24
27
 
25
28
  DEPENDENCIES
26
- bundler (~> 1.0.0)
27
- jeweler (~> 1.5.2)
28
- rcov
29
+ bundler
30
+ jeweler
29
31
  rmagick
30
32
  rspec (~> 2.3.0)
data/VERSION CHANGED
@@ -1 +1 @@
1
- 0.1.3
1
+ 0.2.0
@@ -4,15 +4,15 @@
4
4
  # -*- encoding: utf-8 -*-
5
5
 
6
6
  Gem::Specification.new do |s|
7
- s.name = %q{img-sort}
8
- s.version = "0.1.3"
7
+ s.name = "img-sort"
8
+ s.version = "0.2.0"
9
9
 
10
10
  s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
11
- s.authors = [%q{Andrey Cherkashin}]
12
- s.date = %q{2011-07-28}
13
- s.description = %q{Sort images by their resolution and rename it if needed}
14
- s.email = %q{with.out@me.com}
15
- s.executables = [%q{img-sort}]
11
+ s.authors = ["Andrey Cherkashin"]
12
+ s.date = "2012-07-24"
13
+ s.description = "Sort images by their resolution and rename it if needed"
14
+ s.email = "with.out@me.com"
15
+ s.executables = ["img-sort"]
16
16
  s.extra_rdoc_files = [
17
17
  "LICENSE.txt",
18
18
  "README.rdoc"
@@ -32,15 +32,11 @@ Gem::Specification.new do |s|
32
32
  "spec/img-sort_spec.rb",
33
33
  "spec/spec_helper.rb"
34
34
  ]
35
- s.homepage = %q{http://github.com/andoriyu/img-sort}
36
- s.licenses = [%q{MIT}]
37
- s.require_paths = [%q{lib}]
38
- s.rubygems_version = %q{1.8.3}
39
- s.summary = %q{Image sorter}
40
- s.test_files = [
41
- "spec/img-sort_spec.rb",
42
- "spec/spec_helper.rb"
43
- ]
35
+ s.homepage = "http://github.com/andoriyu/img-sort"
36
+ s.licenses = ["MIT"]
37
+ s.require_paths = ["lib"]
38
+ s.rubygems_version = "1.8.23"
39
+ s.summary = "Image sorter"
44
40
 
45
41
  if s.respond_to? :specification_version then
46
42
  s.specification_version = 3
@@ -48,24 +44,21 @@ Gem::Specification.new do |s|
48
44
  if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
49
45
  s.add_runtime_dependency(%q<rmagick>, [">= 0"])
50
46
  s.add_development_dependency(%q<rspec>, ["~> 2.3.0"])
51
- s.add_development_dependency(%q<bundler>, ["~> 1.0.0"])
52
- s.add_development_dependency(%q<jeweler>, ["~> 1.5.2"])
53
- s.add_development_dependency(%q<rcov>, [">= 0"])
47
+ s.add_development_dependency(%q<bundler>, [">= 0"])
48
+ s.add_development_dependency(%q<jeweler>, [">= 0"])
54
49
  s.add_runtime_dependency(%q<rmagick>, [">= 0"])
55
50
  else
56
51
  s.add_dependency(%q<rmagick>, [">= 0"])
57
52
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
58
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
59
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
60
- s.add_dependency(%q<rcov>, [">= 0"])
53
+ s.add_dependency(%q<bundler>, [">= 0"])
54
+ s.add_dependency(%q<jeweler>, [">= 0"])
61
55
  s.add_dependency(%q<rmagick>, [">= 0"])
62
56
  end
63
57
  else
64
58
  s.add_dependency(%q<rmagick>, [">= 0"])
65
59
  s.add_dependency(%q<rspec>, ["~> 2.3.0"])
66
- s.add_dependency(%q<bundler>, ["~> 1.0.0"])
67
- s.add_dependency(%q<jeweler>, ["~> 1.5.2"])
68
- s.add_dependency(%q<rcov>, [">= 0"])
60
+ s.add_dependency(%q<bundler>, [">= 0"])
61
+ s.add_dependency(%q<jeweler>, [">= 0"])
69
62
  s.add_dependency(%q<rmagick>, [">= 0"])
70
63
  end
71
64
  end
@@ -9,7 +9,7 @@ require 'rmagick'
9
9
  class ImgSort
10
10
  attr_reader :options
11
11
 
12
- VERSION="0.1.3"
12
+ VERSION="0.2.0"
13
13
 
14
14
  def initialize(arguments = {})
15
15
  @arguments = arguments
@@ -19,6 +19,9 @@ class ImgSort
19
19
  @options.quiet = false
20
20
  @options.rename = true
21
21
  @options.hash_function = 'md5'
22
+
23
+ @options.unsort = false
24
+ @options.copy = false
22
25
  # Init options parser
23
26
  @opt_parser = self.opts_parser
24
27
  end
@@ -32,8 +35,7 @@ class ImgSort
32
35
  puts "Start at #{@start_date}\n" if @options.verbose
33
36
 
34
37
  output_options if @options.verbose
35
-
36
- case sort!(@arguments[0], @arguments[1])
38
+ case set_path!(@arguments[0], @arguments[1])
37
39
  when 1
38
40
  puts "Source directory doesn't exists!"
39
41
  exit 1
@@ -41,6 +43,7 @@ class ImgSort
41
43
  puts "Source directory is empty!"
42
44
  exit 2
43
45
  end
46
+ unsort? ? unsort! : sort!
44
47
 
45
48
  @end_date = Time.now
46
49
  puts "Finished at #{@end_date}\n" if @options.verbose
@@ -57,15 +60,20 @@ class ImgSort
57
60
  opts = OptionParser.new do |x|
58
61
  x.banner= "img-sort [options] <source dir> <dst dir>"
59
62
  x.on('-v', '--version', 'Show version') { output_version ; exit 0 }
60
- x.on('-u', '--usage', 'Show usage') { puts @opt_parser; exit }
63
+ x.on('-u', '--usage', 'Show usage') { puts @opt_parser; exit 0 }
61
64
  x.on('-V', '--verbose', 'Be verbose') { @options.verbose = true }
62
65
  x.on('-q', '--quiet', 'Be quite') { @options.quiet = true }
63
66
  x.on('-h', '--rename', 'Change file name to hash from that file (default)') {@options.rename = true}
64
- x.on('-n', '--no-rename', 'Save original name') {@options.rename = false}
67
+ x.on('-n', '--no-rename', 'Save original name') {@options.rename = false}
68
+ x.on('-U', '--unsort', 'Oposite of sort') { @options.unsort = true}
69
+ x.on('-c', '--copy', 'Copy instead of link (default on sorting operation)') { @options.copy = true if unsort? }
65
70
  end
66
71
  return opts
67
72
 
68
73
  end
74
+ def unsort?
75
+ @options.unsort
76
+ end
69
77
 
70
78
 
71
79
  def parsed_options?
@@ -111,12 +119,32 @@ class ImgSort
111
119
  def output_version
112
120
  puts "#{File.basename(__FILE__)} version #{VERSION}"
113
121
  end
114
-
115
- def sort!(from, to)
122
+ def set_path!(from, to)
116
123
  @from = File.expand_path(from)
117
124
  @to = File.expand_path(to)
118
125
  return 1 unless Dir.exists?(@from)
119
126
  return 2 if Dir.entries(@from).count <= 2
127
+ end
128
+ def unsort!
129
+ @files = Dir.glob("#{@from}/**/*.{png,jpg,jpeg,gif,tiff,bmp}")
130
+ puts "Found #{@files.count} files" unless @options.quite
131
+ return 2 if @files.empty?
132
+ FileUtils.mkdir @to unless Dir.exists?(@to)
133
+ count = 0
134
+ @total = @files.length
135
+ @files.each do |file|
136
+ count += 1
137
+ if @options.copy
138
+ FileUtils.cp file, "#{@to}/#{File.basename(file)}", :force => true
139
+ puts file ' copied' if @options.verbose
140
+ else
141
+ FileUtils.ln file, "#{@to}/#{File.basename(file)}", :force => true
142
+ puts file + ' linked' if @options.verbose
143
+ end
144
+ end
145
+ end
146
+
147
+ def sort!
120
148
  @files = Dir.glob("#{@from}/*.{png,jpg,jpeg,gif,tiff,bmp}")
121
149
  puts "Found #{@files.count} files" unless @options.quite
122
150
  return 2 if @files.empty?
@@ -143,6 +171,5 @@ class ImgSort
143
171
  puts file + ' copied' if @options.verbose
144
172
  end
145
173
  end
146
-
147
174
  end
148
175
 
metadata CHANGED
@@ -1,93 +1,105 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: img-sort
3
- version: !ruby/object:Gem::Version
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.2.0
4
5
  prerelease:
5
- version: 0.1.3
6
6
  platform: ruby
7
- authors:
7
+ authors:
8
8
  - Andrey Cherkashin
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
-
13
- date: 2011-07-28 00:00:00 Z
14
- dependencies:
15
- - !ruby/object:Gem::Dependency
12
+ date: 2012-07-24 00:00:00.000000000 Z
13
+ dependencies:
14
+ - !ruby/object:Gem::Dependency
16
15
  name: rmagick
17
- requirement: &id001 !ruby/object:Gem::Requirement
16
+ requirement: !ruby/object:Gem::Requirement
18
17
  none: false
19
- requirements:
20
- - - ">="
21
- - !ruby/object:Gem::Version
22
- version: "0"
18
+ requirements:
19
+ - - ! '>='
20
+ - !ruby/object:Gem::Version
21
+ version: '0'
23
22
  type: :runtime
24
23
  prerelease: false
25
- version_requirements: *id001
26
- - !ruby/object:Gem::Dependency
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ none: false
26
+ requirements:
27
+ - - ! '>='
28
+ - !ruby/object:Gem::Version
29
+ version: '0'
30
+ - !ruby/object:Gem::Dependency
27
31
  name: rspec
28
- requirement: &id002 !ruby/object:Gem::Requirement
32
+ requirement: !ruby/object:Gem::Requirement
29
33
  none: false
30
- requirements:
34
+ requirements:
31
35
  - - ~>
32
- - !ruby/object:Gem::Version
36
+ - !ruby/object:Gem::Version
33
37
  version: 2.3.0
34
38
  type: :development
35
39
  prerelease: false
36
- version_requirements: *id002
37
- - !ruby/object:Gem::Dependency
38
- name: bundler
39
- requirement: &id003 !ruby/object:Gem::Requirement
40
+ version_requirements: !ruby/object:Gem::Requirement
40
41
  none: false
41
- requirements:
42
+ requirements:
42
43
  - - ~>
43
- - !ruby/object:Gem::Version
44
- version: 1.0.0
44
+ - !ruby/object:Gem::Version
45
+ version: 2.3.0
46
+ - !ruby/object:Gem::Dependency
47
+ name: bundler
48
+ requirement: !ruby/object:Gem::Requirement
49
+ none: false
50
+ requirements:
51
+ - - ! '>='
52
+ - !ruby/object:Gem::Version
53
+ version: '0'
45
54
  type: :development
46
55
  prerelease: false
47
- version_requirements: *id003
48
- - !ruby/object:Gem::Dependency
56
+ version_requirements: !ruby/object:Gem::Requirement
57
+ none: false
58
+ requirements:
59
+ - - ! '>='
60
+ - !ruby/object:Gem::Version
61
+ version: '0'
62
+ - !ruby/object:Gem::Dependency
49
63
  name: jeweler
50
- requirement: &id004 !ruby/object:Gem::Requirement
64
+ requirement: !ruby/object:Gem::Requirement
51
65
  none: false
52
- requirements:
53
- - - ~>
54
- - !ruby/object:Gem::Version
55
- version: 1.5.2
66
+ requirements:
67
+ - - ! '>='
68
+ - !ruby/object:Gem::Version
69
+ version: '0'
56
70
  type: :development
57
71
  prerelease: false
58
- version_requirements: *id004
59
- - !ruby/object:Gem::Dependency
60
- name: rcov
61
- requirement: &id005 !ruby/object:Gem::Requirement
72
+ version_requirements: !ruby/object:Gem::Requirement
62
73
  none: false
63
- requirements:
64
- - - ">="
65
- - !ruby/object:Gem::Version
66
- version: "0"
67
- type: :development
68
- prerelease: false
69
- version_requirements: *id005
70
- - !ruby/object:Gem::Dependency
74
+ requirements:
75
+ - - ! '>='
76
+ - !ruby/object:Gem::Version
77
+ version: '0'
78
+ - !ruby/object:Gem::Dependency
71
79
  name: rmagick
72
- requirement: &id006 !ruby/object:Gem::Requirement
80
+ requirement: !ruby/object:Gem::Requirement
73
81
  none: false
74
- requirements:
75
- - - ">="
76
- - !ruby/object:Gem::Version
77
- version: "0"
82
+ requirements:
83
+ - - ! '>='
84
+ - !ruby/object:Gem::Version
85
+ version: '0'
78
86
  type: :runtime
79
87
  prerelease: false
80
- version_requirements: *id006
88
+ version_requirements: !ruby/object:Gem::Requirement
89
+ none: false
90
+ requirements:
91
+ - - ! '>='
92
+ - !ruby/object:Gem::Version
93
+ version: '0'
81
94
  description: Sort images by their resolution and rename it if needed
82
95
  email: with.out@me.com
83
- executables:
96
+ executables:
84
97
  - img-sort
85
98
  extensions: []
86
-
87
- extra_rdoc_files:
99
+ extra_rdoc_files:
88
100
  - LICENSE.txt
89
101
  - README.rdoc
90
- files:
102
+ files:
91
103
  - .document
92
104
  - .rspec
93
105
  - Gemfile
@@ -102,35 +114,31 @@ files:
102
114
  - spec/img-sort_spec.rb
103
115
  - spec/spec_helper.rb
104
116
  homepage: http://github.com/andoriyu/img-sort
105
- licenses:
117
+ licenses:
106
118
  - MIT
107
119
  post_install_message:
108
120
  rdoc_options: []
109
-
110
- require_paths:
121
+ require_paths:
111
122
  - lib
112
- required_ruby_version: !ruby/object:Gem::Requirement
123
+ required_ruby_version: !ruby/object:Gem::Requirement
113
124
  none: false
114
- requirements:
115
- - - ">="
116
- - !ruby/object:Gem::Version
117
- hash: 4211080693637194583
118
- segments:
125
+ requirements:
126
+ - - ! '>='
127
+ - !ruby/object:Gem::Version
128
+ version: '0'
129
+ segments:
119
130
  - 0
120
- version: "0"
121
- required_rubygems_version: !ruby/object:Gem::Requirement
131
+ hash: -4605182660146684131
132
+ required_rubygems_version: !ruby/object:Gem::Requirement
122
133
  none: false
123
- requirements:
124
- - - ">="
125
- - !ruby/object:Gem::Version
126
- version: "0"
134
+ requirements:
135
+ - - ! '>='
136
+ - !ruby/object:Gem::Version
137
+ version: '0'
127
138
  requirements: []
128
-
129
139
  rubyforge_project:
130
- rubygems_version: 1.8.3
140
+ rubygems_version: 1.8.23
131
141
  signing_key:
132
142
  specification_version: 3
133
143
  summary: Image sorter
134
- test_files:
135
- - spec/img-sort_spec.rb
136
- - spec/spec_helper.rb
144
+ test_files: []