Class: DiscourseTheme::Watcher
- Inherits:
-
Object
- Object
- DiscourseTheme::Watcher
- Defined in:
- lib/discourse_theme/watcher.rb
Instance Method Summary collapse
-
#initialize(dir:, uploader:) ⇒ Watcher
constructor
A new instance of Watcher.
- #watch ⇒ Object
Constructor Details
#initialize(dir:, uploader:) ⇒ Watcher
Returns a new instance of Watcher.
3 4 5 6 |
# File 'lib/discourse_theme/watcher.rb', line 3 def initialize(dir:, uploader:) @dir = dir @uploader = uploader end |
Instance Method Details
#watch ⇒ Object
8 9 10 11 12 13 14 15 16 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 |
# File 'lib/discourse_theme/watcher.rb', line 8 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 Cli.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 Cli.progress "Detected changes in #{count} files, uploading theme" else Cli.progress "Detected changes in #{modified[0].gsub(@dir, '')}, uploading theme" end @uploader.upload_full_theme end Cli.success "Done! Watching for changes..." rescue DiscourseTheme::ThemeError => e Cli.error "#{e.message}" Cli.progress "Watching for changes..." end end listener.start sleep end |