Author: szetszwo Date: Fri Mar 16 01:28:38 2012 New Revision: 1301303 URL: http://svn.apache.org/viewvc?rev=1301303&view=rev Log: HADOOP-8175. Add -p option to mkdir in FsShell. Contributed by Daryn Sharp
Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/shell/Mkdir.java hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/resources/testConf.xml Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt?rev=1301303&r1=1301302&r2=1301303&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/CHANGES.txt Fri Mar 16 01:28:38 2012 @@ -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 Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/shell/Mkdir.java URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/shell/Mkdir.java?rev=1301303&r1=1301302&r2=1301303&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/shell/Mkdir.java (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/main/java/org/apache/hadoop/fs/shell/Mkdir.java Fri Mar 16 01:28:38 2012 @@ -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()); } Modified: hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/resources/testConf.xml URL: http://svn.apache.org/viewvc/hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/resources/testConf.xml?rev=1301303&r1=1301302&r2=1301303&view=diff ============================================================================== --- hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/resources/testConf.xml (original) +++ hadoop/common/trunk/hadoop-common-project/hadoop-common/src/test/resources/testConf.xml Fri Mar 16 01:28:38 2012 @@ -526,7 +526,11 @@ <comparators> <comparator> <type>RegexpComparator</type> - <expected-output>^-mkdir <path> \.\.\.:( |\t)*Create a directory in specified location.( )*</expected-output> + <expected-output>^-mkdir \[-p\] <path> \.\.\.:( |\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>