Class: Polyn::Cli::ConsumerGenerator
- Inherits:
-
Thor::Group
- Object
- Thor::Group
- Polyn::Cli::ConsumerGenerator
- Includes:
- Thor::Actions
- Defined in:
- lib/polyn/cli/consumer_generator.rb
Overview
Generates a new NATS Consumer configuration for a stream
Instance Method Summary collapse
- #check_names ⇒ Object
- #check_schema ⇒ Object
- #check_stream_existance ⇒ Object
- #consumer_name ⇒ Object
- #create ⇒ Object
- #file_name ⇒ Object
- #file_path ⇒ Object
- #format_stream_name ⇒ Object
Instance Method Details
#check_names ⇒ Object
20 21 22 23 24 |
# File 'lib/polyn/cli/consumer_generator.rb', line 20 def check_names Polyn::Cli::Naming.validate_stream_name!(stream_name) Polyn::Cli::Naming.validate_destination_name!(destination_name) Polyn::Cli::Naming.() end |
#check_schema ⇒ Object
34 35 36 37 38 39 |
# File 'lib/polyn/cli/consumer_generator.rb', line 34 def check_schema return if File.exist?(File.join(.dir, "schemas", "#{message_name}.json")) raise Polyn::Cli::Error, "You must first create a schema with `polyn gen:schema #{message_name}`" end |
#check_stream_existance ⇒ Object
26 27 28 29 30 31 32 |
# File 'lib/polyn/cli/consumer_generator.rb', line 26 def check_stream_existance return if File.exist?(file_path) raise Polyn::Cli::Error, "You must first create a stream configuration with "\ "`polyn gen:stream #{format_stream_name}`" end |
#consumer_name ⇒ Object
45 46 47 48 49 50 |
# File 'lib/polyn/cli/consumer_generator.rb', line 45 def consumer_name dest = Polyn::Cli::Naming.colon_to_underscore(destination_name) dest = Polyn::Cli::Naming.dot_to_underscore(dest) name = Polyn::Cli::Naming.dot_to_underscore() "#{dest}_#{name}" end |
#create ⇒ Object
60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
# File 'lib/polyn/cli/consumer_generator.rb', line 60 def create say "Creating new consumer config #{consumer_name} for stream #{stream_name}" consumer_config = "\n resource \"jetstream_consumer\" \"\#{consumer_name}\" {\n stream_id = jetstream_stream.\#{stream_name}.id\n durable_name = \"\#{consumer_name}\"\n deliver_all = true\n filter_subject = \"\#{message_name}\"\n sample_freq = 100\n }\n TF\n append_to_file(file_path, consumer_config)\nend\n" |
#file_name ⇒ Object
52 53 54 |
# File 'lib/polyn/cli/consumer_generator.rb', line 52 def file_name @file_name ||= "tf/#{stream_name.downcase}.tf" end |
#file_path ⇒ Object
56 57 58 |
# File 'lib/polyn/cli/consumer_generator.rb', line 56 def file_path File.join(.dir, file_name) end |
#format_stream_name ⇒ Object
41 42 43 |
# File 'lib/polyn/cli/consumer_generator.rb', line 41 def format_stream_name @stream_name = stream_name.upcase end |