import java.util.HashMap;
import java.util.Map;
+import java.util.TreeMap;
public class Commands {
private static final Map<String, Command> commands = new HashMap<>();
+ private static final Map<String, SubparserAttacher> commandSubparserAttacher = new TreeMap<>();
static {
- addCommand("addDevice", new AddDeviceCommand());
- addCommand("daemon", new DaemonCommand());
- addCommand("link", new LinkCommand());
- addCommand("listDevices", new ListDevicesCommand());
- addCommand("listGroups", new ListGroupsCommand());
- addCommand("listIdentities", new ListIdentitiesCommand());
- addCommand("quitGroup", new QuitGroupCommand());
- addCommand("receive", new ReceiveCommand());
- addCommand("register", new RegisterCommand());
- addCommand("removeDevice", new RemoveDeviceCommand());
- addCommand("removePin", new RemovePinCommand());
- addCommand("send", new SendCommand());
- addCommand("setProfileAvatar", new SetProfileAvatarCommand());
- addCommand("setProfileName", new SetProfileNameCommand());
- addCommand("setPin", new SetPinCommand());
- addCommand("trust", new TrustCommand());
- addCommand("unregister", new UnregisterCommand());
- addCommand("updateAccount", new UpdateAccountCommand());
- addCommand("updateGroup", new UpdateGroupCommand());
- addCommand("verify", new VerifyCommand());
+ 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 SendReceiptCommand());
+ addCommand(new SendSyncRequestCommand());
+ addCommand(new SendTypingCommand());
+ addCommand(new SetPinCommand());
+ addCommand(new SubmitRateLimitChallengeCommand());
+ 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, Command> getCommands() {
- return commands;
+ public static Map<String, SubparserAttacher> getCommandSubparserAttachers() {
+ return commandSubparserAttacher;
}
- private static void addCommand(String name, Command command) {
- commands.put(name, command);
+ public static Command getCommand(String commandKey) {
+ if (!commands.containsKey(commandKey)) {
+ return null;
+ }
+ return commands.get(commandKey);
+ }
+
+ private static void addCommand(Command command) {
+ commands.put(command.getName(), command);
+ if (command instanceof CliCommand) {
+ commandSubparserAttacher.put(command.getName(), ((CliCommand) command)::attachToSubparser);
+ }
}
}