feat: implement system delete command

This commit is contained in:
dusk 2025-04-04 04:47:00 +09:00
parent 9e74835e4b
commit 047bdd870d
No known key found for this signature in database
4 changed files with 19 additions and 12 deletions

View file

@ -95,6 +95,7 @@ public partial class CommandTree
Commands.SystemShowBanner(var param, var flags) => ctx.Execute<SystemEdit>(SystemBannerImage, m => m.ShowBannerImage(ctx, param.target, flags.GetReplyFormat())),
Commands.SystemClearBanner(var param, var flags) => ctx.Execute<SystemEdit>(SystemBannerImage, m => m.ClearBannerImage(ctx, ctx.System, flags.yes)),
Commands.SystemChangeBanner(var param, _) => ctx.Execute<SystemEdit>(SystemBannerImage, m => m.ChangeBannerImage(ctx, ctx.System, param.banner)),
Commands.SystemDelete(_, var flags) => ctx.Execute<SystemEdit>(SystemDelete, m => m.Delete(ctx, ctx.System, flags.no_export)),
_ =>
// this should only ever occur when deving if commands are not implemented...
ctx.Reply(
@ -364,8 +365,6 @@ public partial class CommandTree
await ctx.CheckSystem(target).Execute<Groups>(GroupList, g => g.ListSystemGroups(ctx, target));
else if (ctx.Match("privacy"))
await ctx.CheckSystem(target).Execute<SystemEdit>(SystemPrivacy, m => m.SystemPrivacy(ctx, target));
else if (ctx.Match("delete", "remove", "destroy", "erase", "yeet"))
await ctx.CheckSystem(target).Execute<SystemEdit>(SystemDelete, m => m.Delete(ctx, target));
else if (ctx.Match("id"))
await ctx.CheckSystem(target).Execute<System>(SystemId, m => m.DisplayId(ctx, target));
else if (ctx.Match("random", "rand", "r"))

View file

@ -774,10 +774,9 @@ public class SystemEdit
: ctx.Reply(msg));
}
public async Task Delete(Context ctx, PKSystem target)
public async Task Delete(Context ctx, PKSystem target, bool noExport)
{
ctx.CheckSystem().CheckOwnSystem(target);
var noExport = ctx.MatchFlag("ne", "no-export");
var warnMsg = $"{Emojis.Warn} Are you sure you want to delete your system? If so, reply to this message with your system's ID (`{target.DisplayHid(ctx.Config)}`).\n";
if (!noExport)

View file

@ -159,8 +159,10 @@ pub fn edit() -> impl Iterator<Item = Command> {
.into_iter();
let system_server_avatar = tokens!(system_target, ("serveravatar", ["spfp"]));
let system_server_avatar_cmd = [command!(system_server_avatar => "system_show_server_avatar")
.help("Shows the system's server avatar")]
let system_server_avatar_cmd = [
command!(system_server_avatar => "system_show_server_avatar")
.help("Shows the system's server avatar"),
]
.into_iter();
let system_server_avatar_self = tokens!(system, ("serveravatar", ["spfp"]));
@ -192,6 +194,12 @@ pub fn edit() -> impl Iterator<Item = Command> {
]
.into_iter();
let system_delete = std::iter::once(
command!(system, ("delete", ["erase", "remove", "yeet"]) => "system_delete")
.flag(("no-export", ["ne"]))
.help("Deletes the system"),
);
system_new_cmd
.chain(system_name_self_cmd)
.chain(system_server_name_self_cmd)
@ -203,6 +211,7 @@ pub fn edit() -> impl Iterator<Item = Command> {
.chain(system_avatar_self_cmd)
.chain(system_server_avatar_self_cmd)
.chain(system_banner_self_cmd)
.chain(system_delete)
.chain(system_name_cmd)
.chain(system_server_name_cmd)
.chain(system_description_cmd)

View file

@ -34,7 +34,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
writeln!(
&mut command_params_init,
r#"@{name} = await ctx.ParamResolve{extract_fn_name}("{name}") ?? throw new PKError("this is a bug"),"#,
name = param.name(),
name = param.name().replace("-", "_"),
extract_fn_name = get_param_param_ty(param.kind()),
)?;
}
@ -44,14 +44,14 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
writeln!(
&mut command_flags_init,
r#"@{name} = await ctx.FlagResolve{extract_fn_name}("{name}"),"#,
name = flag.get_name(),
name = flag.get_name().replace("-", "_"),
extract_fn_name = get_param_param_ty(kind),
)?;
} else {
writeln!(
&mut command_flags_init,
r#"@{name} = ctx.Parameters.HasFlag("{name}"),"#,
name = flag.get_name(),
name = flag.get_name().replace("-", "_"),
)?;
}
}
@ -92,7 +92,7 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
writeln!(
&mut command_params_fields,
r#"public required {ty} @{name};"#,
name = param.name(),
name = param.name().replace("-", "_"),
ty = get_param_ty(param.kind()),
)?;
}
@ -102,14 +102,14 @@ fn main() -> Result<(), Box<dyn std::error::Error>> {
writeln!(
&mut command_flags_fields,
r#"public {ty}? @{name};"#,
name = flag.get_name(),
name = flag.get_name().replace("-", "_"),
ty = get_param_ty(kind),
)?;
} else {
writeln!(
&mut command_flags_fields,
r#"public required bool @{name};"#,
name = flag.get_name(),
name = flag.get_name().replace("-", "_"),
)?;
}
}