mirror of
https://github.com/AsamK/signal-cli
synced 2025-08-29 18:40:39 +00:00
Refactor command creation
This commit is contained in:
parent
47143a90e1
commit
af292d8f0e
45 changed files with 436 additions and 282 deletions
|
@ -1,74 +1,65 @@
|
|||
package org.asamk.signal.commands;
|
||||
|
||||
import org.asamk.signal.OutputWriter;
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import java.util.TreeMap;
|
||||
|
||||
public class Commands {
|
||||
|
||||
private static final Map<String, CommandConstructor> commands = new HashMap<>();
|
||||
private static final Map<String, Command> commands = new HashMap<>();
|
||||
private static final Map<String, SubparserAttacher> commandSubparserAttacher = new TreeMap<>();
|
||||
|
||||
static {
|
||||
addCommand("addDevice", AddDeviceCommand::new, AddDeviceCommand::attachToSubparser);
|
||||
addCommand("block", BlockCommand::new, BlockCommand::attachToSubparser);
|
||||
addCommand("daemon", DaemonCommand::new, DaemonCommand::attachToSubparser);
|
||||
addCommand("getUserStatus", GetUserStatusCommand::new, GetUserStatusCommand::attachToSubparser);
|
||||
addCommand("jsonRpc", JsonRpcDispatcherCommand::new, JsonRpcDispatcherCommand::attachToSubparser);
|
||||
addCommand("link", LinkCommand::new, LinkCommand::attachToSubparser);
|
||||
addCommand("listContacts", ListContactsCommand::new, ListContactsCommand::attachToSubparser);
|
||||
addCommand("listDevices", ListDevicesCommand::new, ListDevicesCommand::attachToSubparser);
|
||||
addCommand("listGroups", ListGroupsCommand::new, ListGroupsCommand::attachToSubparser);
|
||||
addCommand("listIdentities", ListIdentitiesCommand::new, ListIdentitiesCommand::attachToSubparser);
|
||||
addCommand("joinGroup", JoinGroupCommand::new, JoinGroupCommand::attachToSubparser);
|
||||
addCommand("quitGroup", QuitGroupCommand::new, QuitGroupCommand::attachToSubparser);
|
||||
addCommand("receive", ReceiveCommand::new, ReceiveCommand::attachToSubparser);
|
||||
addCommand("register", RegisterCommand::new, RegisterCommand::attachToSubparser);
|
||||
addCommand("removeDevice", RemoveDeviceCommand::new, RemoveDeviceCommand::attachToSubparser);
|
||||
addCommand("remoteDelete", RemoteDeleteCommand::new, RemoteDeleteCommand::attachToSubparser);
|
||||
addCommand("removePin", RemovePinCommand::new, RemovePinCommand::attachToSubparser);
|
||||
addCommand("send", SendCommand::new, SendCommand::attachToSubparser);
|
||||
addCommand("sendContacts", SendContactsCommand::new, SendContactsCommand::attachToSubparser);
|
||||
addCommand("sendReaction", SendReactionCommand::new, SendReactionCommand::attachToSubparser);
|
||||
addCommand("sendSyncRequest", SendSyncRequestCommand::new, SendSyncRequestCommand::attachToSubparser);
|
||||
addCommand("sendTyping", SendTypingCommand::new, SendTypingCommand::attachToSubparser);
|
||||
addCommand("setPin", SetPinCommand::new, SetPinCommand::attachToSubparser);
|
||||
addCommand("trust", TrustCommand::new, TrustCommand::attachToSubparser);
|
||||
addCommand("unblock", UnblockCommand::new, UnblockCommand::attachToSubparser);
|
||||
addCommand("unregister", UnregisterCommand::new, UnregisterCommand::attachToSubparser);
|
||||
addCommand("updateAccount", UpdateAccountCommand::new, UpdateAccountCommand::attachToSubparser);
|
||||
addCommand("updateContact", UpdateContactCommand::new, UpdateContactCommand::attachToSubparser);
|
||||
addCommand("updateGroup", UpdateGroupCommand::new, UpdateGroupCommand::attachToSubparser);
|
||||
addCommand("updateProfile", UpdateProfileCommand::new, UpdateProfileCommand::attachToSubparser);
|
||||
addCommand("uploadStickerPack", UploadStickerPackCommand::new, UploadStickerPackCommand::attachToSubparser);
|
||||
addCommand("verify", VerifyCommand::new, VerifyCommand::attachToSubparser);
|
||||
addCommand("version", VersionCommand::new, null);
|
||||
addCommand(new AddDeviceCommand());
|
||||
addCommand(new BlockCommand());
|
||||
addCommand(new DaemonCommand());
|
||||
addCommand(new GetUserStatusCommand());
|
||||
addCommand(new JoinGroupCommand());
|
||||
addCommand(new JsonRpcDispatcherCommand());
|
||||
addCommand(new LinkCommand());
|
||||
addCommand(new ListContactsCommand());
|
||||
addCommand(new ListDevicesCommand());
|
||||
addCommand(new ListGroupsCommand());
|
||||
addCommand(new ListIdentitiesCommand());
|
||||
addCommand(new QuitGroupCommand());
|
||||
addCommand(new ReceiveCommand());
|
||||
addCommand(new RegisterCommand());
|
||||
addCommand(new RemoveDeviceCommand());
|
||||
addCommand(new RemoteDeleteCommand());
|
||||
addCommand(new RemovePinCommand());
|
||||
addCommand(new SendCommand());
|
||||
addCommand(new SendContactsCommand());
|
||||
addCommand(new SendReactionCommand());
|
||||
addCommand(new SendSyncRequestCommand());
|
||||
addCommand(new SendTypingCommand());
|
||||
addCommand(new SetPinCommand());
|
||||
addCommand(new TrustCommand());
|
||||
addCommand(new UnblockCommand());
|
||||
addCommand(new UnregisterCommand());
|
||||
addCommand(new UpdateAccountCommand());
|
||||
addCommand(new UpdateContactCommand());
|
||||
addCommand(new UpdateGroupCommand());
|
||||
addCommand(new UpdateProfileCommand());
|
||||
addCommand(new UploadStickerPackCommand());
|
||||
addCommand(new VerifyCommand());
|
||||
addCommand(new VersionCommand());
|
||||
}
|
||||
|
||||
public static Map<String, SubparserAttacher> getCommandSubparserAttachers() {
|
||||
return commandSubparserAttacher;
|
||||
}
|
||||
|
||||
public static Command getCommand(String commandKey, OutputWriter outputWriter) {
|
||||
public static Command getCommand(String commandKey) {
|
||||
if (!commands.containsKey(commandKey)) {
|
||||
return null;
|
||||
}
|
||||
return commands.get(commandKey).constructCommand(outputWriter);
|
||||
return commands.get(commandKey);
|
||||
}
|
||||
|
||||
private static void addCommand(
|
||||
String name, CommandConstructor commandConstructor, SubparserAttacher subparserAttacher
|
||||
) {
|
||||
commands.put(name, commandConstructor);
|
||||
if (subparserAttacher != null) {
|
||||
commandSubparserAttacher.put(name, subparserAttacher);
|
||||
private static void addCommand(Command command) {
|
||||
commands.put(command.getName(), command);
|
||||
if (command instanceof CliCommand) {
|
||||
commandSubparserAttacher.put(command.getName(), ((CliCommand) command)::attachToSubparser);
|
||||
}
|
||||
}
|
||||
|
||||
private interface CommandConstructor {
|
||||
|
||||
Command constructCommand(OutputWriter outputWriter);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue