

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintStream;

public class CliInstall extends Install {

    private BufferedReader _in;
    private PrintStream _out;

    public CliInstall() {
        _out = System.out;
        _in = new BufferedReader(new InputStreamReader(System.in));
    }

    public void showStatus(String s) {
        _out.println(s);
    }

    public void showOptError(String s) {
        _out.println(s);
    }

    public void handleOptInfo(String s) {
        _out.println(s);
    }

    public void startOptCategory(String s) {
        _out.println("* " + s + "\n");
    }

    public void finishOptions() {
    }

    public void handleOption(int number, String question, String def, String type) {
        Object value;
        while (true) {
            String answer;
            _out.print(question + (def == null ? "" : (" [" + def + "]")) + ": ");
            answer = readLine();
            if ("".equals(answer) && def != null) {
                answer = def;
            }
            if (setOption(number, answer)) break;
        }
    }

    public boolean confirmOption(String question, boolean defaultYes) {
        _out.print(question);
        return readBool(defaultYes);
    }

    private String readLine() {
        try {
            return _in.readLine().trim();
        } catch (IOException ex) {
            ex.printStackTrace();
            System.exit(1);
            return null;
        }
    }

    private boolean readBool(boolean defaultYes) {
        String str = readLine().toLowerCase();
        if ("".equals(str)) return defaultYes;
        return "yes".equals(str) || "y".equals(str) || "true".equals(str) || "ok".equals(str) || "sure".equals(str)
               || "whatever".equals(str);
    }
}