require "thor" require "t/rcfile" require "t/requestable" module T class Set < Thor include T::Requestable check_unknown_options! def initialize(*) @rcfile = T::RCFile.instance super end desc "active SCREEN_NAME [CONSUMER_KEY]", "Set your active account." def active(screen_name, consumer_key = nil) require "t/core_ext/string" screen_name = screen_name.strip_ats @rcfile.path = options["profile"] if options["profile"] consumer_key = @rcfile[screen_name].keys.last if consumer_key.nil? @rcfile.active_profile = {"username" => @rcfile[screen_name][consumer_key]["username"], "consumer_key" => consumer_key} say "Active account has been updated to #{@rcfile.active_profile[0]}." end map %w[account default] => :active desc "bio DESCRIPTION", "Edits your Bio information on your Twitter profile." def bio(description) client.update_profile(description: description) say "@#{@rcfile.active_profile[0]}'s bio has been updated." end desc "language LANGUAGE_NAME", "Selects the language you'd like to receive notifications in." def language(language_name) client.settings(lang: language_name) say "@#{@rcfile.active_profile[0]}'s language has been updated." end desc "location PLACE_NAME", "Updates the location field in your profile." def location(place_name) client.update_profile(location: place_name) say "@#{@rcfile.active_profile[0]}'s location has been updated." end desc "name NAME", "Sets the name field on your Twitter profile." def name(name) client.update_profile(name: name) say "@#{@rcfile.active_profile[0]}'s name has been updated." end desc "profile_background_image FILE", "Sets the background image on your Twitter profile." method_option "tile", aliases: "-t", type: :boolean, desc: "Whether or not to tile the background image." def profile_background_image(file) client.update_profile_background_image(File.new(File.expand_path(file)), tile: options["tile"], skip_status: true) say "@#{@rcfile.active_profile[0]}'s background image has been updated." end map %w[background background_image] => :profile_background_image desc "profile_image FILE", "Sets the image on your Twitter profile." def profile_image(file) client.update_profile_image(File.new(File.expand_path(file))) say "@#{@rcfile.active_profile[0]}'s image has been updated." end map %w[avatar image] => :profile_image desc "website URI", "Sets the website field on your profile." def website(uri) client.update_profile(url: uri) say "@#{@rcfile.active_profile[0]}'s website has been updated." end end end