Sha256: 1a87c4a7f4129ebaec83398e61971b41578e0db417467cd8b99423d9f7d8c38e

Contents?: true

Size: 1.98 KB

Versions: 6

Compression:

Stored size: 1.98 KB

Contents

require "thor"

module GitTrend
  class CLI < Thor
    map "-v"              => :version,
        "--version"       => :version

    default_command :list
    class_option :verbose, type: :boolean

    class << self
      def exit_on_failure?
        true
      end
    end

    desc :version, "show version"
    def version
      say "git-trend version: #{VERSION}", :green
    end

    desc :list, "\033[32m(DEFAULT COMMAND)\e[0m List Trending repository on github [-l, -s, -d]"
    option :language,    aliases: "-l", required: false, desc: "Specify a language"
    option :since,       aliases: "-s", required: false, desc: "Enable: [d, day, daily, w, week, weekly, m, month, monthly]"
    option :description, aliases: "-d", required: false, default: true, type: :boolean, desc: "\033[32m(DEFAULT OPTION)\e[0m Dislpay descriptions"
    option :format,      aliases: "-f", required: false, default: "text", desc: "Choose a formatter as text or json. Enable: [t, text, j, json]"
    option :number,      aliases: "-n", required: false, type: :numeric, desc: "Number of lines"
    option :help,        aliases: "-h", required: false, type: :boolean
    def list
      help(:list) && return if options[:help]
      scraper = Scraper.new
      projects = scraper.get(options[:language], options[:since], options[:number])
      formatter = Formatter.new(options[:format])
      formatter.print(projects, enable_description: !!options[:description])
    rescue => e
      say "An unexpected #{e.class} has occurred.", :red
      say e.message unless e.class.to_s == e.message

      puts exception.backtrace if options[:verbose]
    end

    desc :languages, "Show selectable languages"
    option :format,      aliases: "-f", required: false, default: "text", desc: "Choose a formatter as text or json. Enable: [t, text, j, json]"
    def languages
      scraper = Scraper.new
      languages = scraper.languages
      formatter = Formatter.new(options[:format])
      formatter.print_languages(languages)
    end
  end
end

Version data entries

6 entries across 6 versions & 1 rubygems

Version Path
git-trend-1.3.0 lib/git_trend/cli.rb
git-trend-1.2.9 lib/git_trend/cli.rb
git-trend-1.2.8 lib/git_trend/cli.rb
git-trend-1.2.7 lib/git_trend/cli.rb
git-trend-1.2.6 lib/git_trend/cli.rb
git-trend-1.2.5 lib/git_trend/cli.rb