maid 0.6.0.alpha.4 → 0.6.0.alpha.5

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/.travis.yml CHANGED
@@ -9,5 +9,5 @@ rvm:
9
9
  - 2.1.3
10
10
  - 2.1.4
11
11
  - 2.1.5
12
- - 2.2.0-preview2
12
+ - 2.2.0
13
13
  - ruby-head
data/ChangeLog CHANGED
@@ -1,10 +1,10 @@
1
1
  maid (0.6.0) unstable; urgency=low
2
2
 
3
- * Started official support for Ruby 2.1.1, 2.1.2, 2.1.3. Tentative support
4
- for Ruby 2.2.0.
3
+ * Started official support for Ruby 2.1.1, 2.1.2, 2.1.3, 2.2.0.
5
4
  * Jayson Rhynas: Add Safari download detection to "downloading?" (Closes: #121)
6
5
  * Pedro Lambert: Add support for Rake tasks defined by Maid (Closes: #68, #123)
7
6
  * Jurriaan Pruis: Add daemon mode and repeat support (Closes: #126, #131)
7
+ * Jurriaan Pruis: Add "ignore" option support for "watch" (Closes: #132)
8
8
 
9
9
  -- Benjamin Oakes <hello@benjaminoakes.com> TODO
10
10
 
data/README.md CHANGED
@@ -211,9 +211,11 @@ Example for every day at 1am:
211
211
  0 1 * * * /bin/bash -li -c "maid clean --force --silent"
212
212
 
213
213
  ### Running as a daemon
214
+
214
215
  To run Maid as a daemon you first have to specify watch/repeat rules.
215
216
 
216
217
  They are defined like this:
218
+
217
219
  ```ruby
218
220
  repeat '1s' do
219
221
  rule 'This rule will run every second' do
@@ -226,6 +228,10 @@ watch '/home/user/Downloads' do
226
228
  # another task
227
229
  end
228
230
  end
231
+
232
+ watch '~/Desktop', ignore: /some_directory/ do
233
+ # rules in here
234
+ end
229
235
  ```
230
236
 
231
237
  To run the daemon run `maid daemon`
data/lib/maid/maid.rb CHANGED
@@ -85,8 +85,8 @@ class Maid::Maid
85
85
  STDERR.puts e.message
86
86
  end
87
87
 
88
- def watch(path, &rules)
89
- @watches << ::Maid::Watch.new(self, path, &rules)
88
+ def watch(path, options = {}, &rules)
89
+ @watches << ::Maid::Watch.new(self, path, options, &rules)
90
90
  end
91
91
 
92
92
  def repeat(timestring, &rules)
data/lib/maid/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module Maid
2
- VERSION = '0.6.0.alpha.4'
2
+ VERSION = '0.6.0.alpha.5'
3
3
  end
data/lib/maid/watch.rb CHANGED
@@ -1,11 +1,12 @@
1
1
  require 'listen'
2
2
  class Maid::Watch
3
3
  include Maid::RuleContainer
4
-
4
+
5
5
  attr_reader :path, :listener, :logger
6
-
7
- def initialize(maid, path, &rules)
6
+
7
+ def initialize(maid, path, options = {}, &rules)
8
8
  @maid = maid
9
+ @options = options
9
10
  @logger = maid.logger # TODO: Maybe it's better to create seperate loggers?
10
11
  @path = File.expand_path(path)
11
12
  initialize_rules(&rules)
@@ -13,17 +14,17 @@ class Maid::Watch
13
14
 
14
15
  def run
15
16
  unless rules.empty?
16
- @listener = Listen.to(path) do |modified, added, removed|
17
+ @listener = Listen.to(path, @options) do |modified, added, removed|
17
18
  follow_rules(modified, added, removed)
18
19
  end
19
20
  @listener.start
20
21
  end
21
22
  end
22
-
23
+
23
24
  def stop
24
25
  @listener.stop
25
26
  end
26
-
27
+
27
28
  def join
28
29
  @listener.thread.join unless @listener.nil? || @listener.paused?
29
30
  end
@@ -176,15 +176,17 @@ module Maid
176
176
  expect(@maid.rules.first.description).to eq('description')
177
177
  end
178
178
  end
179
-
179
+
180
180
  describe '#watch' do
181
181
  before do
182
+ Listen.stub(:to)
183
+ Listen.stub(:start)
182
184
  @maid = Maid.new
183
185
  end
184
186
 
185
187
  it 'adds a watch to the list of watches' do
186
188
  expect(@maid.watches.length).to eq(0)
187
-
189
+
188
190
  @maid.watch('watch_dir') do
189
191
  'instructions'
190
192
  end
@@ -192,8 +194,28 @@ module Maid
192
194
  expect(@maid.watches.length).to eq(1)
193
195
  expect(@maid.watches.first.path).to eq(File.expand_path('watch_dir'))
194
196
  end
197
+
198
+ it 'accepts a hash of options and passes them to Listen' do
199
+ hash = { :some => :options }
200
+ @maid.watch('some_dir', hash) do
201
+ rule 'test' do
202
+ end
203
+ end
204
+
205
+ listener = double('listener')
206
+
207
+ expect(Listen).to receive(:to) do |dir, opts|
208
+ expect(dir).to eq File.expand_path('some_dir')
209
+ expect(opts).to eq(hash)
210
+ listener
211
+ end
212
+
213
+ expect(listener).to receive(:start)
214
+
215
+ @maid.watches.last.run
216
+ end
195
217
  end
196
-
218
+
197
219
  describe '#repeat' do
198
220
  before do
199
221
  @maid = Maid.new
@@ -201,7 +223,7 @@ module Maid
201
223
 
202
224
  it 'adds a repeat to the list of repeats' do
203
225
  expect(@maid.repeats.length).to eq(0)
204
-
226
+
205
227
  @maid.repeat('1s') do
206
228
  'instructions'
207
229
  end
@@ -216,8 +238,8 @@ module Maid
216
238
  n = 3
217
239
  maid = Maid.new
218
240
  expect(@logger).to receive(:info).exactly(n).times
219
- rules = (1..n).map do |n|
220
- d = double("rule ##{ n }", :description => 'description')
241
+ rules = (1..n).map do |i|
242
+ d = double("rule ##{ i }", :description => 'description')
221
243
  expect(d).to receive(:follow)
222
244
  d
223
245
  end
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.6.0.alpha.4
4
+ version: 0.6.0.alpha.5
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: 2014-12-21 00:00:00.000000000 Z
12
+ date: 2014-12-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: escape
16
- requirement: &16193980 !ruby/object:Gem::Requirement
16
+ requirement: &9484660 !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: *16193980
27
+ version_requirements: *9484660
28
28
  - !ruby/object:Gem::Dependency
29
29
  name: thor
30
- requirement: &16190100 !ruby/object:Gem::Requirement
30
+ requirement: &9480520 !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: *16190100
41
+ version_requirements: *9480520
42
42
  - !ruby/object:Gem::Dependency
43
43
  name: deprecated
44
- requirement: &16165540 !ruby/object:Gem::Requirement
44
+ requirement: &9456100 !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: *16165540
52
+ version_requirements: *9456100
53
53
  - !ruby/object:Gem::Dependency
54
54
  name: mime-types
55
- requirement: &16164520 !ruby/object:Gem::Requirement
55
+ requirement: &9455100 !ruby/object:Gem::Requirement
56
56
  none: false
57
57
  requirements:
58
58
  - - ~>
@@ -60,10 +60,10 @@ dependencies:
60
60
  version: '2.0'
61
61
  type: :runtime
62
62
  prerelease: false
63
- version_requirements: *16164520
63
+ version_requirements: *9455100
64
64
  - !ruby/object:Gem::Dependency
65
65
  name: rubyzip
66
- requirement: &16163540 !ruby/object:Gem::Requirement
66
+ requirement: &9454180 !ruby/object:Gem::Requirement
67
67
  none: false
68
68
  requirements:
69
69
  - - ~>
@@ -71,10 +71,10 @@ dependencies:
71
71
  version: 1.1.0
72
72
  type: :runtime
73
73
  prerelease: false
74
- version_requirements: *16163540
74
+ version_requirements: *9454180
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: xdg
77
- requirement: &16162880 !ruby/object:Gem::Requirement
77
+ requirement: &9453500 !ruby/object:Gem::Requirement
78
78
  none: false
79
79
  requirements:
80
80
  - - ~>
@@ -82,10 +82,10 @@ dependencies:
82
82
  version: 2.2.3
83
83
  type: :runtime
84
84
  prerelease: false
85
- version_requirements: *16162880
85
+ version_requirements: *9453500
86
86
  - !ruby/object:Gem::Dependency
87
87
  name: listen
88
- requirement: &16162260 !ruby/object:Gem::Requirement
88
+ requirement: &9452900 !ruby/object:Gem::Requirement
89
89
  none: false
90
90
  requirements:
91
91
  - - ~>
@@ -93,10 +93,10 @@ dependencies:
93
93
  version: 2.8.0
94
94
  type: :runtime
95
95
  prerelease: false
96
- version_requirements: *16162260
96
+ version_requirements: *9452900
97
97
  - !ruby/object:Gem::Dependency
98
98
  name: rufus-scheduler
99
- requirement: &16161600 !ruby/object:Gem::Requirement
99
+ requirement: &9452200 !ruby/object:Gem::Requirement
100
100
  none: false
101
101
  requirements:
102
102
  - - ~>
@@ -104,10 +104,10 @@ dependencies:
104
104
  version: 3.0.6
105
105
  type: :runtime
106
106
  prerelease: false
107
- version_requirements: *16161600
107
+ version_requirements: *9452200
108
108
  - !ruby/object:Gem::Dependency
109
109
  name: fakefs
110
- requirement: &16161020 !ruby/object:Gem::Requirement
110
+ requirement: &9451640 !ruby/object:Gem::Requirement
111
111
  none: false
112
112
  requirements:
113
113
  - - ~>
@@ -115,10 +115,10 @@ dependencies:
115
115
  version: 0.4.2
116
116
  type: :development
117
117
  prerelease: false
118
- version_requirements: *16161020
118
+ version_requirements: *9451640
119
119
  - !ruby/object:Gem::Dependency
120
120
  name: guard
121
- requirement: &16160460 !ruby/object:Gem::Requirement
121
+ requirement: &9451060 !ruby/object:Gem::Requirement
122
122
  none: false
123
123
  requirements:
124
124
  - - ~>
@@ -126,10 +126,10 @@ dependencies:
126
126
  version: 2.10.4
127
127
  type: :development
128
128
  prerelease: false
129
- version_requirements: *16160460
129
+ version_requirements: *9451060
130
130
  - !ruby/object:Gem::Dependency
131
131
  name: guard-rspec
132
- requirement: &16159780 !ruby/object:Gem::Requirement
132
+ requirement: &9450300 !ruby/object:Gem::Requirement
133
133
  none: false
134
134
  requirements:
135
135
  - - ~>
@@ -137,10 +137,10 @@ dependencies:
137
137
  version: 4.5.0
138
138
  type: :development
139
139
  prerelease: false
140
- version_requirements: *16159780
140
+ version_requirements: *9450300
141
141
  - !ruby/object:Gem::Dependency
142
142
  name: rake
143
- requirement: &16159120 !ruby/object:Gem::Requirement
143
+ requirement: &9449720 !ruby/object:Gem::Requirement
144
144
  none: false
145
145
  requirements:
146
146
  - - ~>
@@ -148,10 +148,10 @@ dependencies:
148
148
  version: 10.4.2
149
149
  type: :development
150
150
  prerelease: false
151
- version_requirements: *16159120
151
+ version_requirements: *9449720
152
152
  - !ruby/object:Gem::Dependency
153
153
  name: redcarpet
154
- requirement: &16158460 !ruby/object:Gem::Requirement
154
+ requirement: &9449100 !ruby/object:Gem::Requirement
155
155
  none: false
156
156
  requirements:
157
157
  - - ~>
@@ -159,10 +159,10 @@ dependencies:
159
159
  version: 3.2.2
160
160
  type: :development
161
161
  prerelease: false
162
- version_requirements: *16158460
162
+ version_requirements: *9449100
163
163
  - !ruby/object:Gem::Dependency
164
164
  name: rspec
165
- requirement: &16157880 !ruby/object:Gem::Requirement
165
+ requirement: &9448460 !ruby/object:Gem::Requirement
166
166
  none: false
167
167
  requirements:
168
168
  - - ~>
@@ -170,10 +170,10 @@ dependencies:
170
170
  version: 3.1.0
171
171
  type: :development
172
172
  prerelease: false
173
- version_requirements: *16157880
173
+ version_requirements: *9448460
174
174
  - !ruby/object:Gem::Dependency
175
175
  name: timecop
176
- requirement: &16113640 !ruby/object:Gem::Requirement
176
+ requirement: &9404220 !ruby/object:Gem::Requirement
177
177
  none: false
178
178
  requirements:
179
179
  - - ~>
@@ -181,10 +181,10 @@ dependencies:
181
181
  version: 0.7.0
182
182
  type: :development
183
183
  prerelease: false
184
- version_requirements: *16113640
184
+ version_requirements: *9404220
185
185
  - !ruby/object:Gem::Dependency
186
186
  name: yard
187
- requirement: &16112840 !ruby/object:Gem::Requirement
187
+ requirement: &9403340 !ruby/object:Gem::Requirement
188
188
  none: false
189
189
  requirements:
190
190
  - - ~>
@@ -192,10 +192,10 @@ dependencies:
192
192
  version: 0.8.4
193
193
  type: :development
194
194
  prerelease: false
195
- version_requirements: *16112840
195
+ version_requirements: *9403340
196
196
  - !ruby/object:Gem::Dependency
197
197
  name: rb-inotify
198
- requirement: &16111980 !ruby/object:Gem::Requirement
198
+ requirement: &9402600 !ruby/object:Gem::Requirement
199
199
  none: false
200
200
  requirements:
201
201
  - - ~>
@@ -203,10 +203,10 @@ dependencies:
203
203
  version: 0.9.0
204
204
  type: :development
205
205
  prerelease: false
206
- version_requirements: *16111980
206
+ version_requirements: *9402600
207
207
  - !ruby/object:Gem::Dependency
208
208
  name: rb-fsevent
209
- requirement: &16110740 !ruby/object:Gem::Requirement
209
+ requirement: &9401380 !ruby/object:Gem::Requirement
210
210
  none: false
211
211
  requirements:
212
212
  - - ~>
@@ -214,7 +214,7 @@ dependencies:
214
214
  version: 0.9.2
215
215
  type: :development
216
216
  prerelease: false
217
- version_requirements: *16110740
217
+ version_requirements: *9401380
218
218
  description: ! 'Be lazy: let Maid clean up after you. Think of it as "Hazel for hackers".'
219
219
  email:
220
220
  - hello@benjaminoakes.com