JEnable is structured as a single Java class in the default package to make it as easy to deploy as possible. It does not require anything in the classpath except the standard Java libraries. It has not been tested with JDK 1.1, but should be compatible.

The command line is as follows:

p>
java [-cp .] JEnable [-options] [path-list]

The "-cp ." parameter for the JVM is only required if the local directory is not on the default classpath (or with the directory the JEnable.class file is in in place of '.' if the file is not in the local directory).

Options are as follows:

p>
-bbackup directory tree with base directory as next argument. When this option is given each modified file (not including files which only have their extensions changed) is copied to a tree under the supplied base directory.
-ddisabled token list as next argument. Each token in the comma separated list which follows is disabled in the new configuration.
-eenabled token list as next argument. Each token in the comma separated list which follows is enabled in the new configuration.
-mmodified listing, list modified files as they're processed.
-ppreserve last modify timestamp on modified files. Modified files keep their previous last modify timestamps.
-qquiet execution, skip normal summary of files processed and modified for each path supplied.
-ttilde suffix for modified file backup. The original version of each modified file is renamed with a '~' appended to the original file name, within the original directory.
-vverbose listing, list all files as they're processed.

Multiple options may be concatenated together with a single leading hyphen, or can be listed separately.

The optional path list gives the paths to be matched for source files to be processed. The paths are in Ant-like form. They always use the forward slash '/' as the separator between directory names. Multiple paths can be supplied as a single argument with comma ',' separators between the paths. Each name in the path may include '*' wildcards, and the special directory pattern '**' matches any number of intervening directories. For instance, the path:

p>
"src/**/util/*"

matches every file name with "java" or "javx" extension in every subdirectory named "util" within the tree under the "src" directory.

If a path ends with a file extension, only files matching that extension (which may include wildcards) are matched by that path. Files with extensions ending in the tilde '~' character are not matched by wildcard characters, but can explicitly be named by a path and matched in that manner. If a path does not end with a file extension, only files with "java" and "javx" extensions will be matched.

Any number of paths may be given as arguments. If no paths are given, the program reads from standard input and writes to standard output for filter-type operation. On some systems it may be necessary to use quotes around the paths to avoid automatic path matching by the shell.

When supplied with a path list JEnable by default prints to standard output counts of files processed and modified for each path. Options allows silent execution, or listings of individual files modified or processed. If an error occurs in processing a source file all changes to that file are discarded and an error message is written to standard error.