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());
}
}
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());
}
}
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());
}
}
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();
}
}
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);
}
}
Aggregations