Sha256: f113e8078e8ba784ddf3e6838e72cf50efd962ffe31848da8216a8f39c80834b

Contents?: true

Size: 1.17 KB

Versions: 8

Compression:

Stored size: 1.17 KB

Contents

# frozen_string_literal: true

require 'fileutils'

module Fablicop
  # CLI handles command-line inputs.
  class CLI
    def self.start(args)
      action_name = retrieve_command_name(args)
      unless action_name
        print_help
        exit
      end

      instance = self.new
      if instance.public_methods(false).include?(action_name.to_sym)
        instance.__send__(action_name, args)
        exit
      end

      puts "Could not find command #{action_name}."
      print_help
      exit(1)
    rescue StandardError => e
      puts e.message
      exit(1)
    end

    def self.retrieve_command_name(args)
      meth = args.first.to_s unless args.empty?
      args.shift if meth && (meth !~ /^-/)
    end

    def self.print_help
      puts 'fablicop commands:'
      puts '  init - Setup .rubocop.yml'
    end

    CONFIG_FILE_NAME = '.rubocop.yml'
    def init(args)
      raise 'usage: fablicop init' unless args.empty?

      template_path = File.expand_path('../../templates', __dir__)
      puts "#{File.exist?(CONFIG_FILE_NAME) ? 'overwrite' : 'create'} #{CONFIG_FILE_NAME}"
      FileUtils.copy_file(File.join(template_path, CONFIG_FILE_NAME), CONFIG_FILE_NAME)
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
fablicop-1.10.3 lib/fablicop/cli.rb
fablicop-1.10.2 lib/fablicop/cli.rb
fablicop-1.10.1 lib/fablicop/cli.rb
fablicop-1.10.0 lib/fablicop/cli.rb
fablicop-1.9.0 lib/fablicop/cli.rb
fablicop-1.8.0 lib/fablicop/cli.rb
fablicop-1.7.0 lib/fablicop/cli.rb
fablicop-1.6.0 lib/fablicop/cli.rb