class Tagrity::Command::Start
Public Class Methods
call(fg, fresh)
click to toggle source
# File lib/tagrity/commands/start.rb, line 14 def call(fg, fresh) dir = Dir.pwd assert_not_running(dir) Process.daemon({nochdir: true}) unless fg logger.fg = fg tag_generator = Provider.provide(:tag_generator) PidFile.write(PidFile.new(dir, Process.pid)) logger.info("Watching #{dir} with process pid #{Process.pid}") if fresh logger.info("Generating tags fresh for #{dir}") tag_generator.generate_all end listener = Listen.to( dir, relative: true, ) do |modified, added, removed| unless modified.empty? logger.info("modified absolute path: #{modified}") tag_generator.generate(modified, true) end unless added.empty? logger.info("added absolute path: #{added}") tag_generator.generate(added, true) end unless removed.empty? logger.info("removed absolute path: #{removed}") tag_generator.delete_files_tags(removed) end end listener.start sleep rescue ErrorProcessAlreadyRunning => e puts ::CLI::UI.fmt "{{red:#{e.message}}}" logger.error(e.message) rescue Interrupt => e logger.info("Process interrupted. Killing #{Process.pid}") PidFile.delete(dir) end
Private Class Methods
assert_not_running(dir)
click to toggle source
# File lib/tagrity/commands/start.rb, line 60 def assert_not_running(dir) running_processes = PidFile.alive_pid_files(dir: dir) unless running_processes.empty? pids = running_processes.map { |pid_file| pid_file.pid } raise ErrorProcessAlreadyRunning, "Error: tagrity is already watching #{dir} with process #{pids}" end end
logger()
click to toggle source
# File lib/tagrity/commands/start.rb, line 68 def logger @logger ||= Provider.provide(:tlogger) end