maid 0.8.0.alpha.2 → 0.8.0.alpha.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md CHANGED
@@ -4,6 +4,8 @@
4
4
  [![Build Status](https://secure.travis-ci.org/benjaminoakes/maid.png)](http://travis-ci.org/benjaminoakes/maid)
5
5
  [![Dependency Status](https://gemnasium.com/benjaminoakes/maid.png)](https://gemnasium.com/benjaminoakes/maid)
6
6
  [![Code Climate](https://codeclimate.com/github/benjaminoakes/maid.png)](https://codeclimate.com/github/benjaminoakes/maid)
7
+ [![Hakiri](https://hakiri.io/github/benjaminoakes/maid/stable.svg)](https://hakiri.io/github/benjaminoakes/maid/stable)
8
+ [![StackOverflow](http://img.shields.io/badge/stackoverflow-maid-blue.svg)](http://stackoverflow.com/questions/tagged/maid)
7
9
 
8
10
  **Be lazy!** Let Maid clean up after you, based on rules you define.
9
11
 
@@ -14,6 +14,9 @@ module Maid::Platform
14
14
  !!(host_os =~ /darwin/i)
15
15
  end
16
16
 
17
+ def has_tag_available?
18
+ osx? && system("which -s tag")
19
+ end
17
20
  end
18
21
 
19
22
  # Commands based on OS type
@@ -157,11 +157,11 @@ module Maid::Tools
157
157
  # Single path:
158
158
  #
159
159
  # copy('~/Downloads/foo.zip', '~/Archive/Software/Mac OS X/')
160
- #
160
+ #
161
161
  # Multiple paths:
162
162
  #
163
163
  # copy(['~/Downloads/foo.zip', '~/Downloads/bar.zip'], '~/Archive/Software/Mac OS X/')
164
- # copy(dir('~/Downloads/*.zip'), '~/Archive/Software/Mac OS X/')
164
+ # copy(dir('~/Downloads/*.zip'), '~/Archive/Software/Mac OS X/')
165
165
  def copy(sources, destination)
166
166
  destination = expand(destination)
167
167
 
@@ -358,7 +358,6 @@ module Maid::Tools
358
358
  mdls_to_array(path, 'kMDItemWhereFroms')
359
359
  end
360
360
 
361
- include Maid::Downloading
362
361
  # Detect whether the path is currently being downloaded in Chrome, Firefox or Safari.
363
362
  #
364
363
  # See also: `dir_safe`
@@ -764,134 +763,129 @@ module Maid::Tools
764
763
  #
765
764
  # tags("~/Downloads/a.dmg.download") # => ["Unfinished"]
766
765
  def tags(path)
767
- unless has_tag_available_and_warn?()
768
- return []
766
+ if has_tag_available_and_warn?
767
+ path = expand(path)
768
+ raw = cmd("tag -lN #{sh_escape(path)}")
769
+ raw.strip.split(',')
770
+ else
771
+ []
769
772
  end
770
-
771
- path = sh_escape(expand(path))
772
- raw = cmd("tag -lN #{path}")
773
- raw.strip.split(',')
774
773
  end
775
774
 
776
- # Tell if a file or directory has any Finder labels. Only available on OS X when you have tag installed.
775
+ # Tell if a file or directory has any Finder labels. Only available on OS X when you have tag installed.
777
776
  #
778
777
  # ## Example
779
778
  #
780
779
  # has_tags?("~/Downloads/a.dmg.download") # => true
781
780
  def has_tags?(path)
782
- unless has_tag_available_and_warn?()
783
- return false
781
+ if has_tag_available_and_warn?
782
+ ts = tags(path)
783
+ ts && ts.count > 0
784
+ else
785
+ false
784
786
  end
785
-
786
- ts = tags(path)
787
- ts && ts.count > 0
788
787
  end
789
788
 
790
- # Tell if a file or directory has a certain Finder labels. Only available on OS X when you have tag installed.
789
+ # Tell if a file or directory has a certain Finder labels. Only available on OS X when you have tag installed.
791
790
  #
792
791
  # ## Example
793
792
  #
794
793
  # contains_tag?("~/Downloads/a.dmg.download", "Unfinished") # => true
795
794
  def contains_tag?(path, tag)
796
- unless has_tag_available_and_warn?()
797
- return false
795
+ if has_tag_available_and_warn?
796
+ path = expand(path)
797
+ ts = tags(path)
798
+ ts.include?(tag)
799
+ else
800
+ false
798
801
  end
799
-
800
- path = expand(path)
801
- ts = tags(path)
802
- ts.include? tag
803
802
  end
804
803
 
805
- # Add a Finder label or a list of labels to a file or directory. Only available on OS X when you have tag installed.
804
+ # Add a Finder label or a list of labels to a file or directory. Only available on OS X when you have tag installed.
806
805
  #
807
806
  # ## Example
808
807
  #
809
808
  # add_tag("~/Downloads/a.dmg.download", "Unfinished")
810
809
  def add_tag(path, tag)
811
- unless has_tag_available_and_warn?()
812
- return
813
- end
814
-
815
- path = expand(path)
816
- ts = Array(tag).join(",")
817
- log "add tags #{ts} to #{path}"
818
- if !@file_options[:noop]
819
- cmd("tag -a #{ts} #{sh_escape(path)}")
810
+ if has_tag_available_and_warn?
811
+ path = expand(path)
812
+ ts = Array(tag).join(",")
813
+ log "add tags #{ts} to #{path}"
814
+ if !@file_options[:noop]
815
+ cmd("tag -a #{sh_escape(ts)} #{sh_escape(path)}")
816
+ end
820
817
  end
821
818
  end
822
819
 
823
- # Remove a Finder label or a list of labels from a file or directory. Only available on OS X when you have tag installed.
820
+ # Remove a Finder label or a list of labels from a file or directory. Only available on OS X when you have tag installed.
824
821
  #
825
822
  # ## Example
826
823
  #
827
824
  # remove_tag("~/Downloads/a.dmg", "Unfinished")
828
825
  def remove_tag(path, tag)
829
- unless has_tag_available_and_warn?()
830
- return
831
- end
832
-
833
- path = expand(path)
834
- ts = Array(tag).join(",")
835
- log "remove tags #{ts} from #{path}"
836
- if !@file_options[:noop]
837
- cmd("tag -r #{ts} #{sh_escape(path)}")
826
+ if has_tag_available_and_warn?
827
+ path = expand(path)
828
+ ts = Array(tag).join(",")
829
+ log "remove tags #{ts} from #{path}"
830
+ if !@file_options[:noop]
831
+ cmd("tag -r #{sh_escape(ts)} #{sh_escape(path)}")
832
+ end
838
833
  end
839
834
  end
840
835
 
841
- # Set Finder label of a file or directory to a label or a list of labels. Only available on OS X when you have tag installed.
836
+ # Set Finder label of a file or directory to a label or a list of labels. Only available on OS X when you have tag installed.
842
837
  #
843
838
  # ## Example
844
839
  #
845
840
  # set_tag("~/Downloads/a.dmg.download", "Unfinished")
846
841
  def set_tag(path, tag)
847
- unless has_tag_available_and_warn?()
848
- return
849
- end
850
-
851
- path = expand(path)
852
- ts = Array(tag).join(",")
853
- log "set tags #{ts} to #{path}"
854
- if !@file_options[:noop]
855
- `tag -s "#{ts}" "#{path}"`
842
+ if has_tag_available_and_warn?
843
+ path = expand(path)
844
+ ts = Array(tag).join(",")
845
+ log "set tags #{ts} to #{path}"
846
+ if !@file_options[:noop]
847
+ cmd("tag -s #{sh_escape(ts)} #{sh_escape(path)}")
848
+ end
856
849
  end
857
850
  end
858
851
 
859
- # Tell if a file is hidden
852
+ # Tell if a file is hidden
860
853
  #
861
854
  # ## Example
862
855
  #
863
856
  # hidden?("~/.maid") # => true
864
857
  def hidden?(path)
865
- if Maid::Platform.osx?
866
- attribute = 'kMDItemFSInvisible'
867
- raw = cmd("mdls -raw -name #{attribute} #{ sh_escape(path) }")
868
- return raw == '1'
858
+ if Maid::Platform.osx?
859
+ raw = cmd("mdls -raw -name kMDItemFSInvisible #{ sh_escape(path) }")
860
+ raw == '1'
869
861
  else
870
862
  p = Pathname.new(expand(path))
871
- return p.basename =~ /^\./
863
+ p.basename =~ /^\./
872
864
  end
873
865
  end
874
866
 
875
- # Tell if a file has been used since added
867
+ # Tell if a file has been used since added
876
868
  #
877
869
  # ## Example
878
870
  #
879
871
  # has_been_used?("~/Downloads/downloading.download") # => false
880
872
  def has_been_used?(path)
881
- if Maid::Platform.osx?
873
+ if Maid::Platform.osx?
882
874
  path = expand(path)
883
875
  raw = cmd("mdls -raw -name kMDItemLastUsedDate #{ sh_escape(path) }")
876
+
884
877
  if raw == "(null)"
885
- return false
886
- end
887
- begin
888
- DateTime.parse(raw).to_time
889
- return true
890
- rescue Exception => e
891
- return false
878
+ false
879
+ else
880
+ begin
881
+ DateTime.parse(raw).to_time
882
+ true
883
+ rescue ArgumentError => e
884
+ false
885
+ end
892
886
  end
893
887
  else
894
- return used_at(path) <=> added_at(path) > 0
888
+ used_at(path) <=> added_at(path) > 0
895
889
  end
896
890
  end
897
891
 
@@ -901,19 +895,21 @@ module Maid::Tools
901
895
  #
902
896
  # used_at("foo.zip") # => Sat Apr 09 10:50:01 -0400 2011
903
897
  def used_at(path)
904
- if Maid::Platform.osx?
898
+ if Maid::Platform.osx?
905
899
  path = expand(path)
906
900
  raw = cmd("mdls -raw -name kMDItemLastUsedDate #{ sh_escape(path) }")
901
+
907
902
  if raw == "(null)"
908
- return 3650.day.ago
909
- end
910
- begin
911
- return DateTime.parse(raw).to_time
912
- rescue Exception => e
913
- return accessed_at(path)
903
+ nil
904
+ else
905
+ begin
906
+ DateTime.parse(raw).to_time
907
+ rescue ArgumentError => e
908
+ accessed_at(path)
909
+ end
914
910
  end
915
911
  else
916
- return accessed_at(path)
912
+ accessed_at(path)
917
913
  end
918
914
  end
919
915
 
@@ -923,38 +919,42 @@ module Maid::Tools
923
919
  #
924
920
  # added_at("foo.zip") # => Sat Apr 09 10:50:01 -0400 2011
925
921
  def added_at(path)
926
- if Maid::Platform.osx?
922
+ if Maid::Platform.osx?
927
923
  path = expand(path)
928
924
  raw = cmd("mdls -raw -name kMDItemDateAdded #{ sh_escape(path) }")
925
+
929
926
  if raw == "(null)"
930
- return 1.second.ago
931
- end
932
- begin
933
- return DateTime.parse(raw).to_time
934
- rescue Exception => e
935
- return created_at(path)
927
+ 1.second.ago
928
+ else
929
+ begin
930
+ DateTime.parse(raw).to_time
931
+ rescue ArgumentError => e
932
+ created_at(path)
933
+ end
936
934
  end
937
935
  else
938
- return created_at(path)
936
+ created_at(path)
939
937
  end
940
938
  end
941
939
 
942
940
  private
943
941
 
944
- def has_tag_available?()
945
- return Maid::Platform.osx? && system("which -s tag")
942
+ def has_tag_available?
943
+ Maid::Platform.has_tag_available?
946
944
  end
947
945
 
948
- def has_tag_available_and_warn?()
949
- unless has_tag_available?
946
+ def has_tag_available_and_warn?
947
+ if has_tag_available?
948
+ true
949
+ else
950
950
  if Maid::Platform.osx?
951
951
  warn("To use this feature, you need `tag` installed. Run `brew install tag`")
952
952
  else
953
953
  warn("sorry, tagging is unavailable on your platform")
954
954
  end
955
- return false
955
+
956
+ false
956
957
  end
957
- return true
958
958
  end
959
959
 
960
960
  def sh_escape(array)
@@ -978,10 +978,17 @@ module Maid::Tools
978
978
  end
979
979
 
980
980
  def mdls_to_array(path, attribute)
981
- return [] unless Maid::Platform.osx?
982
- raw = cmd("mdls -raw -name #{attribute} #{ sh_escape(path) }")
983
- return [] if raw.empty?
984
- clean = raw[1, raw.length - 2]
985
- clean.split(/,\s+/).map { |s| t = s.strip; t[1, t.length - 2] }
981
+ if Maid::Platform.osx?
982
+ raw = cmd("mdls -raw -name #{sh_escape(attribute)} #{ sh_escape(path) }")
983
+
984
+ if raw.empty?
985
+ []
986
+ else
987
+ clean = raw[1, raw.length - 2]
988
+ clean.split(/,\s+/).map { |s| t = s.strip; t[1, t.length - 2] }
989
+ end
990
+ else
991
+ []
992
+ end
986
993
  end
987
994
  end
@@ -1,4 +1,4 @@
1
1
  module Maid
2
- VERSION = '0.8.0.alpha.2'
2
+ VERSION = '0.8.0.alpha.3'
3
3
  SUMMARY = 'Be lazy. Let Maid clean up after you, based on rules you define. Think of it as "Hazel for hackers".'
4
4
  end
@@ -1,20 +1,22 @@
1
1
  require 'listen'
2
+
2
3
  class Maid::Watch
3
4
  include Maid::RuleContainer
4
- include Maid::Downloading
5
5
 
6
6
  attr_reader :path, :listener, :logger
7
7
 
8
8
  def initialize(maid, path, options = {}, &rules)
9
9
  @maid = maid
10
- if options.nil?
10
+
11
+ if options.nil? || options.empty?
11
12
  @lazy = true
12
- @options = { wait_for_delay: 10,
13
+ @options = { wait_for_delay: 10,
13
14
  ignore: Maid::Downloading.downloading_file_regexps }
14
15
  else
15
16
  @lazy = options.delete(:lazy) { |key| true }
16
17
  @options = options
17
18
  end
19
+
18
20
  @logger = maid.logger # TODO: Maybe it's better to create seperate loggers?
19
21
  @path = File.expand_path(path)
20
22
  initialize_rules(&rules)
@@ -27,6 +29,7 @@ class Maid::Watch
27
29
  follow_rules(modified, added, removed)
28
30
  end
29
31
  end
32
+
30
33
  @listener.start
31
34
  end
32
35
  end
@@ -771,30 +771,35 @@ module Maid
771
771
  expect(@maid.ignore_child_dirs(src).sort).to eq(expected)
772
772
  end
773
773
  end
774
+ end
774
775
 
775
- describe '#tags' do
776
- before do
777
- @test_file = (@test_dir = '~/.maid/test/') + (@file_name = 'tag.zip')
778
- `mkdir -p #{@test_dir}`
779
- `touch #{@test_file}`
780
- @maid.file_options[:noop] = false
781
- end
776
+ describe 'OSX tag support', :fakefs => false do
777
+ before do
778
+ @logger = double('Logger').as_null_object
779
+ @maid = Maid.new(:logger => @logger)
782
780
 
783
- after do
784
- `rm -r #{@test_dir}`
785
- @maid.file_options[:noop] = true
786
- end
781
+ @test_file = (@test_dir = '~/.maid/test/') + (@file_name = 'tag.zip')
782
+ FileUtils.mkdir_p(@test_dir)
783
+ FileUtils.touch(@test_file)
784
+ @maid.file_options[:noop] = false
785
+ end
786
+
787
+ after do
788
+ FileUtils.rm_r(@test_dir)
789
+ @maid.file_options[:noop] = true
790
+ end
787
791
 
788
- it 'get tags from a file that has one' do
789
- if system("which -s tag")
792
+ describe '#tags' do
793
+ it 'returns tags from a file that has one' do
794
+ if Platform.has_tag_available?
790
795
  @maid.file_options[:noop] = false
791
796
  @maid.add_tag(@test_file, "Test")
792
797
  expect(@maid.tags(@test_file)).to eq(["Test"])
793
798
  end
794
799
  end
795
800
 
796
- it 'get tags from a file that has serveral tags' do
797
- if system("which -s tag")
801
+ it 'returns tags from a file that has serveral tags' do
802
+ if Platform.has_tag_available?
798
803
  @maid.file_options[:noop] = false
799
804
  @maid.add_tag(@test_file, ["Test", "Twice"])
800
805
  expect(@maid.tags(@test_file)).to eq(["Test", "Twice"])
@@ -803,45 +808,21 @@ module Maid
803
808
  end
804
809
 
805
810
  describe '#has_tags?' do
806
- before do
807
- @test_file = (@test_dir = '~/.maid/test/') + (@file_name = 'tag.zip')
808
- `mkdir -p #{@test_dir}`
809
- `touch #{@test_file}`
810
- @maid.file_options[:noop] = false
811
- end
812
-
813
- after do
814
- `rm -r #{@test_dir}`
815
- @maid.file_options[:noop] = true
816
- end
817
-
818
- it 'A file with tags' do
819
- if system("which -s tag")
811
+ it 'returns true for a file with tags' do
812
+ if Platform.has_tag_available?
820
813
  @maid.add_tag(@test_file, "Test")
821
814
  expect(@maid.has_tags?(@test_file)).to be(true)
822
815
  end
823
816
  end
824
817
 
825
- it 'A file without tags' do
826
- expect(@maid.has_tags?(@test_file)).to be(false)
818
+ it 'returns false for a file without tags' do
819
+ expect(@maid.has_tags?(@test_file)).to be(false)
827
820
  end
828
821
  end
829
822
 
830
823
  describe '#contains_tag?' do
831
- before do
832
- @test_file = (@test_dir = '~/.maid/test/') + (@file_name = 'tag.zip')
833
- `mkdir -p #{@test_dir}`
834
- `touch #{@test_file}`
835
- @maid.file_options[:noop] = false
836
- end
837
-
838
- after do
839
- `rm -r #{@test_dir}`
840
- @maid.file_options[:noop] = true
841
- end
842
-
843
- it 'A file with Test tag' do
844
- if system("which -s tag")
824
+ it 'returns true a file with the given tag' do
825
+ if Platform.has_tag_available?
845
826
  @maid.add_tag(@test_file, "Test")
846
827
  expect(@maid.contains_tag?(@test_file, "Test")).to be(true)
847
828
  expect(@maid.contains_tag?(@test_file, "Not there")).to be(false)
@@ -850,20 +831,8 @@ module Maid
850
831
  end
851
832
 
852
833
  describe '#add_tag' do
853
- before do
854
- @test_file = (@test_dir = '~/.maid/test/') + (@file_name = 'tag.zip')
855
- `mkdir -p #{@test_dir}`
856
- `touch #{@test_file}`
857
- @maid.file_options[:noop] = false
858
- end
859
-
860
- after do
861
- `rm -r #{@test_dir}`
862
- @maid.file_options[:noop] = true
863
- end
864
-
865
- it 'Add Test tag to a file' do
866
- if system("which -s tag")
834
+ it 'adds the given tag to a file' do
835
+ if Platform.has_tag_available?
867
836
  @maid.add_tag(@test_file, "Test")
868
837
  expect(@maid.contains_tag?(@test_file, "Test")).to be(true)
869
838
  end
@@ -871,20 +840,8 @@ module Maid
871
840
  end
872
841
 
873
842
  describe '#remove_tag' do
874
- before do
875
- @test_file = (@test_dir = '~/.maid/test/') + (@file_name = 'tag.zip')
876
- `mkdir -p #{@test_dir}`
877
- `touch #{@test_file}`
878
- @maid.file_options[:noop] = false
879
- end
880
-
881
- after do
882
- `rm -r #{@test_dir}`
883
- @maid.file_options[:noop] = true
884
- end
885
-
886
- it 'Remove Test tag from a file' do
887
- if system("which -s tag")
843
+ it 'removes the given tag from a file' do
844
+ if Platform.has_tag_available?
888
845
  @maid.add_tag(@test_file, "Test")
889
846
  expect(@maid.contains_tag?(@test_file, "Test")).to be(true)
890
847
  @maid.remove_tag(@test_file, "Test")
@@ -894,20 +851,8 @@ module Maid
894
851
  end
895
852
 
896
853
  describe '#set_tag' do
897
- before do
898
- @test_file = (@test_dir = '~/.maid/test/') + (@file_name = 'tag.zip')
899
- `mkdir -p #{@test_dir}`
900
- `touch #{@test_file}`
901
- @maid.file_options[:noop] = false
902
- end
903
-
904
- after do
905
- `rm -r #{@test_dir}`
906
- @maid.file_options[:noop] = true
907
- end
908
-
909
- it 'Set Test tags to a file' do
910
- if system("which -s tag")
854
+ it 'sets the given tags on a file' do
855
+ if Platform.has_tag_available?
911
856
  @maid.set_tag(@test_file, "Test")
912
857
  expect(@maid.contains_tag?(@test_file, "Test")).to be(true)
913
858
  @maid.set_tag(@test_file, ["Test", "Twice"])
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: maid
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.8.0.alpha.2
4
+ version: 0.8.0.alpha.3
5
5
  prerelease: 6
6
6
  platform: ruby
7
7
  authors:
@@ -9,11 +9,11 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2015-05-05 00:00:00.000000000 Z
12
+ date: 2015-07-20 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: escape
16
- requirement: &13164820 !ruby/object:Gem::Requirement
16
+ requirement: &16122080 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -24,10 +24,10 @@ dependencies:
24
24
  version: 0.1.0
25
25
  type: :runtime
26
26
  prerelease: false
27
- version_requirements: *13164820
27
+ version_requirements: *16122080
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: thor
30
- requirement: &13164080 !ruby/object:Gem::Requirement
30
+ requirement: &16121340 !ruby/object:Gem::Requirement
31
31
  none: false
32
32
  requirements:
33
33
  - - ! '>='
@@ -38,10 +38,10 @@ dependencies:
38
38
  version: 1.0.0
39
39
  type: :runtime
40
40
  prerelease: false
41
- version_requirements: *13164080
41
+ version_requirements: *16121340
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: deprecated
44
- requirement: &13163360 !ruby/object:Gem::Requirement
44
+ requirement: &16120620 !ruby/object:Gem::Requirement
45
45
  none: false
46
46
  requirements:
47
47
  - - ~>
@@ -49,10 +49,10 @@ dependencies:
49
49
  version: 3.0.0
50
50
  type: :runtime
51
51
  prerelease: false
52
- version_requirements: *13163360
52
+ version_requirements: *16120620
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: dimensions
55
- requirement: &13162880 !ruby/object:Gem::Requirement
55
+ requirement: &16120140 !ruby/object:Gem::Requirement
56
56
  none: false
57
57
  requirements:
58
58
  - - ! '>='
@@ -63,10 +63,10 @@ dependencies:
63
63
  version: '2.0'
64
64
  type: :runtime
65
65
  prerelease: false
66
- version_requirements: *13162880
66
+ version_requirements: *16120140
67
67
  - !ruby/object:Gem::Dependency
68
68
  name: mime-types
69
- requirement: &13162080 !ruby/object:Gem::Requirement
69
+ requirement: &16119340 !ruby/object:Gem::Requirement
70
70
  none: false
71
71
  requirements:
72
72
  - - ~>
@@ -74,10 +74,10 @@ dependencies:
74
74
  version: '2.0'
75
75
  type: :runtime
76
76
  prerelease: false
77
- version_requirements: *13162080
77
+ version_requirements: *16119340
78
78
  - !ruby/object:Gem::Dependency
79
79
  name: rubyzip
80
- requirement: &13161580 !ruby/object:Gem::Requirement
80
+ requirement: &16118840 !ruby/object:Gem::Requirement
81
81
  none: false
82
82
  requirements:
83
83
  - - ~>
@@ -85,10 +85,10 @@ dependencies:
85
85
  version: 1.1.0
86
86
  type: :runtime
87
87
  prerelease: false
88
- version_requirements: *13161580
88
+ version_requirements: *16118840
89
89
  - !ruby/object:Gem::Dependency
90
90
  name: xdg
91
- requirement: &13160980 !ruby/object:Gem::Requirement
91
+ requirement: &16118240 !ruby/object:Gem::Requirement
92
92
  none: false
93
93
  requirements:
94
94
  - - ~>
@@ -96,10 +96,10 @@ dependencies:
96
96
  version: 2.2.3
97
97
  type: :runtime
98
98
  prerelease: false
99
- version_requirements: *13160980
99
+ version_requirements: *16118240
100
100
  - !ruby/object:Gem::Dependency
101
101
  name: listen
102
- requirement: &13158260 !ruby/object:Gem::Requirement
102
+ requirement: &16115520 !ruby/object:Gem::Requirement
103
103
  none: false
104
104
  requirements:
105
105
  - - ! '>='
@@ -110,10 +110,10 @@ dependencies:
110
110
  version: 2.11.0
111
111
  type: :runtime
112
112
  prerelease: false
113
- version_requirements: *13158260
113
+ version_requirements: *16115520
114
114
  - !ruby/object:Gem::Dependency
115
115
  name: rufus-scheduler
116
- requirement: &13173700 !ruby/object:Gem::Requirement
116
+ requirement: &16130960 !ruby/object:Gem::Requirement
117
117
  none: false
118
118
  requirements:
119
119
  - - ~>
@@ -121,10 +121,10 @@ dependencies:
121
121
  version: 3.0.6
122
122
  type: :runtime
123
123
  prerelease: false
124
- version_requirements: *13173700
124
+ version_requirements: *16130960
125
125
  - !ruby/object:Gem::Dependency
126
126
  name: exifr
127
- requirement: &13172960 !ruby/object:Gem::Requirement
127
+ requirement: &16130220 !ruby/object:Gem::Requirement
128
128
  none: false
129
129
  requirements:
130
130
  - - ~>
@@ -132,10 +132,10 @@ dependencies:
132
132
  version: 1.2.0
133
133
  type: :runtime
134
134
  prerelease: false
135
- version_requirements: *13172960
135
+ version_requirements: *16130220
136
136
  - !ruby/object:Gem::Dependency
137
137
  name: geocoder
138
- requirement: &13172120 !ruby/object:Gem::Requirement
138
+ requirement: &16129380 !ruby/object:Gem::Requirement
139
139
  none: false
140
140
  requirements:
141
141
  - - ~>
@@ -143,10 +143,10 @@ dependencies:
143
143
  version: 1.2.0
144
144
  type: :runtime
145
145
  prerelease: false
146
- version_requirements: *13172120
146
+ version_requirements: *16129380
147
147
  - !ruby/object:Gem::Dependency
148
148
  name: fakefs
149
- requirement: &13169320 !ruby/object:Gem::Requirement
149
+ requirement: &16126580 !ruby/object:Gem::Requirement
150
150
  none: false
151
151
  requirements:
152
152
  - - ~>
@@ -154,10 +154,10 @@ dependencies:
154
154
  version: 0.4.3
155
155
  type: :development
156
156
  prerelease: false
157
- version_requirements: *13169320
157
+ version_requirements: *16126580
158
158
  - !ruby/object:Gem::Dependency
159
159
  name: guard
160
- requirement: &13167680 !ruby/object:Gem::Requirement
160
+ requirement: &16124940 !ruby/object:Gem::Requirement
161
161
  none: false
162
162
  requirements:
163
163
  - - ~>
@@ -165,10 +165,10 @@ dependencies:
165
165
  version: 2.12.5
166
166
  type: :development
167
167
  prerelease: false
168
- version_requirements: *13167680
168
+ version_requirements: *16124940
169
169
  - !ruby/object:Gem::Dependency
170
170
  name: guard-rspec
171
- requirement: &13167000 !ruby/object:Gem::Requirement
171
+ requirement: &16124260 !ruby/object:Gem::Requirement
172
172
  none: false
173
173
  requirements:
174
174
  - - ~>
@@ -176,10 +176,10 @@ dependencies:
176
176
  version: 4.5.0
177
177
  type: :development
178
178
  prerelease: false
179
- version_requirements: *13167000
179
+ version_requirements: *16124260
180
180
  - !ruby/object:Gem::Dependency
181
181
  name: rake
182
- requirement: &13166280 !ruby/object:Gem::Requirement
182
+ requirement: &16123540 !ruby/object:Gem::Requirement
183
183
  none: false
184
184
  requirements:
185
185
  - - ~>
@@ -187,10 +187,10 @@ dependencies:
187
187
  version: 10.4.2
188
188
  type: :development
189
189
  prerelease: false
190
- version_requirements: *13166280
190
+ version_requirements: *16123540
191
191
  - !ruby/object:Gem::Dependency
192
192
  name: redcarpet
193
- requirement: &13181680 !ruby/object:Gem::Requirement
193
+ requirement: &16138940 !ruby/object:Gem::Requirement
194
194
  none: false
195
195
  requirements:
196
196
  - - ~>
@@ -198,10 +198,10 @@ dependencies:
198
198
  version: 3.2.2
199
199
  type: :development
200
200
  prerelease: false
201
- version_requirements: *13181680
201
+ version_requirements: *16138940
202
202
  - !ruby/object:Gem::Dependency
203
203
  name: rspec
204
- requirement: &13180660 !ruby/object:Gem::Requirement
204
+ requirement: &16137920 !ruby/object:Gem::Requirement
205
205
  none: false
206
206
  requirements:
207
207
  - - ~>
@@ -209,10 +209,10 @@ dependencies:
209
209
  version: 3.2.0
210
210
  type: :development
211
211
  prerelease: false
212
- version_requirements: *13180660
212
+ version_requirements: *16137920
213
213
  - !ruby/object:Gem::Dependency
214
214
  name: timecop
215
- requirement: &13180020 !ruby/object:Gem::Requirement
215
+ requirement: &16137280 !ruby/object:Gem::Requirement
216
216
  none: false
217
217
  requirements:
218
218
  - - ~>
@@ -220,10 +220,10 @@ dependencies:
220
220
  version: 0.7.0
221
221
  type: :development
222
222
  prerelease: false
223
- version_requirements: *13180020
223
+ version_requirements: *16137280
224
224
  - !ruby/object:Gem::Dependency
225
225
  name: yard
226
- requirement: &13179340 !ruby/object:Gem::Requirement
226
+ requirement: &16136600 !ruby/object:Gem::Requirement
227
227
  none: false
228
228
  requirements:
229
229
  - - ~>
@@ -231,10 +231,10 @@ dependencies:
231
231
  version: 0.8.4
232
232
  type: :development
233
233
  prerelease: false
234
- version_requirements: *13179340
234
+ version_requirements: *16136600
235
235
  - !ruby/object:Gem::Dependency
236
236
  name: rb-inotify
237
- requirement: &13178640 !ruby/object:Gem::Requirement
237
+ requirement: &16135900 !ruby/object:Gem::Requirement
238
238
  none: false
239
239
  requirements:
240
240
  - - ~>
@@ -242,10 +242,10 @@ dependencies:
242
242
  version: 0.9.0
243
243
  type: :development
244
244
  prerelease: false
245
- version_requirements: *13178640
245
+ version_requirements: *16135900
246
246
  - !ruby/object:Gem::Dependency
247
247
  name: rb-fsevent
248
- requirement: &13178180 !ruby/object:Gem::Requirement
248
+ requirement: &16135440 !ruby/object:Gem::Requirement
249
249
  none: false
250
250
  requirements:
251
251
  - - ~>
@@ -253,7 +253,7 @@ dependencies:
253
253
  version: 0.9.2
254
254
  type: :development
255
255
  prerelease: false
256
- version_requirements: *13178180
256
+ version_requirements: *16135440
257
257
  description: Be lazy. Let Maid clean up after you, based on rules you define. Think
258
258
  of it as "Hazel for hackers".
259
259
  email: