flickrup 0.0.11 → 0.0.12

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/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