src/Tools/Setup/isabelle/setup/Setup.java
author wenzelm
Sun, 11 Jul 2021 16:57:30 +0200
changeset 73963 59b6f0462086
parent 73962 5351719ab2a0
child 73985 eb7112f467a8
permissions -rw-r--r--
clarified modules; clarified messages; clarified return code;

/*  Title:      Tools/Setup/isabelle/setup/Setup.java
    Author:     Makarius

Isabelle setup tool: bootstrap from generic Java environment.
*/

package isabelle.setup;


class Setup
{
    private static void echo(String msg)
    {
        System.out.println(msg);
    }
    private static void echo_err(String msg)
    {
        System.err.println(msg);
    }
    private static void fail(String msg)
    {
        echo_err(msg);
        System.exit(2);
    }

    private static void check_args(boolean b)
    {
        if (!b) { fail("Bad command-line arguments"); }
    }

    public static void main(String[] args)
    {
        int n = args.length;
        check_args(n > 0);

        String op = args[0];
        try {
            switch (op) {
                case "build":
                    check_args(n == 1);
                    Build.build_components(false);
                    break;
                case "build_fresh":
                    check_args(n == 1);
                    Build.build_components(true);
                    break;
                case "classpath":
                    check_args(n == 1);
                    echo(Environment.join_standard_paths(Build.classpath()));
                    break;
                case "services":
                    check_args(n == 1);
                    for (String s : Build.services()) { echo(s); }
                    break;
                default:
                    fail("Bad setup operation " + Environment.quote(op));
                    break;
            }
        }
        catch (Throwable exn) {
            echo_err(Exn.print_error(exn));
            System.exit(Exn.return_code(exn, 2));
        }
    }
}