import java.util.Map;
import java.util.TreeMap;

public class KonfigurasiDistribusi {

    // Dependency milik modul 'lib-internal' beserta konfigurasinya.
    private static final String[][] DEPS_LIB_INTERNAL = {
        {"jackson-databind", "api"},
        {"logback-classic",  "implementation"}
    };

    public static void main(String[] args) {
        // Bagian 1: version catalog sebagaimana tersimpan di libs.versions.toml
        Map<String, String> katalog = new TreeMap<>();
        katalog.put("jackson-databind", "com.fasterxml.jackson.core:jackson-databind:2.17.1");
        katalog.put("logback-classic",  "ch.qos.logback:logback-classic:1.5.6");

        System.out.println("== version catalog (gradle/libs.versions.toml) ==");
        for (Map.Entry<String, String> entri : katalog.entrySet()) {
            System.out.printf("%-16s -> %s%n", entri.getKey(), entri.getValue());
        }
        System.out.println();

        // Bagian 2: resolusi classpath proyek 'app' yang bergantung pada lib-internal
        System.out.println("proyek 'app' memakai implementation(project(\":lib-internal\"))");
        System.out.println();
        System.out.println("compileClasspath 'app' (saat menulis kode):");
        System.out.println("  lib-internal");
        for (String[] dep : DEPS_LIB_INTERNAL) {
            if (dep[1].equals("api")) {
                System.out.println("  " + dep[0] + "  (via api lib-internal)");
            }
        }
        System.out.println();
        System.out.println("runtimeClasspath 'app' (saat program berjalan):");
        System.out.println("  lib-internal");
        for (String[] dep : DEPS_LIB_INTERNAL) {
            System.out.println("  " + dep[0]);
        }
    }
}
