import java.util.ArrayList;
import java.util.List;

public class EksporData {
    public static void main(String[] args) {
        boolean verbose = false;
        String berkasKeluaran = null;
        String format = "csv";
        List<String> sumber = new ArrayList<>();

        boolean opsiSelesai = false;   // true setelah bertemu "--"
        int i = 0;
        while (i < args.length) {
            String a = args[i];
            if (opsiSelesai) {         // sisanya positional, apa pun bentuknya
                sumber.add(a);
                i++;
                continue;
            }
            switch (a) {
                case "-v", "--verbose" -> verbose = true;
                case "-o", "--output" -> {
                    if (i + 1 >= args.length) {
                        gagal("opsi " + a + " memerlukan nama berkas");
                    }
                    berkasKeluaran = args[++i];
                }
                case "--format" -> {
                    if (i + 1 >= args.length
                            || !List.of("csv", "json").contains(args[i + 1])) {
                        gagal("opsi --format memerlukan nilai csv atau json");
                    }
                    format = args[++i];
                }
                case "--" -> opsiSelesai = true;
                default -> {
                    if (a.startsWith("-")) {
                        gagal("opsi tidak dikenal: " + a);
                    }
                    sumber.add(a);
                }
            }
            i++;
        }

        System.out.println("verbose : " + verbose);
        System.out.println("keluaran: " + berkasKeluaran);
        System.out.println("format  : " + format);
        System.out.println("sumber  : " + sumber);
    }

    private static void gagal(String pesan) {
        System.err.println("Galat: " + pesan);
        System.err.println("Penggunaan: java EksporData.java "
                + "[-v] [-o BERKAS] [--format csv|json] SUMBER...");
        System.exit(2);
    }
}
