Sha256: 3cc3f326edbb0b8eebe3b2b15cf87d40e6b58b73ee8db2428954ad43e44ee43a

Contents?: true

Size: 1.34 KB

Versions: 1

Compression:

Stored size: 1.34 KB

Contents

# -*- coding: utf-8 -*-
module GrooveDl
  # CLI module
  module CLI
    ##
    # Hash containing the default Slop options.
    #
    # @return [Hash]
    #
    SLOP_OPTIONS = {
      strict: true,
      help: true,
      banner: 'Usage: groove-dl [COMMAND] [OPTIONS]'
    }

    ##
    # @return [Slop]
    #
    def self.options
      @options ||= default_options
    end

    ##
    # @return [Slop]
    #
    def self.default_options
      Slop.new(SLOP_OPTIONS.dup) do
        separator "\nOptions:\n"

        on :v, :version, 'Shows the current version' do
          puts CLI.version_information
        end

        on :p=, :playlist=, 'Playlist', as: Integer
        on :s=, :song=, 'Song', as: Integer
        on :o=, :output=, 'Output directory', as: String

        run do |opts|
          next if opts[:v]

          client = Grooveshark::Client.new
          d = Downloader.new(client, opts)
          if opts[:p]
            GrooveDl.configuration.logger
              .info("Download files into #{d.output_directory}")
            d.playlist(opts[:p])
          end

          d.song(opts[:s]) if opts[:s]
        end
      end
    end

    ##
    # Returns a String containing some platform/version related information.
    #
    # @return [String]
    #
    def self.version_information
      "Groove-dl v#{VERSION} on #{RUBY_DESCRIPTION}"
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
groove-dl-0.4.0 lib/groove-dl/cli.rb