Sha256: a6e10ebef76ab9c5b64e41f2d1dff47c6c2159f04be395de08fe64f57c0133b0

Contents?: true

Size: 1.43 KB

Versions: 13

Compression:

Stored size: 1.43 KB

Contents

require 'logger'
require 'active_support/all'

module GitlabJanitor
  class Util

    TERM_SIGNALS = %w[INT TERM].freeze

    class << self

      def exiting?
        $exiting
      end

      def exit!
        $exiting = true
      end

      def logger
        $logger ||= ActiveSupport::TaggedLogging.new(Logger.new(STDOUT)).tap do |logger|
          logger.level = ENV.fetch('LOG_LEVEL', Logger::INFO)
          formatter = Logger::Formatter.new
          formatter.extend ActiveSupport::TaggedLogging::Formatter
          logger.formatter = formatter
        end
      end

      def setup
        STDOUT.sync = true
        STDERR.sync = true

        initialize_signal_handlers

        String.class_eval do
          def to_bool
            return true   if self == true   || self =~ (/(true|t|yes|y|1)$/i)
            return false  if self == false  || self.blank? || self =~ (/(false|f|no|n|0)$/i)

            raise ArgumentError.new("invalid value for Boolean: \"#{self}\"")
          end
        end
      end

      def initialize_signal_handlers
        TERM_SIGNALS.each do |sig|
          trap(sig) do |*_args|
            TERM_SIGNALS.each do |s|
              trap(s) do |*_args|
                warn 'Forcing exit!'
                Kernel.exit!(1)
              end
            end

            STDOUT.puts "Caught signal[#{sig}]: exiting...."
            GitlabJanitor::Util.exit!
          end
        end
      end

    end

  end
end

Version data entries

13 entries across 13 versions & 1 rubygems

Version Path
gitlab-janitor-1.0.5.229406 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.4.134297 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.4.134295 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.4.94895 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.4.94868 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.4.94864 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.3.92955 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.2.92954 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.2.92951 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.2.92948 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.2.92942 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.2.92940 lib/gitlab_janitor/utils.rb
gitlab-janitor-1.0.2.92939 lib/gitlab_janitor/utils.rb