package org.basex.core;
import static org.basex.core.Text.*;
/**
* This class defines the available command-line commands.
*
* @author BaseX Team 2005-12, BSD License
* @author Christian Gruen
*/
@SuppressWarnings("all")
public interface Commands {
/** Create commands. */
enum CmdCreate { DATABASE, DB, INDEX, USER, BACKUP, EVENT }
/** Info commands. */
enum CmdInfo { NULL, DATABASE, DB, INDEX, STORAGE }
/** Drop commands. */
enum CmdDrop { DATABASE, DB, INDEX, USER, BACKUP, EVENT }
/** Optimize commands. */
enum CmdOptimize { NULL, ALL }
/** Show commands. */
enum CmdShow { DATABASES, SESSIONS, USERS, BACKUPS, EVENTS }
/** Permission commands. */
enum CmdPerm { NONE, READ, WRITE, CREATE, ADMIN }
/** Index types. */
enum CmdIndex { TEXT, ATTRIBUTE, FULLTEXT, PATH }
/** Index types. */
enum CmdIndexInfo { NULL, TEXT, ATTRIBUTE, FULLTEXT, PATH, TAG, ATTNAME }
/** Alter types. */
enum CmdAlter { DATABASE, DB, USER }
/** Repo types. */
enum CmdRepo { INSTALL, DELETE, LIST }
/** Command definitions. */
enum Cmd {
ADD(HELPADD), ALTER(HELPALTER), CHECK(HELPCHECK), CLOSE(HELPCLOSE),
COPY(HELPCOPY), CREATE(HELPCREATE), CS(HELPCS), DELETE(HELPDELETE),
DROP(HELPDROP), EXIT(HELPEXIT), EXPORT(HELPEXPORT), FIND(HELPFIND),
FLUSH(HELPFLUSH), GET(HELPGET), GRANT(HELPGRANT), HELP(HELPHELP),
INFO(HELPINFO), KILL(HELPKILL), LIST(HELPLIST), OPEN(HELPOPEN),
OPTIMIZE(HELPOPTIMIZE), PASSWORD(HELPPASSWORD), RENAME(HELPRENAME),
REPLACE(HELPREPLACE), REPO(HELPREPO), RESTORE(HELPRESTORE),
RETRIEVE(HELPRETRIEVE), RUN(HELPRUN), SET(HELPSET),
SHOW(HELPSHOW), STORE(HELPSTORE), XQUERY(HELPXQUERY);
/** Help texts. */
private final String[] help;
/**
* Default constructor.
* @param h help texts, or {@code null} if command is hidden.
*/
Cmd(final String... h) {
help = h;
}
/**
* Returns a help string.
* @param detail show details
* @param wiki print wiki format
* @return string
*/
public final String help(final boolean detail, final boolean wiki) {
final StringBuilder sb = new StringBuilder();
if(wiki) {
wiki(sb);
} else {
if(help == null) {
if(detail) sb.append(NOHELP).append(NL);
} else {
sb.append(this + " " + help[0] + NL + " " + help[1] + NL);
if(detail) sb.append(NL + help[2] + NL);
}
}
return sb.toString();
}
/**
* Returns a help string in the Wiki format.
* @param sb string builder
*/
private void wiki(final StringBuilder sb) {
if(help == null) return;
sb.append("===" + this + "===" + NL + NL);
sb.append("'''<code>" + this + ' ' + help[0] + "</code>'''" + NL + NL);
for(String s : help[2].split(NL)) {
if(s.startsWith("- ")) {
s = s.replaceAll("^- (.*?)(:|$)", "* <code>$1</code>$2");
} else {
s = s.replaceAll("^ ", ":");
s = s.replaceAll("\\[", "<code>[").replaceAll("\\]", "]</code>");
}
sb.append(s).append(NL);
}
sb.append(NL);
}
}
}