mod commands;

use clap::Subcommand;
use conduwuit::Result;

use crate::admin_command_dispatch;

#[derive(Debug, Subcommand)]
#[admin_command_dispatch]
pub enum AppserviceCommand {
	/// Register an appservice using its registration YAML
	///
	/// This command needs a YAML generated by an appservice (such as a bridge),
	/// which must be provided in a Markdown code block below the command.
	///
	/// Registering a new bridge using the ID of an existing bridge will replace
	/// the old one.
	Register,

	/// Unregister an appservice using its ID
	///
	/// You can find the ID using the `list-appservices` command.
	Unregister {
		/// The appservice to unregister
		appservice_identifier: String,
	},

	/// Show an appservice's config using its ID
	///
	/// You can find the ID using the `list-appservices` command.
	#[clap(alias("show"))]
	ShowAppserviceConfig {
		/// The appservice to show
		appservice_identifier: String,
	},

	/// List all the currently registered appservices
	#[clap(alias("list"))]
	ListRegistered,
}
