Create pgjindent for java.
authorBruce Momjian
Fri, 7 Sep 2001 21:25:44 +0000 (21:25 +0000)
committerBruce Momjian
Fri, 7 Sep 2001 21:25:44 +0000 (21:25 +0000)
src/tools/pgindent/README
src/tools/pgindent/pgindent
src/tools/pgindent/pgjindent [new file with mode: 0755]

index 5a5f4e1a776f88c13ab05e4a118af3e79155e8a4..18fe4b27ee70905d4f2ecaba8a29f148a76bbc0e 100644 (file)
@@ -30,3 +30,9 @@ We get the list of typedef's included in pgindent by running:
 Make sure to do the pgsql/bin directory, and the src/interfaces/odbc
 directory.  Merge the output of these and remove duplicates.
 
+---------------------------------------------------------------------------
+
+For java, we use astyle, http://astyle.sourceforge.net/, with the
+following options:
+
+   find . -name '*.java' -type f -print | xargs -n100 pgjindent
index f316781e3328e356ef1f8c50c6c64438a3c038c1..72c4ecc917113c24f0285a820b23494105d5b5b5 100755 (executable)
@@ -24,7 +24,7 @@ fi
 
 for FILE
 do
-   cat $FILE |
+   cat "$FILE" |
 # convert // comments to /* */
    sed 's;^\([     ]*\)//\(.*\)$;\1/* \2 */;g' |
 # mark some comments for special treatment later
@@ -1319,7 +1319,7 @@ int   pgindent_func_no_var_fix;\
 # add space after comments that start on tab stops
    sed 's,;\(/\*.*\*/\)$,; \1,' |
 # work around #else indenting next line if #ifdef defines variables at top
-# work around case misindenting function has no variables defined
+# work around misindenting of function with no variables defined
    awk '
    {
        if ($0 ~ "^[    ]*int[  ]*pgindent_func_no_var_fix;")
@@ -1329,6 +1329,7 @@ int   pgindent_func_no_var_fix;\
        }
        else    print $0;
    }' |
+# remove tabs and retab with four spaces
    detab -t8 -qc |
    entab -t4 -qc |
 # move trailing * in function return type
@@ -1459,7 +1460,7 @@ int   pgindent_func_no_var_fix;\
        }
        else    print $0;
    }' |
-   cat >/tmp/$$ && cat /tmp/$$ >$FILE
+   cat >/tmp/$$ && cat /tmp/$$ >"$FILE"
 done
 
 # The 'for' loop makes these backup files useless so delete them
diff --git a/src/tools/pgindent/pgjindent b/src/tools/pgindent/pgjindent
new file mode 100755 (executable)
index 0000000..40cbf3d
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/sh
+
+trap "rm -f /tmp/$$ /tmp/$$a" 0 1 2 3 15
+entab /dev/null
+if [ "$?" -ne 0 ]
+then   echo "Go to the src/tools/entab directory and do a 'make' and 'make install'." >&2
+   echo "This will put the 'entab' command in your path." >&2
+   echo "Then run $0 again."
+   exit 1
+fi
+astyle --version /dev/null 2>&1
+if [ "$?" -eq 0 ]
+then   echo "You do not appear to have 'astyle' installed on your system." >&2
+   exit 1
+fi
+
+for FILE
+do
+   astyle --style=java -b -p -j < "$FILE" >/tmp/$$ 2>/tmp/$$a
+   if [ "$?" -ne 0 -o -s /tmp/$$a ]
+   then    echo "$FILE"
+       cat /tmp/$$a
+   fi
+   cat /tmp/$$ |
+   entab -t4 -qc |
+   cat >/tmp/$$a && cat /tmp/$$a >"$FILE"
+done