Template of a custom feed generator service for the Bluesky network in Ruby
1#!/usr/bin/env ruby
2
3require 'bundler/setup'
4require_relative 'app/firehose_stream'
5
6ActiveRecord::Base.logger = nil
7
8def print_help
9 puts "Usage: #{$0} [options...]"
10 puts "Options:"
11 puts
12 puts " * Showing progress: [default: show in development]"
13 puts " -p = show progress dots for each received message"
14 puts " -np = don't show progress dots"
15 puts
16 puts " * Logging status changes: [default: log in any mode]"
17 puts " -ns = don't log status changes"
18 puts
19 puts " * Logging post text: [default: -lm in development, -nl in production]"
20 puts " -lm = log text of matching posts"
21 puts " -la = log text of every post"
22 puts " -nl = don't log posts"
23 puts
24 puts " * Saving posts to db: [default: -da in development, -dm in production]"
25 puts " -da = save all posts to database"
26 puts " -dm = save only matching posts to database"
27 puts " -nd = don't save any posts"
28end
29
30firehose = FirehoseStream.new
31
32ARGV.each do |arg|
33 case arg
34 when '-p'
35 firehose.show_progress = true
36 when '-np'
37 firehose.show_progress = false
38 when '-ns'
39 firehose.log_status = false
40 when '-lm'
41 firehose.log_posts = :matching
42 when '-la'
43 firehose.log_posts = :all
44 when '-nl'
45 firehose.log_posts = false
46 when '-dm'
47 firehose.save_posts = :matching
48 when '-da'
49 firehose.save_posts = :all
50 when '-nd'
51 firehose.save_posts = false
52 when '-h', '--help'
53 print_help
54 exit 0
55 else
56 puts "Unrecognized option: #{arg}"
57 print_help
58 exit 1
59 end
60end
61
62firehose.start
63sleep