You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by sz...@apache.org on 2012/03/16 02:28:39 UTC

svn commit: r1301303 - in /hadoop/common/trunk/hadoop-common-project/hadoop-common: CHANGES.txt src/main/java/org/apache/hadoop/fs/shell/Mkdir.java src/test/resources/testConf.xml

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 &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>