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

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.
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: