mirror of
https://github.com/scylladb/scylladb.git
synced 2026-05-12 19:02:12 +00:00
The scaffolding required to have a working scylla tool app, is considerable, leading to a large amount of boilerplate code in each such app. This logic is also very similar across the two tool apps we have and would presumably be very similar in any future app. This PR extracts this logic into `tools/utils.hh` and introduces `tool_app_template`, which is similar to `seastar::app_template` in that it centralizes all the option handling and more in a single class, that each tool has to just instantiate and then call `run()` to run the app. This cuts down on the repetition and boilerplate in our current tool apps and make prototyping new tool apps much easier. Closes #14855 * github.com:scylladb/scylladb: tools/utils.hh: remove unused headers tools/utils: make get_selected_operation() and configure_tool_mode() private tools/utils.hh: de-template get_selected_operation() tools/scylla-types: migrate to tools_app_template tools/scylla-types: prepare for migration to tool_app_template tools/scylla-sstable.cc: fix indentation tools/scylla-sstables: migrate to tool_app_template tools/scylla-sstables: prepare for migration to tool_app_template tools: extract tool app skeleton to utils.hh