Sha256: 65e54d7495fb213ce28cbfe9203c0a46ba8de2934822dbdd0d486fc0b74a8355

Contents?: true

Size: 1.91 KB

Versions: 1

Compression:

Stored size: 1.91 KB

Contents

require 'action_view'
require 'pager'
require 't/rcfile'
require 't/requestable'
require 'thor'

module T
  class CLI
    class List < Thor
      include ActionView::Helpers::DateHelper
      include Pager
      include T::Requestable

      DEFAULT_NUM_RESULTS = 20
      MAX_SCREEN_NAME_SIZE = 20

      check_unknown_options!

      def initialize(*)
        super
        @rcfile = RCFile.instance
      end

      desc "create LIST_NAME [DESCRIPTION]", "Create a new list."
      method_option :private, :aliases => "-p", :type => :boolean
      def create(list_name, description="")
        defaults = description.blank? ? {} : {:description => description}
        defaults.merge!(:mode => 'private') if options['private']
        client.list_create(list_name, defaults)
        say "@#{@rcfile.default_profile[0]} created the list \"#{list_name}\"."
      end

      desc "timeline LIST_NAME", "Show tweet timeline for members of the specified list."
      method_option :number, :aliases => "-n", :type => :numeric, :default => DEFAULT_NUM_RESULTS
      method_option :reverse, :aliases => "-r", :type => :boolean, :default => false
      def timeline(list_name)
        defaults = {:include_entities => false}
        defaults.merge!(:per_page => options['number']) if options['number']
        timeline = client.list_timeline(list_name, defaults)
        timeline.reverse! if options['reverse']
        page unless T.env.test?
        timeline.each do |status|
          say "#{status.user.screen_name.rjust(MAX_SCREEN_NAME_SIZE)}: #{status.text} (#{time_ago_in_words(status.created_at)} ago)"
        end
      end
      map %w(tl) => :timeline

      desc "add SUBCOMMAND ...ARGS", "Add users to a list."
      require 't/cli/list/add'
      subcommand 'add', CLI::List::Add

      desc "remove SUBCOMMAND ...ARGS", "Remove users from a list."
      require 't/cli/list/remove'
      subcommand 'remove', CLI::List::Remove

    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
t-0.4.0 lib/t/cli/list.rb