HADOOP-8175. Add -p option to mkdir in FsShell. Contributed by Daryn Sharp

git-svn-id: https://svn.apache.org/repos/asf/hadoop/common/trunk@1301303 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
Tsz-wo Sze 2012-03-16 01:28:38 +00:00
parent 9b2a324ba5
commit 483ca92d9b
3 changed files with 18 additions and 5 deletions

View File

@ -376,6 +376,8 @@ Release 0.23.2 - UNRELEASED
HADOOP-8173. FsShell needs to handle quoted metachars. (Daryn Sharp via
szetszwo)
HADOOP-8175. Add -p option to mkdir in FsShell. (Daryn Sharp via szetszwo)
Release 0.23.1 - 2012-02-17
INCOMPATIBLE CHANGES

View File

@ -39,20 +39,26 @@ class Mkdir extends FsCommand {
}
public static final String NAME = "mkdir";
public static final String USAGE = "<path> ...";
public static final String USAGE = "[-p] <path> ...";
public static final String DESCRIPTION =
"Create a directory in specified location.";
"Create a directory in specified location.\n" +
" -p Do not fail if the directory already exists";
private boolean createParents;
@Override
protected void processOptions(LinkedList<String> args) {
CommandFormat cf = new CommandFormat(1, Integer.MAX_VALUE);
CommandFormat cf = new CommandFormat(1, Integer.MAX_VALUE, "p");
cf.parse(args);
createParents = cf.getOpt("p");
}
@Override
protected void processPath(PathData item) throws IOException {
if (item.stat.isDirectory()) {
throw new PathExistsException(item.toString());
if (!createParents) {
throw new PathExistsException(item.toString());
}
} else {
throw new PathIsNotDirectoryException(item.toString());
}
@ -60,6 +66,7 @@ class Mkdir extends FsCommand {
@Override
protected void processNonexistentPath(PathData item) throws IOException {
// TODO: should use createParents to control intermediate dir creation
if (!item.fs.mkdirs(item.path)) {
throw new PathIOException(item.toString());
}

View File

@ -526,7 +526,11 @@
<comparators>
<comparator>
<type>RegexpComparator</type>
<expected-output>^-mkdir &lt;path&gt; \.\.\.:( |\t)*Create a directory in specified location.( )*</expected-output>
<expected-output>^-mkdir \[-p\] &lt;path&gt; \.\.\.:( |\t)*Create a directory in specified location.( )*</expected-output>
</comparator>
<comparator>
<type>TokenComparator</type>
<expected-output>-p Do not fail if the directory already exists</expected-output>
</comparator>
</comparators>
</test>