Search in sources :

Example 1 with Justif

use of aQute.lib.justif.Justif in project bnd by bndtools.

the class bnd method _bnd.

/**
	 * Main command. This has options the bnd base options and will then run
	 * another command.
	 * 
	 * @param options
	 * @throws Exception
	 */
@Description("The swiss army tool for OSGi")
public void _bnd(bndOptions options) throws Exception {
    try {
        set(FAIL_OK, options.failok() + "");
        setExceptions(options.exceptions());
        setTrace(options.trace());
        if (options.trace()) {
            System.setProperty(DEFAULT_LOG_LEVEL_KEY, "trace");
        } else {
            System.setProperty(DEFAULT_LOG_LEVEL_KEY, "warn");
        }
        setPedantic(options.pedantic());
        if (options.base() != null)
            setBase(getFile(getBase(), options.base()));
        // And the properties
        for (Entry<String, String> entry : options._properties().entrySet()) {
            setProperty(entry.getKey(), entry.getValue());
        }
        CommandLine handler = options._command();
        List<String> arguments = options._arguments();
        // Rewrite command line to match jar commands and
        // handle commands that provide file names
        rewrite(arguments);
        logger.debug("rewritten {}", arguments);
        if (arguments.isEmpty()) {
            Justif f = new Justif(80, 20, 22, 72);
            handler.help(f.formatter(), this);
            err.append(f.wrap());
        } else {
            String cmd = arguments.remove(0);
            String help = handler.execute(this, cmd, arguments);
            if (help != null) {
                err.println(help);
            }
        }
        if (options.secret() != null) {
            password = options.secret();
            settings.load(password);
        }
    } catch (Throwable t) {
        while (t instanceof InvocationTargetException) t = t.getCause();
        exception(t, "%s", t);
    }
    out.flush();
    err.flush();
    if (ws != null)
        getInfo(ws);
    if (!check(options.ignore())) {
        System.err.flush();
        System.err.flush();
        Thread.sleep(1000);
        exitWithCode(getErrors().size());
    }
}
Also used : CommandLine(aQute.lib.getopt.CommandLine) Justif(aQute.lib.justif.Justif) InvocationTargetException(java.lang.reflect.InvocationTargetException) Description(aQute.lib.getopt.Description)

Example 2 with Justif

use of aQute.lib.justif.Justif in project bnd by bndtools.

the class AbstractConsoleApp method __main.

/**
	 * Initialize the repository and other global vars.
	 * 
	 * @param opts the options
	 * @throws IOException
	 */
@Description("")
public void __main(MainOptions opts) throws IOException {
    try {
        setExceptions(opts.exceptions());
        setTrace(opts.trace());
        setPedantic(opts.pedantic());
        if (opts.base() != null)
            setBase(IO.getFile(getBase(), opts.base()));
        else
            setBase(IO.work);
        if (opts.width() > 0)
            this.width = opts.width();
        CommandLine handler = opts._command();
        List<String> arguments = opts._arguments();
        if (arguments.isEmpty()) {
            Justif j = new Justif();
            Formatter f = j.formatter();
            handler.help(f, this);
            err.println(j.wrap());
        } else {
            String cmd = arguments.remove(0);
            String help = handler.execute(this, cmd, arguments);
            if (help != null) {
                err.println(help);
            }
        }
    } catch (InvocationTargetException t) {
        Throwable tt = t;
        while (tt instanceof InvocationTargetException) tt = ((InvocationTargetException) tt).getTargetException();
        exception(tt, "%s", tt);
    } catch (Throwable t) {
        exception(t, "Failed %s", t);
    } finally {
        // Check if we need to wait for it to finish
        if (opts.key()) {
            System.out.println("Hit a key to continue ...");
            System.in.read();
        }
    }
    if (!check(opts.failok())) {
        System.exit(getErrors().size());
    }
}
Also used : CommandLine(aQute.lib.getopt.CommandLine) Justif(aQute.lib.justif.Justif) Formatter(java.util.Formatter) InvocationTargetException(java.lang.reflect.InvocationTargetException) Description(aQute.lib.getopt.Description)

Example 3 with Justif

use of aQute.lib.justif.Justif in project bnd by bndtools.

the class Main method _jpm.

/**
	 * Initialize the repository and other global vars.
	 * 
	 * @param opts the options
	 * @throws IOException
	 */
@Description("Just Another Package Manager for Java (\"jpm help jpm\" to see a list of global options)")
public void _jpm(JpmOptions opts) throws IOException {
    try {
        setExceptions(opts.exceptions());
        setTrace(opts.trace());
        setPedantic(opts.pedantic());
        Platform platform = Platform.getPlatform(this, opts.os());
        if (opts.base() != null)
            base = IO.getFile(base, opts.base());
        if (opts.settings() != null) {
            settings = new Settings(opts.settings());
            logger.debug("Using settings file: {}", opts.settings());
        } else {
            settings = new Settings(platform.getConfigFile());
            logger.debug("Using settings file: {}", platform.getConfigFile());
        }
        File homeDir;
        File binDir;
        String home = settings.get(JPM_CONFIG_HOME);
        String bin = settings.get(JPM_CONFIG_BIN);
        if (opts.home() != null) {
            logger.debug("home set");
            homeDir = IO.getFile(base, opts.home());
            binDir = new File(homeDir, "bin");
        } else if (opts.user()) {
            logger.debug("user set");
            homeDir = platform.getLocal();
            binDir = new File(homeDir, "bin");
        } else if (!opts.global() && home != null) {
            logger.debug("global or in settings");
            homeDir = new File(home);
            binDir = new File(bin);
        } else {
            logger.debug("default");
            homeDir = platform.getGlobal();
            binDir = platform.getGlobalBinDir();
        }
        logger.debug("home={}, bin={}", homeDir, binDir);
        if (opts.bindir() != null) {
            logger.debug("bindir set");
            binDir = new File(opts.bindir());
            if (!binDir.isAbsolute())
                binDir = new File(base, opts.bindir());
            binDir = binDir.getAbsoluteFile();
        } else if (bin != null && !opts.user() && !opts.global()) {
            binDir = new File(bin);
        }
        logger.debug("home={}, bin={}", homeDir, binDir);
        url = opts.library();
        if (url == null)
            url = settings.get("library.url");
        jpm = new JustAnotherPackageManager(this, platform, homeDir, binDir);
        platform.setJpm(jpm);
        jpm.setLibrary(url == null ? null : new URI(url));
        try {
            this.options = opts;
            if (opts.xtesting())
                jpm.setUnderTest();
            CommandLine handler = opts._command();
            List<String> arguments = opts._arguments();
            if (arguments.isEmpty()) {
                Justif j = new Justif();
                Formatter f = j.formatter();
                handler.help(f, this);
                err.println(j.wrap());
            } else {
                String cmd = arguments.remove(0);
                String help = handler.execute(this, cmd, arguments);
                if (help != null) {
                    err.println(help);
                }
            }
            if (options.width() > 0)
                this.width = options.width();
        } finally {
            jpm.close();
        }
    } catch (InvocationTargetException t) {
        Throwable tt = t;
        while (tt instanceof InvocationTargetException) tt = ((InvocationTargetException) tt).getTargetException();
        exception(tt, "%s", tt);
    } catch (Throwable t) {
        exception(t, "Failed %s", t);
    } finally {
        // Check if we need to wait for it to finish
        if (opts.key()) {
            System.out.println("Hit a key to continue ...");
            System.in.read();
        }
    }
    if (!check(opts.failok())) {
        System.exit(getErrors().size());
    }
}
Also used : JustAnotherPackageManager(aQute.jpm.lib.JustAnotherPackageManager) CommandLine(aQute.lib.getopt.CommandLine) Platform(aQute.jpm.platform.Platform) Justif(aQute.lib.justif.Justif) Formatter(java.util.Formatter) RandomAccessFile(java.io.RandomAccessFile) File(java.io.File) URI(java.net.URI) Settings(aQute.lib.settings.Settings) InvocationTargetException(java.lang.reflect.InvocationTargetException) Description(aQute.lib.getopt.Description)

Example 4 with Justif

use of aQute.lib.justif.Justif in project bnd by bndtools.

the class Main method _update.

