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 +9 -0
- data/lib/flickrup/ext/replacement_tags.rb +4 -0
- data/lib/flickrup/processor.rb +4 -4
- data/lib/flickrup/slow_listener.rb +33 -25
- metadata +3 -3
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
|
data/lib/flickrup/processor.rb
CHANGED
@@ -39,12 +39,12 @@ class Processor
|
|
39
39
|
sleep 5
|
40
40
|
else
|
41
41
|
tagged.each { |x|
|
42
|
-
logger.debug("Beginning upload for #{
|
42
|
+
logger.debug("Beginning upload for #{x.file}...")
|
43
43
|
x.doUpload(get_preupload_handlers, uploader)
|
44
|
-
logger.debug("Upload complete for #{
|
45
|
-
logger.debug("Beginning archive for #{
|
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 #{
|
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[
|
36
|
-
Listen.to(@config[:watch_dir])
|
37
|
-
|
38
|
-
|
39
|
-
|
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
|
-
|
91
|
+
schedule_internal
|
67
92
|
end
|
68
93
|
end
|
69
94
|
|
70
|
-
def
|
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:
|
4
|
+
hash: 7
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
8
|
- 0
|
9
|
-
-
|
10
|
-
version: 0.0.
|
9
|
+
- 12
|
10
|
+
version: 0.0.12
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Jonathan Gilbert
|