module Aptly::Watcher
Constants
- VERSION
Public Class Methods
log(level, message)
click to toggle source
# File lib/aptly/watcher.rb, line 44 def log(level, message) message.chomp.lines.each_with_index do |line, index| # multi line logging line.chomp! line = " #{line}" unless index.zero? redis_log(level, line) if @config[:redis_log] != false logger.send(level.to_sym, line) if @config[:log] != false end end
logger()
click to toggle source
# File lib/aptly/watcher.rb, line 18 def logger return @logger if @logger target = case @config[:log] when '-' STDOUT when false '/dev/null' else @config[:log] end @logger ||= Logger.new target, 0, 1024000 end
redis()
click to toggle source
# File lib/aptly/watcher.rb, line 13 def redis return nil if @config[:redis_log] == false @redis ||= Redis.new end
redis_log(level, message)
click to toggle source
# File lib/aptly/watcher.rb, line 53 def redis_log(level, message) return false if redis.nil? timestamp = Time.now.strftime('%Y-%m-%d %H:%M:%S') msg = "#{level[0].upcase}, [#{timestamp}] #{level.upcase} -- #{message}" redis.lpush(@config[:redis_log], msg) redis.ltrim(@config[:redis_log], 0, 99) end
run(config)
click to toggle source
run the watcher with the given config
# File lib/aptly/watcher.rb, line 62 def run(config) notifier = INotify::Notifier.new aptly = Aptly::Watcher::AptlyShim.new(config[:distrib], config[:repos], config[:conf]) dispatcher = Aptly::Watcher::EventDispatcher.new(aptly) # setup a notifier for each repo config[:repos].each do |repo| repo_dir = "#{config[:incoming_dir]}/#{@config[:distrib]}/#{repo}" # watch the directory for new files notifier.watch(repo_dir, :close_write) do |event| begin dispatcher.process(repo_dir, event, repo) log :info, "Successfully added #{event.name} to #{config[:distrib]}/#{repo}" system "chown #{config[:user]}:#{config[:group]} #{config[:aptly]['rootDir']} -R" rescue StandardError => e e.message.lines.each {|line| log :error, line.chomp } end end end # start the notifier notifier.run end
setup(config)
click to toggle source
sets up the incoming directories
# File lib/aptly/watcher.rb, line 34 def setup(config) @config = config @config[:repos].each do |repo| repo_dir = "#{@config[:incoming_dir]}/#{@config[:distrib]}/#{repo}" # Create the directory if it's not already there FileUtils.mkdir_p(repo_dir) unless File.directory?(repo_dir) end end