public class SimulasiFase {

    // Urutan fase lifecycle default Maven beserta ringkasan tugasnya.
    private static final String[] FASE = {
        "validate", "initialize", "generate-sources", "process-sources",
        "generate-resources", "process-resources", "compile", "process-classes",
        "generate-test-sources", "process-test-sources", "generate-test-resources",
        "process-test-resources", "test-compile", "process-test-classes", "test",
        "prepare-package", "package", "pre-integration-test", "integration-test",
        "post-integration-test", "verify", "install", "deploy"
    };

    private static final String[] TUGAS = {
        "memeriksa validitas proyek",
        "menyiapkan status build",
        "menghasilkan kode sumber tambahan",
        "memproses kode sumber",
        "menghasilkan resource",
        "menyalin resource ke target/classes",
        "mengompilasi src/main/java",
        "pascaproses bytecode utama",
        "menghasilkan kode uji tambahan",
        "memproses kode uji",
        "menghasilkan resource uji",
        "menyalin resource ke target/test-classes",
        "mengompilasi src/test/java",
        "pascaproses bytecode uji",
        "menjalankan pengujian unit",
        "menyiapkan kemasan final",
        "mengemas JAR/WAR di target/",
        "menyiapkan lingkungan integrasi",
        "menjalankan pengujian integrasi",
        "membersihkan lingkungan integrasi",
        "memeriksa hasil quality gate",
        "memasang artifact ke ~/.m2",
        "mengunggah artifact ke repositori remote"
    };

    public static void main(String[] args) {
        String target = args.length > 0 ? args[0] : "package";
        int batas = -1;
        for (int i = 0; i < FASE.length; i++) {
            if (FASE[i].equals(target)) {
                batas = i;
                break;
            }
        }
        if (batas < 0) {
            System.out.println("fase tidak dikenal: " + target);
            return;
        }

        System.out.println("$ mvn " + target);
        for (int i = 0; i <= batas; i++) {
            System.out.printf("%2d. %-24s - %s%n", i + 1, FASE[i], TUGAS[i]);
        }
        System.out.println();
        System.out.println("total fase yang dijalankan: " + (batas + 1));
    }
}
