lib/fusuma.rb in fusuma-1.4.1 vs lib/fusuma.rb in fusuma-1.5.0
- old
+ new
@@ -31,38 +31,37 @@
load_custom_config(option[:config_path])
Plugin::Manager.require_plugins_from_relative
Plugin::Manager.require_plugins_from_config
+ MultiLogger.info '---------------------------------------------'
print_version
+ MultiLogger.info '---------------------------------------------'
print_enabled_plugins
+ MultiLogger.info '---------------------------------------------'
Kernel.exit(0) if option[:version]
print_device_list if option[:list]
# TODO: remove keep_device_from_option from command line options
Plugin::Filters::LibinputDeviceFilter::KeepDevice.from_option = option[:device]
Process.daemon if option[:daemon]
end
def print_version
- MultiLogger.info '---------------------------------------------'
MultiLogger.info "Fusuma: #{Fusuma::VERSION}"
MultiLogger.info "libinput: #{Plugin::Inputs::LibinputCommandInput.new.version}"
MultiLogger.info "OS: #{`uname -rsv`}".strip
MultiLogger.info "Distribution: #{`cat /etc/issue`}".strip
MultiLogger.info "Desktop session: #{`echo $DESKTOP_SESSION $XDG_SESSION_TYPE`}".strip
- MultiLogger.info '---------------------------------------------'
end
def print_enabled_plugins
- MultiLogger.info '---------------------------------------------'
MultiLogger.info 'Enabled Plugins: '
Plugin::Manager.plugins
.reject { |k, _v| k.to_s =~ /Base/ }
.map { |_base, plugins| plugins.map { |plugin| " #{plugin}" } }
.flatten.sort.each { |name| MultiLogger.info(name) }
- MultiLogger.info '---------------------------------------------'
end
def print_device_list
puts Device.available.map(&:name)
exit(0)
@@ -85,10 +84,11 @@
end
def run
# TODO: run with multi thread
@inputs.first.run do |event|
+ clear_expired
filtered = filter(event)
parsed = parse(filtered)
buffered = buffer(parsed)
detected = detect(buffered)
merged = merge(detected)
@@ -109,15 +109,13 @@
end
# @param buffers [Array<Buffer>]
# @return [Array<Event>]
def detect(buffers)
- @detectors.reduce([]) do |detected, detector|
+ @detectors.each_with_object([]) do |detector, detected|
if (event = detector.detect(buffers))
detected << event
- else
- detected
end
end
end
# @param events [Array<Event>]
@@ -137,8 +135,12 @@
executor = @executors.find do |e|
e.executable?(event)
end
executor&.execute(event)
+ end
+
+ def clear_expired
+ @buffers.each(&:clear_expired)
end
end
end