lib/rubocop/server.rb
# frozen_string_literal: true
require_relative 'platform'
#
# This code is based on https://github.com/fohte/rubocop-daemon.
#
# Copyright (c) 2018 Hayato Kawai
#
# The MIT License (MIT)
#
# https://github.com/fohte/rubocop-daemon/blob/master/LICENSE.txt
#
module RuboCop
# The bootstrap module for server.
# @api private
module Server
TIMEOUT = 20
autoload :CLI, 'rubocop/server/cli'
autoload :Cache, 'rubocop/server/cache'
autoload :ClientCommand, 'rubocop/server/client_command'
autoload :Helper, 'rubocop/server/helper'
autoload :Core, 'rubocop/server/core'
autoload :ServerCommand, 'rubocop/server/server_command'
autoload :SocketReader, 'rubocop/server/socket_reader'
class << self
def support_server?
RUBY_ENGINE == 'ruby' && !RuboCop::Platform.windows?
end
def running?
return false unless support_server? # Never running.
Cache.pid_running?
end
def wait_for_running_status!(expected)
start_time = Time.now
while Server.running? != expected
sleep 0.1
next unless Time.now - start_time > TIMEOUT
warn "running? was not #{expected} after #{TIMEOUT} seconds!"
exit 1
end
end
end
end
end
require_relative 'server/errors'