| 
19 | 19 | import org.elasticsearch.core.CheckedFunction;  | 
20 | 20 | import org.elasticsearch.env.Environment;  | 
21 | 21 | 
 
  | 
22 |  | -import java.io.CharArrayWriter;  | 
23 |  | -import java.io.Closeable;  | 
24 | 22 | import java.io.IOException;  | 
25 |  | -import java.io.Reader;  | 
26 | 23 | import java.util.Arrays;  | 
27 | 24 | import java.util.List;  | 
28 | 25 | 
 
  | 
@@ -53,42 +50,28 @@ protected void executeCommand(Terminal terminal, OptionSet options, Environment  | 
53 | 50 | 
 
  | 
54 | 51 |         final KeyStoreWrapper keyStore = getKeyStore();  | 
55 | 52 | 
 
  | 
56 |  | -        final Closeable closeable;  | 
57 |  | -        final CheckedFunction<String, char[], IOException> valueSupplier;  | 
58 |  | -        if (options.has(stdinOption)) {  | 
59 |  | -            final Reader stdinReader = terminal.getReader();  | 
60 |  | -            valueSupplier = s -> {  | 
61 |  | -                try (CharArrayWriter writer = new CharArrayWriter()) {  | 
62 |  | -                    int c;  | 
63 |  | -                    while ((c = stdinReader.read()) != -1) {  | 
64 |  | -                        if ((char) c == '\r' || (char) c == '\n') {  | 
65 |  | -                            break;  | 
66 |  | -                        }  | 
67 |  | -                        writer.write((char) c);  | 
68 |  | -                    }  | 
69 |  | -                    return writer.toCharArray();  | 
70 |  | -                }  | 
71 |  | -            };  | 
72 |  | -            closeable = stdinReader;  | 
73 |  | -        } else {  | 
74 |  | -            valueSupplier = s -> terminal.readSecret("Enter value for " + s + ": ");  | 
75 |  | -            closeable = () -> {};  | 
76 |  | -        }  | 
 | 53 | +        final CheckedFunction<String, char[], IOException> valueSupplier = s -> {  | 
 | 54 | +            final String prompt;  | 
 | 55 | +            if (options.has(stdinOption)) {  | 
 | 56 | +                prompt = "";  | 
 | 57 | +            } else {  | 
 | 58 | +                prompt = "Enter value for " + s + ": ";  | 
 | 59 | +            }  | 
 | 60 | +            return terminal.readSecret(prompt);  | 
 | 61 | +        };  | 
77 | 62 | 
 
  | 
78 |  | -        try (closeable) {  | 
79 |  | -            for (final String setting : settings) {  | 
80 |  | -                if (keyStore.getSettingNames().contains(setting) && options.has(forceOption) == false) {  | 
81 |  | -                    if (terminal.promptYesNo("Setting " + setting + " already exists. Overwrite?", false) == false) {  | 
82 |  | -                        terminal.println("Exiting without modifying keystore.");  | 
83 |  | -                        return;  | 
84 |  | -                    }  | 
 | 63 | +        for (final String setting : settings) {  | 
 | 64 | +            if (keyStore.getSettingNames().contains(setting) && options.has(forceOption) == false) {  | 
 | 65 | +                if (terminal.promptYesNo("Setting " + setting + " already exists. Overwrite?", false) == false) {  | 
 | 66 | +                    terminal.println("Exiting without modifying keystore.");  | 
 | 67 | +                    return;  | 
85 | 68 |                 }  | 
 | 69 | +            }  | 
86 | 70 | 
 
  | 
87 |  | -                try {  | 
88 |  | -                    keyStore.setString(setting, valueSupplier.apply(setting));  | 
89 |  | -                } catch (final IllegalArgumentException e) {  | 
90 |  | -                    throw new UserException(ExitCodes.DATA_ERROR, e.getMessage());  | 
91 |  | -                }  | 
 | 71 | +            try {  | 
 | 72 | +                keyStore.setString(setting, valueSupplier.apply(setting));  | 
 | 73 | +            } catch (final IllegalArgumentException e) {  | 
 | 74 | +                throw new UserException(ExitCodes.DATA_ERROR, e.getMessage());  | 
92 | 75 |             }  | 
93 | 76 |         }  | 
94 | 77 | 
 
  | 
 | 
0 commit comments