mirror of
https://github.com/keycloak/keycloak.git
synced 2026-05-07 23:50:03 -05:00
KEYCLOAK-3742 kcreg config prints null
- proper no args check across the board - added --help option to all commands
This commit is contained in:
+19
@@ -4,6 +4,8 @@ import org.jboss.aesh.cl.Option;
|
||||
import org.jboss.aesh.console.command.Command;
|
||||
import org.keycloak.client.registration.cli.aesh.Globals;
|
||||
|
||||
import static org.keycloak.client.registration.cli.util.IoUtil.printOut;
|
||||
|
||||
/**
|
||||
* @author <a href="mailto:mstrukel@redhat.com">Marko Strukelj</a>
|
||||
*/
|
||||
@@ -12,11 +14,28 @@ public abstract class AbstractGlobalOptionsCmd implements Command {
|
||||
@Option(shortName = 'x', description = "Print full stack trace when exiting with error", hasValue = false)
|
||||
protected boolean dumpTrace;
|
||||
|
||||
@Option(name = "help", description = "Print command specific help", hasValue = false)
|
||||
protected boolean help;
|
||||
|
||||
protected void init(AbstractGlobalOptionsCmd parent) {
|
||||
dumpTrace = parent.dumpTrace;
|
||||
help = parent.help;
|
||||
}
|
||||
|
||||
protected void processGlobalOptions() {
|
||||
Globals.dumpTrace = dumpTrace;
|
||||
}
|
||||
|
||||
protected boolean printHelp() {
|
||||
if (help) {
|
||||
printOut(help());
|
||||
return true;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return KcRegCmd.usage();
|
||||
}
|
||||
}
|
||||
|
||||
+7
@@ -48,6 +48,9 @@ public class AttrsCmd extends AbstractGlobalOptionsCmd {
|
||||
try {
|
||||
processGlobalOptions();
|
||||
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
EndpointType regType = EndpointType.DEFAULT;
|
||||
PrintStream out = commandInvocation.getShell().out();
|
||||
@@ -120,6 +123,10 @@ public class AttrsCmd extends AbstractGlobalOptionsCmd {
|
||||
}
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(sb);
|
||||
|
||||
+14
-2
@@ -42,7 +42,11 @@ public class ConfigCmd extends AbstractAuthOptionsCmd implements Command {
|
||||
|
||||
public CommandResult execute(CommandInvocation commandInvocation) throws CommandException, InterruptedException {
|
||||
try {
|
||||
if (args.size() == 0) {
|
||||
if (args == null || args.size() == 0) {
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
throw new RuntimeException("Sub-command required by '" + OsUtil.CMD + " config' - one of: 'credentials', 'truststore', 'initial-token', 'registration-token'");
|
||||
}
|
||||
|
||||
@@ -60,8 +64,12 @@ public class ConfigCmd extends AbstractAuthOptionsCmd implements Command {
|
||||
case "registration-token": {
|
||||
return new ConfigRegistrationTokenCmd(this).execute(commandInvocation);
|
||||
}
|
||||
default:
|
||||
default: {
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
throw new RuntimeException("Unknown sub-command: " + cmd);
|
||||
}
|
||||
}
|
||||
|
||||
} finally {
|
||||
@@ -69,6 +77,10 @@ public class ConfigCmd extends AbstractAuthOptionsCmd implements Command {
|
||||
}
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(sb);
|
||||
|
||||
+8
@@ -69,6 +69,10 @@ public class ConfigCredentialsCmd extends AbstractAuthOptionsCmd implements Comm
|
||||
try {
|
||||
processGlobalOptions();
|
||||
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
return process(commandInvocation);
|
||||
} finally {
|
||||
commandInvocation.stop();
|
||||
@@ -170,6 +174,10 @@ public class ConfigCredentialsCmd extends AbstractAuthOptionsCmd implements Comm
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(sb);
|
||||
|
||||
+8
@@ -43,6 +43,10 @@ public class ConfigInitialTokenCmd extends AbstractAuthOptionsCmd implements Com
|
||||
@Override
|
||||
public CommandResult execute(CommandInvocation commandInvocation) throws CommandException, InterruptedException {
|
||||
try {
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
return process(commandInvocation);
|
||||
} finally {
|
||||
commandInvocation.stop();
|
||||
@@ -130,6 +134,10 @@ public class ConfigInitialTokenCmd extends AbstractAuthOptionsCmd implements Com
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(sb);
|
||||
|
||||
+8
@@ -40,6 +40,10 @@ public class ConfigRegistrationTokenCmd extends AbstractAuthOptionsCmd implement
|
||||
@Override
|
||||
public CommandResult execute(CommandInvocation commandInvocation) throws CommandException, InterruptedException {
|
||||
try {
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
return process(commandInvocation);
|
||||
} finally {
|
||||
commandInvocation.stop();
|
||||
@@ -120,6 +124,10 @@ public class ConfigRegistrationTokenCmd extends AbstractAuthOptionsCmd implement
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(sb);
|
||||
|
||||
+7
@@ -40,6 +40,10 @@ public class ConfigTruststoreCmd extends AbstractAuthOptionsCmd implements Comma
|
||||
@Override
|
||||
public CommandResult execute(CommandInvocation commandInvocation) throws CommandException, InterruptedException {
|
||||
try {
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
return process(commandInvocation);
|
||||
} finally {
|
||||
commandInvocation.stop();
|
||||
@@ -130,6 +134,9 @@ public class ConfigTruststoreCmd extends AbstractAuthOptionsCmd implements Comma
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
|
||||
+8
@@ -102,6 +102,10 @@ public class CreateCmd extends AbstractAuthOptionsCmd implements Command {
|
||||
try {
|
||||
processGlobalOptions();
|
||||
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
if (args != null) {
|
||||
Iterator<String> it = args.iterator();
|
||||
while (it.hasNext()) {
|
||||
@@ -226,6 +230,10 @@ public class CreateCmd extends AbstractAuthOptionsCmd implements Command {
|
||||
}
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(sb);
|
||||
|
||||
+13
-6
@@ -27,7 +27,6 @@ import org.keycloak.client.registration.cli.util.ParseUtil;
|
||||
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.keycloak.client.registration.cli.util.AuthUtil.ensureToken;
|
||||
@@ -46,19 +45,23 @@ import static org.keycloak.client.registration.cli.util.OsUtil.PROMPT;
|
||||
/**
|
||||
* @author <a href="mailto:mstrukel@redhat.com">Marko Strukelj</a>
|
||||
*/
|
||||
@CommandDefinition(name = "delete", description = "CLIENT_ID [GLOBAL_OPTIONS]")
|
||||
@CommandDefinition(name = "delete", description = "CLIENT [GLOBAL_OPTIONS]")
|
||||
public class DeleteCmd extends AbstractAuthOptionsCmd {
|
||||
|
||||
@Arguments
|
||||
private List<String> args = new ArrayList<>();
|
||||
private List<String> args;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandInvocation commandInvocation) throws CommandException, InterruptedException {
|
||||
try {
|
||||
processGlobalOptions();
|
||||
|
||||
if (args.isEmpty()) {
|
||||
throw new RuntimeException("CLIENT_ID not specified");
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
if (args == null || args.isEmpty()) {
|
||||
throw new RuntimeException("CLIENT not specified");
|
||||
}
|
||||
|
||||
if (args.size() > 1) {
|
||||
@@ -68,7 +71,7 @@ public class DeleteCmd extends AbstractAuthOptionsCmd {
|
||||
String clientId = args.get(0);
|
||||
|
||||
if (clientId.startsWith("-")) {
|
||||
warnfErr(ParseUtil.CLIENTID_OPTION_WARN, clientId);
|
||||
warnfErr(ParseUtil.CLIENT_OPTION_WARN, clientId);
|
||||
}
|
||||
|
||||
String regType = "default";
|
||||
@@ -110,6 +113,10 @@ public class DeleteCmd extends AbstractAuthOptionsCmd {
|
||||
}
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(sb);
|
||||
|
||||
+10
-3
@@ -35,7 +35,6 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.keycloak.client.registration.cli.util.AuthUtil.ensureToken;
|
||||
@@ -67,7 +66,7 @@ public class GetCmd extends AbstractAuthOptionsCmd {
|
||||
private String endpoint;
|
||||
|
||||
@Arguments
|
||||
private List<String> args = new ArrayList<>();
|
||||
private List<String> args;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandInvocation commandInvocation) throws CommandException, InterruptedException {
|
||||
@@ -75,6 +74,10 @@ public class GetCmd extends AbstractAuthOptionsCmd {
|
||||
try {
|
||||
processGlobalOptions();
|
||||
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
if (args == null || args.isEmpty()) {
|
||||
throw new RuntimeException("CLIENT not specified");
|
||||
}
|
||||
@@ -88,7 +91,7 @@ public class GetCmd extends AbstractAuthOptionsCmd {
|
||||
|
||||
|
||||
if (clientId.startsWith("-")) {
|
||||
warnfErr(ParseUtil.CLIENTID_OPTION_WARN, clientId);
|
||||
warnfErr(ParseUtil.CLIENT_OPTION_WARN, clientId);
|
||||
}
|
||||
|
||||
ConfigData config = loadConfig();
|
||||
@@ -172,6 +175,10 @@ public class GetCmd extends AbstractAuthOptionsCmd {
|
||||
}
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(sb);
|
||||
|
||||
+2
-1
@@ -87,7 +87,8 @@ public class KcRegCmd extends AbstractGlobalOptionsCmd {
|
||||
out.println();
|
||||
out.println("Global options:");
|
||||
out.println(" -x Print full stack trace when exiting with error");
|
||||
out.println(" -c, --config Path to the config file (" + DEFAULT_CONFIG_FILE_STRING + " by default)");
|
||||
out.println(" --help Print help for specific command");
|
||||
out.println(" --config Path to the config file (" + DEFAULT_CONFIG_FILE_STRING + " by default)");
|
||||
out.println();
|
||||
out.println("Commands: ");
|
||||
out.println(" config Set up credentials, and other configuration settings using the config file");
|
||||
|
||||
+10
-2
@@ -106,6 +106,10 @@ public class UpdateCmd extends AbstractAuthOptionsCmd {
|
||||
try {
|
||||
processGlobalOptions();
|
||||
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
String clientId = null;
|
||||
|
||||
if (args != null) {
|
||||
@@ -117,7 +121,7 @@ public class UpdateCmd extends AbstractAuthOptionsCmd {
|
||||
clientId = it.next();
|
||||
|
||||
if (clientId.startsWith("-")) {
|
||||
warnfErr(ParseUtil.CLIENTID_OPTION_WARN, clientId);
|
||||
warnfErr(ParseUtil.CLIENT_OPTION_WARN, clientId);
|
||||
}
|
||||
|
||||
while (it.hasNext()) {
|
||||
@@ -334,6 +338,10 @@ public class UpdateCmd extends AbstractAuthOptionsCmd {
|
||||
}
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(sb);
|
||||
@@ -348,7 +356,7 @@ public class UpdateCmd extends AbstractAuthOptionsCmd {
|
||||
out.println();
|
||||
out.println(" Global options:");
|
||||
out.println(" -x Print full stack trace when exiting with error");
|
||||
out.println(" -c, --config Path to the config file (" + DEFAULT_CONFIG_FILE_STRING + " by default)");
|
||||
out.println(" --config Path to the config file (" + DEFAULT_CONFIG_FILE_STRING + " by default)");
|
||||
out.println(" --truststore PATH Path to a truststore containing trusted certificates");
|
||||
out.println(" --trustpass PASSWORD Truststore password (prompted for if not specified and --truststore is used)");
|
||||
out.println(" --token TOKEN Registration access token to use");
|
||||
|
||||
+12
-5
@@ -32,7 +32,6 @@ import java.io.IOException;
|
||||
import java.io.InputStream;
|
||||
import java.io.PrintWriter;
|
||||
import java.io.StringWriter;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
import static org.keycloak.client.registration.cli.util.AuthUtil.ensureToken;
|
||||
@@ -55,7 +54,7 @@ import static org.keycloak.client.registration.cli.util.OsUtil.PROMPT;
|
||||
public class UpdateTokenCmd extends AbstractAuthOptionsCmd {
|
||||
|
||||
@Arguments
|
||||
private List<String> args = new ArrayList<>();
|
||||
private List<String> args;
|
||||
|
||||
@Override
|
||||
public CommandResult execute(CommandInvocation commandInvocation) throws CommandException, InterruptedException {
|
||||
@@ -63,14 +62,18 @@ public class UpdateTokenCmd extends AbstractAuthOptionsCmd {
|
||||
try {
|
||||
processGlobalOptions();
|
||||
|
||||
if (args.isEmpty()) {
|
||||
if (printHelp()) {
|
||||
return CommandResult.SUCCESS;
|
||||
}
|
||||
|
||||
if (args == null || args.isEmpty()) {
|
||||
throw new RuntimeException("CLIENT not specified");
|
||||
}
|
||||
|
||||
String clientId = args.get(0);
|
||||
|
||||
if (clientId.startsWith("-")) {
|
||||
warnfOut(ParseUtil.CLIENTID_OPTION_WARN, clientId);
|
||||
warnfOut(ParseUtil.CLIENT_OPTION_WARN, clientId);
|
||||
}
|
||||
|
||||
ConfigData config = loadConfig();
|
||||
@@ -129,6 +132,10 @@ public class UpdateTokenCmd extends AbstractAuthOptionsCmd {
|
||||
}
|
||||
}
|
||||
|
||||
protected String help() {
|
||||
return usage();
|
||||
}
|
||||
|
||||
public static String usage() {
|
||||
StringWriter sb = new StringWriter();
|
||||
PrintWriter out = new PrintWriter(sb);
|
||||
@@ -141,7 +148,7 @@ public class UpdateTokenCmd extends AbstractAuthOptionsCmd {
|
||||
out.println();
|
||||
out.println(" Global options:");
|
||||
out.println(" -x Print full stack trace when exiting with error");
|
||||
out.println(" -c, --config Path to the config file (" + DEFAULT_CONFIG_FILE_STRING + " by default)");
|
||||
out.println(" --config Path to the config file (" + DEFAULT_CONFIG_FILE_STRING + " by default)");
|
||||
out.println(" --truststore PATH Path to a truststore containing trusted certificates");
|
||||
out.println(" --trustpass PASSWORD Truststore password (prompted for if not specified and --truststore is used)");
|
||||
out.println(" CREDENTIALS OPTIONS Same set of options as accepted by '" + CMD + " config credentials' in order to establish");
|
||||
|
||||
+1
-1
@@ -38,7 +38,7 @@ import static org.keycloak.client.registration.cli.util.ReflectionUtil.setAttrib
|
||||
*/
|
||||
public class ParseUtil {
|
||||
|
||||
public static final String CLIENTID_OPTION_WARN = "You're using what looks like an OPTION as CLIENT_ID: %s";
|
||||
public static final String CLIENT_OPTION_WARN = "You're using what looks like an OPTION as CLIENT: %s";
|
||||
public static final String TOKEN_OPTION_WARN = "You're using what looks like an OPTION as TOKEN: %s";
|
||||
|
||||
public static String[] shift(String[] args) {
|
||||
|
||||
Reference in New Issue
Block a user