Changed license to CC0
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / commandline / CLIHelper.java
1 /*
2  * Svjatoslav Commons - shared library of common functionality. Author: Svjatoslav Agejenko.
3  * This project is released under Creative Commons Zero (CC0) license.
4  */
5 package eu.svjatoslav.commons.commandline;
6
7 import java.io.BufferedReader;
8 import java.io.IOException;
9 import java.io.InputStreamReader;
10
11 /**
12  * Command-line interface helper.
13  */
14 public class CLIHelper {
15
16     /**
17      * Ask boolean value from user on command-line.
18      *
19      * @param prompt to show to the user
20      * @return <code>true</code> is user answered affirmative.
21      */
22     public static boolean askBoolean(final String prompt) {
23
24         final BufferedReader br = new BufferedReader(new InputStreamReader(
25                 System.in));
26
27         while (true)
28             try {
29                 System.out.print(prompt);
30
31                 String line = br.readLine();
32                 if (line != null) {
33                     final String userInput = line.toLowerCase();
34
35                     if ("y".equals(userInput) || "yes".equals(userInput)
36                             || "true".equals(userInput))
37                         return true;
38
39                     if ("n".equals(userInput) || "no".equals(userInput)
40                             || "false".equals(userInput))
41                         return false;
42                 }
43                 System.out
44                         .println("Invalid input. You shall enter y/yes/true or n/no/false.");
45             } catch (final IOException ioe) {
46                 ioe.printStackTrace();
47             }
48     }
49
50     /**
51      * Ask numerical long value from user on command-line.
52      *
53      * @param prompt to show to the user
54      * @return value given by user
55      */
56     public static long askLong(final String prompt) {
57
58         final BufferedReader br = new BufferedReader(new InputStreamReader(
59                 System.in));
60
61         while (true) {
62             System.out.print(prompt);
63
64             try {
65                 final String userInput = br.readLine();
66
67                 try {
68                     return Long.parseLong(userInput);
69                 } catch (final NumberFormatException e) {
70                     System.out.println("\nError: You shall enter an integer.");
71                 }
72             } catch (final IOException ioe) {
73                 ioe.printStackTrace();
74             }
75
76         }
77     }
78
79     /**
80      * Ask string value from user on command-line.
81      *
82      * @param prompt to show to the user
83      * @return value given by the user
84      */
85     public static String askString(final String prompt) {
86
87         final BufferedReader br = new BufferedReader(new InputStreamReader(
88                 System.in));
89
90         while (true) {
91             System.out.print(prompt);
92
93             try {
94                 return br.readLine();
95             } catch (final IOException ioe) {
96                 ioe.printStackTrace();
97             }
98
99         }
100     }
101
102 }