src/share/classes/org/openjdk/jigsaw/cli/Librarian.java
Print this page
*** 42,52 ****
import org.openjdk.internal.joptsimple.*;
public class Librarian {
! private static JigsawModuleSystem jms
= JigsawModuleSystem.instance();
private static final File homeLibrary = Library.systemLibraryPath();
static class Create extends Command<SimpleLibrary> {
--- 42,52 ----
import org.openjdk.internal.joptsimple.*;
public class Librarian {
! private static final JigsawModuleSystem jms
= JigsawModuleSystem.instance();
private static final File homeLibrary = Library.systemLibraryPath();
static class Create extends Command<SimpleLibrary> {
*** 198,207 ****
--- 198,210 ----
noDry();
List<Manifest> mfs = new ArrayList<>();
while (hasArg())
mfs.add(Manifest.create(takeArg(), kf));
finishArgs();
+ if (mfs.isEmpty())
+ throw new Command.Exception("%s: no module-name specified",
+ command);
try {
lib.installFromManifests(mfs, strip);
} catch (ConfigurationException x) {
throw new Command.Exception(x);
} catch (IOException x) {
*** 292,301 ****
--- 295,338 ----
throw new Command.Exception(x);
}
}
}
+ static class Remove extends Command<SimpleLibrary> {
+ protected void go(SimpleLibrary lib)
+ throws Command.Exception
+ {
+ if (dry && force)
+ throw new Command.Exception("%s: specify only one of "
+ + "-n (--dry-run) or -f (--force)",
+ command);
+ List<ModuleId> mids = new ArrayList<ModuleId>();
+ try {
+ while (hasArg())
+ mids.add(jms.parseModuleId(takeArg()));
+ } catch (IllegalArgumentException x) {
+ throw new Command.Exception(x.getMessage());
+ }
+ boolean quiet = false; // ## Need -q
+ try {
+ List<IOException> excs;
+ if (force)
+ lib.removeForcibly(mids);
+ else
+ lib.remove(mids, dry);
+ } catch (ConfigurationException x) {
+ throw new Command.Exception(x);
+ } catch (IOException x) {
+ if (!quiet) {
+ for (Throwable t : x.getSuppressed())
+ out.format("Warning: %s%n", t.getMessage());
+ }
+ throw new Command.Exception(x);
+ }
+ }
+ }
+
static class DumpConfig extends Command<SimpleLibrary> {
protected void go(SimpleLibrary lib)
throws Command.Exception
{
noDry();
*** 486,496 ****
throw new Command.Exception(x);
}
}
}
! private static Map<String,Class<? extends Command<SimpleLibrary>>> commands
= new HashMap<>();
static {
commands.put("add-repo", AddRepo.class);
commands.put("config", Config.class);
--- 523,533 ----
throw new Command.Exception(x);
}
}
}
! private static final Map<String,Class<? extends Command<SimpleLibrary>>> commands
= new HashMap<>();
static {
commands.put("add-repo", AddRepo.class);
commands.put("config", Config.class);
*** 505,514 ****
--- 542,553 ----
commands.put("list", Commands.ListLibrary.class);
commands.put("ls", Commands.ListLibrary.class);
commands.put("preinstall", PreInstall.class);
commands.put("refresh", Refresh.class);
commands.put("reindex", ReIndex.class);
+ commands.put("remove", Remove.class);
+ commands.put("rm", Remove.class);
commands.put("repos", Repos.class);
}
private OptionParser parser;
*** 520,544 ****
private static OptionSpec<File> configFiles;
private void usage() {
out.format("%n");
out.format("usage: jmod add-repo [-i <index>] URL%n");
- out.format(" jmod extract <module-file> ...%n");
out.format(" jmod config [<module-id> ...]%n");
out.format(" jmod create [-L <library>] [-P <parent>]" +
" [--natlib <natlib>] [--natcmd <natcmd>] [--config <config>]%n");
out.format(" jmod del-repo URL%n");
out.format(" jmod dump-class <module-id> <class-name> <output-file>%n");
out.format(" jmod dump-config <module-id>%n");
out.format(" jmod identify%n");
out.format(" jmod install [--noverify] [-n] <module-id-query> ...%n");
out.format(" jmod install [--noverify] <module-file> ...%n");
out.format(" jmod install <classes-dir> <module-name> ...%n");
out.format(" jmod list [-v] [-p] [-R] [<module-id-query>]%n");
out.format(" jmod preinstall <classes-dir> <dst-dir> <module-name> ...%n");
out.format(" jmod refresh [-f] [-n] [-v]%n");
out.format(" jmod reindex [<module-id> ...]%n");
out.format(" jmod repos [-v]%n");
out.format("%n");
try {
parser.printHelpOn(out);
} catch (IOException x) {
--- 559,584 ----
private static OptionSpec<File> configFiles;
private void usage() {
out.format("%n");
out.format("usage: jmod add-repo [-i <index>] URL%n");
out.format(" jmod config [<module-id> ...]%n");
out.format(" jmod create [-L <library>] [-P <parent>]" +
" [--natlib <natlib>] [--natcmd <natcmd>] [--config <config>]%n");
out.format(" jmod del-repo URL%n");
out.format(" jmod dump-class <module-id> <class-name> <output-file>%n");
out.format(" jmod dump-config <module-id>%n");
+ out.format(" jmod extract <module-file> ...%n");
out.format(" jmod identify%n");
out.format(" jmod install [--noverify] [-n] <module-id-query> ...%n");
out.format(" jmod install [--noverify] <module-file> ...%n");
out.format(" jmod install <classes-dir> <module-name> ...%n");
out.format(" jmod list [-v] [-p] [-R] [<module-id-query>]%n");
out.format(" jmod preinstall <classes-dir> <dst-dir> <module-name> ...%n");
out.format(" jmod refresh [-f] [-n] [-v]%n");
out.format(" jmod reindex [<module-id> ...]%n");
+ out.format(" jmod remove [-f] [-n] [<module-id> ...]%n");
out.format(" jmod repos [-v]%n");
out.format("%n");
try {
parser.printHelpOn(out);
} catch (IOException x) {