flickrup 0.0.11 → 0.0.12

Sign up to get free protection for your applications and to get access to all the features.
data/lib/flickrup.rb CHANGED
@@ -41,6 +41,15 @@ module Flickrup
41
41
  else
42
42
  SlowListener.new(config).run
43
43
  end
44
+
45
+ # suspend thread so we don't exit immediately
46
+ @mutex = Mutex.new
47
+ @running = ConditionVariable.new
48
+
49
+ @mutex.synchronize do
50
+ @running.wait(@mutex)
51
+ end
52
+
44
53
  end
45
54
  end
46
55
  end
@@ -6,6 +6,7 @@ class ReplacementTags
6
6
  def preupload(image, meta, config)
7
7
 
8
8
  replacements = @config[:tag_replacements]
9
+ new_config = config
9
10
 
10
11
  if replacements != nil
11
12
  replacements.each do |tag_name, tag_value_replacements|
@@ -14,10 +15,13 @@ class ReplacementTags
14
15
  tag_value_replacements.each do |key, value|
15
16
  if existing == key
16
17
  meta[tag_name] = value
18
+ new_config = new_config.merge({tag_name => value})
17
19
  break
18
20
  end
19
21
  end
20
22
  end
21
23
  end
24
+
25
+ new_config
22
26
  end
23
27
  end
@@ -39,12 +39,12 @@ class Processor
39
39
  sleep 5
40
40
  else
41
41
  tagged.each { |x|
42
- logger.debug("Beginning upload for #{tagged.file}...")
42
+ logger.debug("Beginning upload for #{x.file}...")
43
43
  x.doUpload(get_preupload_handlers, uploader)
44
- logger.debug("Upload complete for #{tagged.file}")
45
- logger.debug("Beginning archive for #{tagged.file}...")
44
+ logger.debug("Upload complete for #{x.file}")
45
+ logger.debug("Beginning archive for #{x.file}...")
46
46
  x.archive(@config[:archive_dir])
47
- logger.debug("Processing complete for #{tagged.file}")
47
+ logger.debug("Processing complete for #{x.file}")
48
48
  }
49
49
  end
50
50
 
@@ -1,5 +1,6 @@
1
1
  require 'rubygems'
2
2
  require 'atomic'
3
+ require 'fileutils'
3
4
  require 'rufus/scheduler'
4
5
  require "flickrup/logging"
5
6
 
@@ -32,11 +33,35 @@ class SlowListener
32
33
  end
33
34
 
34
35
  def run
35
- logger.debug("Watching #{@config['watch_dir']}...")
36
- Listen.to(@config[:watch_dir]) do |modified, added, _|
37
- unless modified.empty? && added.empty?
38
- on_change
39
- end
36
+ logger.debug("Watching #{@config[:watch_dir]}...")
37
+ @listener = Listen.to(@config[:watch_dir])
38
+ @listener.change(&method(:on_change))
39
+ @listener.start(false)
40
+
41
+ logger.debug("Triggering initial run")
42
+ schedule
43
+ end
44
+
45
+ def schedule
46
+ previous_state = @processing.swap(SCHEDULED)
47
+
48
+ case previous_state
49
+ when SCHEDULED
50
+ #ignore, already scheduled
51
+ logger.debug("Already scheduled")
52
+ when PROCESSING
53
+ #ignore, processing thread will reschedule
54
+ logger.debug("Scheduling queued")
55
+ when IDLE
56
+ schedule_internal
57
+ end
58
+ end
59
+
60
+ private
61
+ def on_change(modified, added, removed)
62
+ unless modified.empty? && added.empty?
63
+ logger.debug("Change detected")
64
+ schedule
40
65
  end
41
66
  end
42
67
 
@@ -59,32 +84,15 @@ class SlowListener
59
84
  @processor.run(old)
60
85
  end
61
86
 
62
- @processing.compare_and_swap(PROCESSING,IDLE)
87
+ @processing.compare_and_swap(PROCESSING, IDLE)
63
88
 
64
89
  if @processing.get == SCHEDULED
65
90
  logger.debug("Rescheduling...")
66
- schedule
91
+ schedule_internal
67
92
  end
68
93
  end
69
94
 
70
- def on_change
71
- logger.debug("Change detected")
72
-
73
- previous_state = @processing.swap(SCHEDULED)
74
-
75
- case previous_state
76
- when SCHEDULED
77
- #ignore, already scheduled
78
- logger.debug("Already scheduled")
79
- when PROCESSING
80
- #ignore, processing thread will reschedule
81
- logger.debug("Scheduling queued")
82
- when IDLE
83
- schedule
84
- end
85
- end
86
-
87
- def schedule
95
+ def schedule_internal
88
96
  if @scheduler.jobs.empty?
89
97
  logger.debug("Scheduling processing for #@wait sec")
90
98
  @scheduler.in @wait do
metadata CHANGED
@@ -1,13 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: flickrup
3
3
  version: !ruby/object:Gem::Version
4
- hash: 9
4
+ hash: 7
5
5
  prerelease:
6
6
  segments:
7
7
  - 0
8
8
  - 0
9
- - 11
10
- version: 0.0.11
9
+ - 12
10
+ version: 0.0.12
11
11
  platform: ruby
12
12
  authors:
13
13
  - Jonathan Gilbert