17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
# File 'lib/discourse_theme/watcher.rb', line 17
def watch
listener =
Listen.to(@dir) do |modified, added, removed|
begin
if modified.length == 1 && added.length == 0 && removed.length == 0 &&
(resolved = resolve_file(modified[0]))
target, name, type_id = resolved
UI.progress "Fast updating #{target}.scss"
@uploader.upload_theme_field(
target: target,
name: name,
value: File.read(modified[0]),
type_id: type_id,
)
else
count = modified.length + added.length + removed.length
if count > 1
UI.progress "Detected changes in #{count} files, uploading theme"
else
filename = modified[0] || added[0] || removed[0]
UI.progress "Detected changes in #{filename.gsub(@dir, "")}, uploading theme"
end
@uploader.upload_full_theme(skip_migrations: true)
end
UI.success "Done! Watching for changes..."
rescue DiscourseTheme::ThemeError => e
UI.error "#{e.message}"
UI.progress "Watching for changes..."
end
end
listener.start
sleep if !self.class.return_immediately?
end
|