@Description("Perform updates for installed commands and services")
public void _update(UpdateOptions opts) throws Exception {
    if (!jpm.hasAccess()) {
        error("No write acces, might require administrator or root privileges (sudo in *nix)");
        return;
    }
    ArrayList<String> refs = new ArrayList<String>();
    for (CommandData data : jpm.getCommands()) {
        refs.add(data.name);
    }
    for (ServiceData data : jpm.getServices()) {
        refs.add(data.name);
    }
    ArrayList<UpdateMemo> notFound = new ArrayList<JustAnotherPackageManager.UpdateMemo>();
    ArrayList<UpdateMemo> upToDate = new ArrayList<JustAnotherPackageManager.UpdateMemo>();
    ArrayList<UpdateMemo> toUpdate = new ArrayList<JustAnotherPackageManager.UpdateMemo>();
    ArrayList<CommandData> datas = new ArrayList<CommandData>();
    if (opts._arguments().size() == 0) {
        datas.addAll(jpm.getCommands());
        datas.addAll(jpm.getServices());
    } else {
        for (String pattern : opts._arguments()) {
            Glob glob = new Glob(pattern);
            for (String name : refs) {
                if (glob.matcher(name).matches()) {
                    CommandData data = jpm.getCommand(name);
                    if (data == null) {
                        Service service = jpm.getService(name);
                        if (service != null) {
                            data = service.getServiceData();
                        }
                    }
                    if (data != null) {
                        datas.add(data);
                    }
                }
            }
        }
    }
    for (CommandData data : datas) {
        jpm.listUpdates(notFound, upToDate, toUpdate, data, opts.staged());
    }
    if (opts.all() || opts._arguments().size() > 0) {
        for (UpdateMemo memo : toUpdate) {
            jpm.update(memo);
        }
        out.format("%d command(s) updated%n", toUpdate.size());
    } else {
        Justif justif = new Justif(100, 20, 50);
        StringBuilder sb = new StringBuilder();
        Formatter f = new Formatter(sb);
        if (upToDate.size() > 0) {
            f.format("Up to date:%n");
            for (UpdateMemo memo : upToDate) {
                if (memo.current instanceof ServiceData) {
                    f.format(" - %s (service) \t0- %s%n", memo.current.name, memo.current.version);
                } else {
                    f.format(" - %s \t0- %s%n", memo.current.name, memo.current.version);
                }
            }
            f.format("%n");
        }
        if (toUpdate.size() > 0) {
            f.format("Update available:%n");
            for (UpdateMemo memo : toUpdate) {
                if (memo.current instanceof ServiceData) {
                    f.format(" - %s (service) \t0- %s \t1-> %s%n", memo.current.name, memo.current.version, memo.best.version);
                } else {
                    f.format(" - %s \t0- %s \t1-> %s%n", memo.current.name, memo.current.version, memo.best.version);
                }
            }
            f.format("%n");
        }
        if (notFound.size() > 0) {
            if (opts.staged()) {
                f.format("Information not found (local install ?):%n");
            } else {
                f.format("Information not found (try including staging versions with the --staged (-s) flag)%n");
            }
            for (UpdateMemo memo : notFound) {
                if (memo.current instanceof ServiceData) {
                    f.format(" - %s (service)%n", memo.current.name);
                } else {
                    f.format(" - %s%n", memo.current.name);
                }
            }
        }
        if (toUpdate.size() > 0) {
            f.format("%nIn order to apply all possible updates, run jpm update again with the --all (or -a) flag.%n");
        }
        f.flush();
        justif.wrap(sb);
        out.println(sb.toString());
        f.close();
    }
}
Also used : JustAnotherPackageManager(aQute.jpm.lib.JustAnotherPackageManager) Justif(aQute.lib.justif.Justif) Formatter(java.util.Formatter) ArrayList(java.util.ArrayList) UpdateMemo(aQute.jpm.lib.JustAnotherPackageManager.UpdateMemo) Service(aQute.jpm.lib.Service) ServiceData(aQute.jpm.lib.ServiceData) Glob(aQute.libg.glob.Glob) CommandData(aQute.jpm.lib.CommandData) Description(aQute.lib.getopt.Description)

Example 5 with Justif

use of aQute.lib.justif.Justif in project bnd by bndtools.

the class Main method printPrograms.

// void print(Iterable<RevisionRef> revisions) {
// for (RevisionRef r : revisions) {
// out.printf("%-40s %s %s\n", jpm.getCoordinates(r),
// Hex.toHexString(r._id), (r.description == null ? ""
// : r.description));
// }
// }
void printPrograms(Iterable<? extends Program> programs) {
    Justif j = new Justif(120, 40, 42, 100);
    StringBuilder sb = new StringBuilder();
    try (Formatter f = new Formatter(sb)) {
        for (Program p : programs) {
            if (p.groupId.equals(Library.OSGI_GROUP) || p.groupId.equals(Library.SHA_GROUP))
                f.format("%s", p.artifactId);
            else
                f.format("%s:%s", p.groupId, p.artifactId);
            f.format("\t0-\t1");
            if (p.wiki != null && p.wiki.text != null)
                sb.append(p.wiki.text.replace('\n', '\f'));
            else if (p.last != null) {
                if (p.last.description != null)
                    sb.append(p.last.description.replace('\n', '\f'));
            }
            f.format("%n");
        }
        j.wrap(sb);
        out.println(sb);
    }
}
Also used : Program(aQute.service.library.Library.Program) Justif(aQute.lib.justif.Justif) Formatter(java.util.Formatter)

Aggregations

Justif (aQute.lib.justif.Justif)18 Formatter (java.util.Formatter)12 Description (aQute.lib.getopt.Description)8 CommandLine (aQute.lib.getopt.CommandLine)6 File (java.io.File)5 InvocationTargetException (java.lang.reflect.InvocationTargetException)4 Date (java.util.Date)3 LinkedHashMap (java.util.LinkedHashMap)3 CommandData (aQute.jpm.lib.CommandData)2 JustAnotherPackageManager (aQute.jpm.lib.JustAnotherPackageManager)2 MultiMap (aQute.lib.collections.MultiMap)2 IO.createTempFile (aQute.lib.io.IO.createTempFile)2 Settings (aQute.lib.settings.Settings)2 Revision (aQute.service.library.Library.Revision)2 RandomAccessFile (java.io.RandomAccessFile)2 ArrayList (java.util.ArrayList)2 HashMap (java.util.HashMap)2 Map (java.util.Map)2 TreeMap (java.util.TreeMap)2 JarFile (java.util.jar.JarFile)2