]> nmode's Git Repositories - signal-cli/blob - src/main/java/org/asamk/signal/commands/VersionCommand.java
Implement dbus support for listIdentities
[signal-cli] / src / main / java / org / asamk / signal / commands / VersionCommand.java
1 package org.asamk.signal.commands;
2
3 import com.fasterxml.jackson.core.type.TypeReference;
4
5 import net.sourceforge.argparse4j.inf.Namespace;
6 import net.sourceforge.argparse4j.inf.Subparser;
7
8 import org.asamk.signal.BaseConfig;
9 import org.asamk.signal.OutputType;
10 import org.asamk.signal.commands.exceptions.CommandException;
11 import org.asamk.signal.manager.Manager;
12 import org.asamk.signal.manager.MultiAccountManager;
13 import org.asamk.signal.output.JsonWriter;
14 import org.asamk.signal.output.OutputWriter;
15 import org.asamk.signal.output.PlainTextWriter;
16
17 import java.util.List;
18 import java.util.Map;
19
20 public class VersionCommand implements JsonRpcLocalCommand, JsonRpcMultiLocalCommand {
21
22 @Override
23 public String getName() {
24 return "version";
25 }
26
27 @Override
28 public List<OutputType> getSupportedOutputTypes() {
29 return List.of(OutputType.PLAIN_TEXT, OutputType.JSON);
30 }
31
32 @Override
33 public void attachToSubparser(final Subparser subparser) {
34 }
35
36 @Override
37 public void handleCommand(
38 final Namespace ns, final Manager m, final OutputWriter outputWriter
39 ) throws CommandException {
40 outputVersion(outputWriter);
41 }
42
43 @Override
44 public void handleCommand(
45 final Namespace ns, final MultiAccountManager c, final OutputWriter outputWriter
46 ) throws CommandException {
47 outputVersion(outputWriter);
48 }
49
50 @Override
51 public TypeReference<Map<String, Object>> getRequestType() {
52 return new TypeReference<>() {};
53 }
54
55 private void outputVersion(final OutputWriter outputWriter) {
56 final var projectName = BaseConfig.PROJECT_NAME == null ? "signal-cli" : BaseConfig.PROJECT_NAME;
57 final var version = BaseConfig.PROJECT_VERSION == null ? "unknown" : BaseConfig.PROJECT_VERSION;
58
59 switch (outputWriter) {
60 case JsonWriter jsonWriter -> jsonWriter.write(Map.of("version", version));
61 case PlainTextWriter plainTextWriter -> plainTextWriter.println("{} {}", projectName, version);
62 }
63 }
64 }