Sha256: 6449be97d209296b0a886a19883561a21913e31218a053b88b2dfee50cf2079e

Contents?: true

Size: 1.39 KB

Versions: 4

Compression:

Stored size: 1.39 KB

Contents

# frozen_string_literal: true

require 'optparse'
require_relative '../leftovers'
require_relative 'version'

module Leftovers
  class CLI
    attr_reader :argv, :stdout, :stderr

    def initialize(argv: [], stdout: StringIO.new, stderr: StringIO.new)
      @argv = argv
      @stdout = stdout
      @stderr = stderr

      parse_options

      exit Leftovers.run(stdout: stdout, stderr: stderr)
    end

    def parse_options # rubocop:disable Metrics/MethodLength, Metrics/AbcSize
      opts = OptionParser.new
      Leftovers.parallel = true
      Leftovers.progress = true

      opts.banner = 'Usage: leftovers [options]'
      opts.on('-q', '--quiet', 'Silences output') { Leftovers.quiet = true }
      opts.on('--[no-]parallel', 'Run in parallel or not, default --parallel') do |p|
        Leftovers.parallel = p
      end
      opts.on('--[no-]progress', 'Show progress counts or not, default --progress') do |p|
        Leftovers.progress = p
      end
      opts.on('-v', '--version', 'Returns the current version') do
        stdout.puts(Leftovers::Version)
        exit
      end
      opts.on('--dry-run', 'Output files that will be looked at') do
        stdout.puts(Leftovers::FileList.new.to_a.map(&:relative_path).join("\n"))
        exit
      end
      opts.on('-h', '--help', 'Shows this message') do
        stdout.puts(opts.help)
        exit
      end

      opts.parse(argv)
    end
  end
end

Version data entries

4 entries across 4 versions & 1 rubygems

Version Path
leftovers-0.2.2 lib/leftovers/cli.rb
leftovers-0.2.1 lib/leftovers/cli.rb
leftovers-0.2.0 lib/leftovers/cli.rb
leftovers-0.1.0 lib/leftovers/cli.rb