class SidekiqUniqueJobs::Cli


@author Mikael Henriksson <mikael@mhenrixon.com>
Command line interface for unique jobs

def self.banner(command, _namespace = nil, _subcommand = false) # rubocop:disable Style/OptionalBooleanParameter

rubocop:disable Style/OptionalBooleanParameter
rubocop:disable Style/OptionalBooleanParameter
:nodoc:
def self.banner(command, _namespace = nil, _subcommand = false) # rubocop:disable Style/OptionalBooleanParameter
  "jobs #{@package_name} #{command.usage}" # rubocop:disable ThreadSafety/InstanceVariableInClassMethod
end

def console

:nodoc:
def console
  say "Use `list '*', 1000 to display the first 1000 unique digests matching '*'"
  say "Use `del '*', 1000, true (default) to see how many digests would be deleted for the pattern '*'"
  say "Use `del '*', 1000, false to delete the first 1000 digests matching '*'"
  # Object.include SidekiqUniqueJobs::Api
  console_class.start
end

def console_class

:nodoc:
def console_class
  require "pry"
  Pry
rescue NameError, LoadError
  require "irb"
  IRB
end

def del(pattern)

:nodoc:
def del(pattern)
  max_count = options[:count]
  if options[:dry_run]
    result = digests.entries(pattern: pattern, count: max_count)
    say "Would delete #{result.size} digests matching '#{pattern}'"
  else
    deleted_count = digests.delete_by_pattern(pattern, count: max_count)
    say "Deleted #{deleted_count} digests matching '#{pattern}'"
  end
end

def digests

:nodoc:
def digests
  @digests ||= SidekiqUniqueJobs::Digests.new
end

def list(pattern = "*")

:nodoc:
def list(pattern = "*")
  entries = digests.entries(pattern: pattern, count: options[:count])
  say "Found #{entries.size} digests matching '#{pattern}':"
  print_in_columns(entries.sort) if entries.any?
end