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

Sign up to get free protection for your applications and to get access to all the features.
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