@@ -94,6 +94,13 @@ def parse_args():
9494 default = None ,
9595 dest = "enable_rmq" ,
9696 )
97+ parser .add_argument (
98+ "--kafka" ,
99+ help = "Add Kafka support" ,
100+ action = "store_true" ,
101+ default = None ,
102+ dest = "enable_kafka" ,
103+ )
97104 parser .add_argument (
98105 "--migrations" ,
99106 help = "Add migrations support" ,
@@ -184,62 +191,31 @@ def parse_args():
184191
185192
186193def ask_features (current_context : BuilderContext ) -> BuilderContext :
194+ # List of features and associated cookiecutter values.
187195 features = {
188- "Redis support" : {
189- "name" : "enable_redis" ,
190- "value" : current_context .enable_redis ,
191- },
192- "Kubernetes config (deprecated)" : {
193- "name" : "enable_kube" ,
194- "value" : current_context .enable_kube ,
195- },
196- "Demo routers" : {
197- "name" : "enable_routers" ,
198- "value" : current_context .enable_routers ,
199- },
200- "Self-hosted swagger" : {
201- "name" : "self_hosted_swagger" ,
202- "value" : current_context .self_hosted_swagger ,
203- },
204- "RabbitMQ integration" : {
205- "name" : "enable_rmq" ,
206- "value" : current_context .enable_rmq ,
207- },
208- "Prometheus integration" : {
209- "name" : "prometheus_enabled" ,
210- "value" : current_context .prometheus_enabled ,
211- },
212- "Sentry integration" : {
213- "name" : "sentry_enabled" ,
214- "value" : current_context .sentry_enabled ,
215- },
216- "Opentelemetry integration" : {
217- "name" : "otlp_enabled" ,
218- "value" : current_context .otlp_enabled ,
219- },
220- "Loguru logger" : {
221- "name" : "enable_loguru" ,
222- "value" : current_context .enable_loguru ,
223- },
224- "Traefik labels for docker" : {
225- "name" : "traefik_labels" ,
226- "value" : current_context .traefik_labels ,
227- },
196+ "Redis support" : "enable_redis" ,
197+ "Kubernetes config (deprecated)" : "enable_kube" ,
198+ "Demo routers" : "enable_routers" ,
199+ "Self-hosted swagger" : "self_hosted_swagger" ,
200+ "RabbitMQ integration" : "enable_rmq" ,
201+ "Kafka integration" : "enable_kafka" ,
202+ "Prometheus integration" : "prometheus_enabled" ,
203+ "Sentry integration" : "sentry_enabled" ,
204+ "Opentelemetry integration" : "otlp_enabled" ,
205+ "Loguru logger" : "enable_loguru" ,
206+ "Traefik labels for docker" : "traefik_labels" ,
228207 }
229208 if current_context .db != DatabaseType .none :
230- features ["Migrations support" ] = {
231- "name" : "enable_migrations" ,
232- "value" : current_context .enable_migrations ,
233- }
234- features ["Add dummy model" ] = {
235- "name" : "add_dummy" ,
236- "value" : current_context .add_dummy ,
237- }
209+ features .update ({
210+ "Migrations support" : "enable_migrations" ,
211+ "Add dummy model" : "add_dummy"
212+ })
238213 checkbox_values = []
239- for feature_name , feature in features .items ():
240- if feature ["value" ] is None :
241- setattr (current_context , feature ["name" ], False )
242- checkbox_values .append ((feature ["name" ], feature_name ))
214+ for feature_display_name , feature_key in features .items ():
215+ value = getattr (current_context , feature_key , None )
216+ if value is None :
217+ setattr (current_context , feature_key , False )
218+ checkbox_values .append ((feature_key , feature_display_name ))
243219 if checkbox_values and not current_context .quite :
244220 results = checkboxlist_dialog (
245221 title = "Features" ,
@@ -248,8 +224,8 @@ def ask_features(current_context: BuilderContext) -> BuilderContext:
248224 ).run ()
249225 if results is None :
250226 raise KeyboardInterrupt ()
251- for feature in results :
252- setattr (current_context , feature , True )
227+ for feature_key in results :
228+ setattr (current_context , feature_key , True )
253229 return current_context
254230
255231
0 commit comments