class Feed2Email::Cli
Public Instance Methods
add(uri)
click to toggle source
# File lib/feed2email/cli.rb, line 12 def add(uri) uri = autodiscover_feeds(uri) if feed = Feed[uri: uri] abort "Feed already exists: #{feed}" end feed = Feed.new(uri: uri) if feed.save(raise_on_failure: false) puts "Added feed: #{feed}" else abort 'Failed to add feed' end end
autodiscover_feeds(uri)
click to toggle source
# File lib/feed2email/cli.rb, line 150 def autodiscover_feeds(uri) discoverer = FeedAutodiscoverer.new(uri) # Exclude already subscribed feeds from results subscribed_feed_uris = Feed.select_map(:uri) discovered_feeds = discoverer.feeds.reject {|feed| subscribed_feed_uris.include?(feed[:uri]) } if discovered_feeds.empty? if discoverer.content_type == 'text/html' puts 'Could not find any new feeds' exit end return uri end justify = discovered_feeds.size.to_s.size discovered_feeds.each_with_index do |feed, i| puts '%{index}: %{uri} %{title}(%{content_type})' % { index: i.to_s.rjust(justify), uri: feed[:uri], title: feed[:title] ? "\"#{feed[:title]}\" " : '', content_type: feed[:content_type] } end begin response = ask( 'Please enter a feed to subscribe to (or Ctrl-C to abort):', limited_to: (0...discovered_feeds.size).to_a.map(&:to_s) ) rescue Interrupt # Ctrl-C puts exit end unless response.numeric? && (0...discovered_feeds.size).include?(response.to_i) abort 'Invalid index' end feed = discovered_feeds[response.to_i] abort 'Invalid index' unless feed && feed[:uri] feed[:uri] end
backend()
click to toggle source
# File lib/feed2email/cli.rb, line 29 def backend exec('sqlite3', Feed2Email.database_path) end
config()
click to toggle source
# File lib/feed2email/cli.rb, line 34 def config if ENV['EDITOR'] exec(ENV['EDITOR'], Feed2Email.config_path) else abort 'EDITOR environmental variable not set' end end
export(path)
click to toggle source
# File lib/feed2email/cli.rb, line 43 def export(path) if Feed.empty? abort 'No feeds to export' end unless File.exist?(path) puts 'This may take a while. Please wait...' if n = OPMLExporter.export(path) puts "Exported #{'feed subscription'.pluralize(n)} to #{path}" else abort 'Failed to export feed subscriptions' end else abort 'File already exists' end end
import(path)
click to toggle source
# File lib/feed2email/cli.rb, line 64 def import(path) if File.exist?(path) puts 'Importing...' if n = OPMLImporter.import(path, options[:remove]) if n > 0 puts "Imported #{'feed subscription'.pluralize(n)} from #{path}" end else abort 'Failed to import feed subscriptions' end else abort 'File does not exist' end end
list()
click to toggle source
# File lib/feed2email/cli.rb, line 81 def list if Feed.any? puts Feed.by_smallest_id.to_a print "\nSubscribed to #{'feed'.pluralize(Feed.count)}" if Feed.where(enabled: false).count > 0 print " (#{Feed.enabled.count} enabled)" end puts else puts 'No feeds' end end
process()
click to toggle source
# File lib/feed2email/cli.rb, line 97 def process Feed.enabled.by_smallest_id.each(&:process) end
remove(id)
click to toggle source
# File lib/feed2email/cli.rb, line 102 def remove(id) feed = Feed[id] if feed puts "Remove feed: #{feed}" if ask('Are you sure?', limited_to: %w{y n}) == 'y' if feed.delete puts 'Removed' else abort 'Failed to remove feed' end else puts 'Not removed' end else abort "Feed not found. Is #{id} a valid id?" end end
toggle(id)
click to toggle source
# File lib/feed2email/cli.rb, line 123 def toggle(id) feed = Feed[id] if feed && feed.toggle puts "Toggled feed: #{feed}" else abort "Failed to toggle feed. Is #{id} a valid id?" end end
uncache(id)
click to toggle source
# File lib/feed2email/cli.rb, line 134 def uncache(id) feed = Feed[id] if feed && feed.uncache puts "Uncached feed: #{feed}" else abort "Failed to uncache feed. Is #{id} a valid id?" end end
version()
click to toggle source
# File lib/feed2email/cli.rb, line 145 def version puts "feed2email #{Feed2Email::VERSION}" end