pub enum Commands {
Show 28 variants
List {
format: OutputFormat,
tags: Option<String>,
open: bool,
verbose: bool,
command: Option<ListCommand>,
},
Add {
names: String,
interactive: bool,
},
Import {
path: Option<PathBuf>,
},
Update {
name: String,
parallel: bool,
max: Option<usize>,
post_changelog: bool,
yes: bool,
},
Emoji {
command: EmojiCommand,
},
Topic {
command: TopicCommand,
},
Category {
command: CategoryCommand,
},
Group {
command: GroupCommand,
},
User {
command: UserCommand,
},
Invite {
command: InviteCommand,
},
ApiKey {
command: ApiKeyCommand,
},
Pm {
command: PmCommand,
},
Backup {
command: BackupCommand,
},
Palette {
command: PaletteCommand,
},
Plugin {
command: PluginCommand,
},
Theme {
command: ThemeCommand,
},
Setting {
command: SettingCommand,
},
Tag {
command: TagCommand,
},
Post {
command: PostCommand,
},
Open {
discourse: String,
},
Harden {
host: String,
ssh_user: String,
new_user: Option<String>,
ssh_port: Option<u16>,
pubkey_file: PathBuf,
},
Analytics {
discourse: String,
since: String,
compare: bool,
snapshot: bool,
periods: Option<String>,
section: SectionArg,
format: AnalyticsFormat,
},
Search {
discourse: String,
query: String,
format: ListFormat,
},
Upload {
discourse: String,
file: PathBuf,
upload_type: String,
format: ListFormat,
},
Config {
command: Option<ConfigCommand>,
},
Completions {
shell: CompletionShell,
dir: Option<PathBuf>,
},
Man {
dir: PathBuf,
},
Version,
}Variants§
List
List configured Discourses.
Fields
format: OutputFormatOutput format for the listing.
Filter by tags (comma/semicolon separated, match-any).
command: Option<ListCommand>Add
Add one or more Discourses to the config.
Fields
Import
Import Discourses from a file or stdin.
Update
Run remote OS + Discourse update workflow for one or all Discourses.
Fields
Emoji
Manage custom emoji.
Fields
command: EmojiCommandTopic
Pull/push/sync topics as local Markdown.
Fields
command: TopicCommandCategory
List/copy/pull/push categories.
Fields
command: CategoryCommandGroup
List/inspect/copy groups.
Fields
command: GroupCommandUser
Operations that act from a user’s perspective.
Fields
command: UserCommandInvite
Send invites — single or bulk from a file.
Fields
command: InviteCommandApiKey
Manage API keys (admin scope).
Fields
command: ApiKeyCommandPm
Send and list private messages.
Backup
Create/list/restore backups.
Fields
command: BackupCommandPalette
List/pull/push color palettes.
Fields
command: PaletteCommandPlugin
List/install/remove plugins.
Fields
command: PluginCommandTheme
List/install/remove/pull/push/duplicate themes.
Fields
command: ThemeCommandSetting
Update site settings.
Fields
command: SettingCommandTag
Manage the tag taxonomy: list/pull/push tags and tag groups.
Fields
command: TagCommandPost
Post-level operations: edit / delete / move.
Fields
command: PostCommandOpen
Open a Discourse in the default browser.
Harden
Harden a fresh Ubuntu server reachable via ssh root@host.
Stage 1 (current): creates a non-root sudo user, installs the given pubkey to their authorized_keys, and verifies the new-user SSH login works. Does NOT yet tighten sshd_config, install Docker / fail2ban / etc — those come in follow-up releases.
Defaults can be overridden in the [harden] block of dsc.toml;
the flags below override that block on a per-run basis.
Fields
ssh_user: StringUsername to SSH in as initially. Defaults to root, which is
what a fresh cloud-provisioned box typically has.
new_user: Option<String>Username for the new sudo-enabled non-root account. Overrides
[harden].new_user from dsc.toml. Built-in default: discourse.
Analytics
Community-health analytics — growth, activity, and health metrics for a Discourse, with optional period-over-period comparison.
See spec/analytics.md for the full spec. v1 ships every metric
that maps onto a single /admin/reports/{id}.json endpoint;
derivation-heavy ones (e.g. lost regulars, top-10 share) print
— (n/i) until follow-up implementation lands.
Fields
since: StringWindow to report on. Same syntax as dsc user activity --since
(e.g. 7d, 24h, 1m, ISO-8601). Ignored when --snapshot
is set. Default: 30d.
compare: boolAlso fetch the immediately preceding window of equal length and
show a delta column. Mutually exclusive with --snapshot.
snapshot: boolMulti-window snapshot mode. Reports each metric across several
preset windows (--periods) so you see growth/health trends
at a glance. Replaces --since + --compare.
section: SectionArgRestrict output to one section.
format: AnalyticsFormatOutput format. table is DuckDB-style box-drawing; falls
through to text automatically when stdout isn’t a TTY.
Search
Search topics on a Discourse.
Fields
query: StringSearch query (passed through verbatim, including any
Discourse filter syntax like category:foo or @user).
format: ListFormatOutput format.
Upload
Upload a file. Prints the resulting upload:// short URL by default.
Fields
upload_type: StringDiscourse upload context. Default composer is correct for
embedding in posts; other values include avatar,
profile_background, card_background, custom_emoji.
format: ListFormatOutput format. Text mode prints just the short URL.
Config
Inspect and validate configuration.
Fields
command: Option<ConfigCommand>Completions
Generate shell completion scripts.
Fields
shell: CompletionShellTarget shell.
Man
Generate man pages for dsc and every subcommand.
Writes one ROFF-formatted file per (sub)command (e.g. dsc.1,
dsc-tag-pull.1) into the given directory. Distro packagers
install these into section 1 of the man path. Run gzip -9 on
the output if your packaging convention expects compressed pages.
Version
Print the dsc version.
Trait Implementations§
Source§impl FromArgMatches for Commands
impl FromArgMatches for Commands
Source§fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
fn from_arg_matches(__clap_arg_matches: &ArgMatches) -> Result<Self, Error>
Source§fn from_arg_matches_mut(
__clap_arg_matches: &mut ArgMatches,
) -> Result<Self, Error>
fn from_arg_matches_mut( __clap_arg_matches: &mut ArgMatches, ) -> Result<Self, Error>
Source§fn update_from_arg_matches(
&mut self,
__clap_arg_matches: &ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches( &mut self, __clap_arg_matches: &ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§fn update_from_arg_matches_mut<'b>(
&mut self,
__clap_arg_matches: &mut ArgMatches,
) -> Result<(), Error>
fn update_from_arg_matches_mut<'b>( &mut self, __clap_arg_matches: &mut ArgMatches, ) -> Result<(), Error>
ArgMatches to self.Source§impl Subcommand for Commands
impl Subcommand for Commands
Source§fn augment_subcommands<'b>(__clap_app: Command) -> Command
fn augment_subcommands<'b>(__clap_app: Command) -> Command
Source§fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command
fn augment_subcommands_for_update<'b>(__clap_app: Command) -> Command
Command so it can instantiate self via
FromArgMatches::update_from_arg_matches_mut Read moreSource§fn has_subcommand(__clap_name: &str) -> bool
fn has_subcommand(__clap_name: &str) -> bool
Self can parse a specific subcommand