Editing Zz.unkrig.de

Jump to navigation Jump to search
Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then publish the changes below to finish undoing the edit.

Latest revision Your text
Line 3: Line 3:
A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files. They can even disassemble Java <code>.class</code> files on-the fly and operate on the disassembly.
A set of command-line tools that handle not only directories and files, but also archive and compressed files, and even nested archive files. They can even disassemble Java <code>.class</code> files on-the fly and operate on the disassembly.


== Tool Documentation ==
== Tool documentation ==


=== zzdiff ===
=== zzdiff ===
Line 9: Line 9:
Computes the differences between files, directory trees, archive file entries, compressed files and prints them in various formats; widely compatible with the UNIX&trade; DIFF command line utility.
Computes the differences between files, directory trees, archive file entries, compressed files and prints them in various formats; widely compatible with the UNIX&trade; DIFF command line utility.


Read the [http://zz.unkrig.de/maindoc/zz-diff/Main.main(String%5b%5d).html command line tool documentation].
Read the [http://zz.unkrig.de/maindoc/zzdiff.html command line tool documentation].


Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzdiff.html ANT task documentation].
Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzdiff.html ANT task documentation].
Line 17: Line 17:
Finds files in directory trees and entries in archive files by various criteria; widely compatible with the UNIX&trade; FIND command line utility.
Finds files in directory trees and entries in archive files by various criteria; widely compatible with the UNIX&trade; FIND command line utility.


Read the [http://zz.unkrig.de/maindoc/zz-find/Main.main(String%5b%5d).html command line tool documentation] (or the [http://zz.unkrig.de/maindoc/zz-find/Main.main(String%5b%5d).txt plain text version]).
Read the [http://zz.unkrig.de/maindoc/zzfind.html command line tool documentation].


Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzfind.html ANT task documentation].
Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzfind.html ANT task documentation].
Line 25: Line 25:
Finds lines in files in directory trees and in entries in archive files by regular expressions; widely compatible with the UNIX&trade; GREP command line utility.
Finds lines in files in directory trees and in entries in archive files by regular expressions; widely compatible with the UNIX&trade; GREP command line utility.


Read the [http://zz.unkrig.de/maindoc/zz-grep/Main.main(String%5b%5d).html command line tool documentation].
Read the [http://zz.unkrig.de/maindoc/zzgrep.html command line tool documentation].


Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzgrep.html ANT task documentation].
Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzgrep.html ANT task documentation].
=== zzpack ===
Creates an archive file from a set of given files, directories, and archive entries.
Read the [http://zz.unkrig.de/maindoc/zz-pack/Main.main(String%5b%5d).html command line tool documentation].
Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzpack.html ANT task documentation].


=== zzpatch ===
=== zzpatch ===
Line 41: Line 33:
Modifies the contents of files in directory trees and of entries in archive files by various criteria; widely compatible with the UNIX&trade; PATCH command line utility.
Modifies the contents of files in directory trees and of entries in archive files by various criteria; widely compatible with the UNIX&trade; PATCH command line utility.


Read the [http://zz.unkrig.de/maindoc/zz-patch/Main.main(String%5b%5d).html command line tool documentation].
Read the [http://zz.unkrig.de/maindoc/zzpatch.html command line tool documentation].


Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzpatch.html ANT task documentation].
Read the [http://zz.unkrig.de/antdoc/index.html?tasks/zzpatch.html ANT task documentation].


== Download and Installation ==
== Resources ==
 
=== Runnable JAR files ===
 
<html>
  <form method="get" action="https://repository.sonatype.org/service/local/artifact/maven/redirect">
    <input type="hidden" name="r" value="central-proxy" />
    <input type="hidden" name="g" value="de.unkrig.zz" />
    <input type="hidden" name="v" value="LATEST" />
    <input type="hidden" name="c" value="jar-with-dependencies" />
 
    Latest version of
    <select name="a">
      <option>zz-diff</option>
      <option>zz-find</option>
      <option>zz-grep</option>
      <option>zz-pack</option>
      <option>zz-patch</option>
    </select>
    <input type="submit" value="DOWNLOAD" />
  </form>
</html>
 
=== MS WINDOWS executables ===
 
<html>
  <form method="get" action="https://repository.sonatype.org/service/local/artifact/maven/redirect">
    <input type="hidden" name="r" value="central-proxy" />
    <input type="hidden" name="g" value="de.unkrig.zz" />
    <input type="hidden" name="v" value="LATEST" />
    <input type="hidden" name="p" value="exe" />
 
    Latest version of
    <select name="a">
      <option>zz-diff</option>
      <option>zz-find</option>
      <option>zz-grep</option>
      <option>zz-pack</option>
      <option>zz-patch</option>
    </select>
    <input type="submit" value="DOWNLOAD" />
  </form>
</html>
 
Notice: These executables require an installed JRE; at least version 1.6. They will complain if they cannot find a suitable JRE, and give advice how to get things running.
 
=== APACHE ANT libraries ===
 
<html>
  <form method="get" action="https://repository.sonatype.org/service/local/artifact/maven/redirect">
    <input type="hidden" name="r" value="central-proxy" />
    <input type="hidden" name="g" value="de.unkrig.zz" />
    <input type="hidden" name="v" value="LATEST" />
    <input type="hidden" name="c" value="jar-with-dependencies" />
 
    Latest version of
    <select name="a">
      <option value="zz-all">All-in-one</option>
      <option>zz-diff</option>
      <option>zz-find</option>
      <option>zz-grep</option>
      <option>zz-pack</option>
      <option>zz-patch</option>
    </select>
    <input type="submit" value="DOWNLOAD" />
  </form>
</html>
 
To use the ANT types, insert one of the following lines in your build script:
 
  <taskdef resource="de/unkrig/zz/zz-diff.xml"  classpath="path/to/zz-diff-x.y.z-jar-with-dependencies.jar"  />
  <taskdef resource="de/unkrig/zz/zz-find.xml"  classpath="path/to/zz-find-x.y.z-jar-with-dependencies.jar"  />
  <taskdef resource="de/unkrig/zz/zz-grep.xml"  classpath="path/to/zz-grep-x.y.z-jar-with-dependencies.jar"  />
  <taskdef resource="de/unkrig/zz/zz-pack.xml"  classpath="path/to/zz-pack-x.y.z-jar-with-dependencies.jar"  />
  <taskdef resource="de/unkrig/zz/zz-patch.xml" classpath="path/to/zz-patch-x.y.z-jar-with-dependencies.jar" />
 
If you use more than one of the tools in your build script, it is more efficient to use the "all-in-one" JAR file:
 
  <taskdef resource="de/unkrig/zz/zz-all.xml" classpath="path/to/zz-all-x.y.z-jar-with-dependencies.jar" />


=== Java Library ===
[https://svn.code.sf.net/p/loggifier/code/de.unkrig.zz/trunk/ Source code]


The ZZ tools also have a public Java API that can be used from by any Java application. You can either download and use this JAR file, or, if you're using MAVEN, put in your "pom.xml" file:
[http://search.maven.org/                                    Binaries]


<dependency>
[http://zz.unkrig.de/javadoc/                                 JAVADOC]
    <groupId>de.unkrig.zz</groupId>
    <artifactId>zz-diff</artifactId> <!-- Or zz-find, zz-grep, zz-pack, zz-patch. -->
    <version>x.y.z</version>
</dependency>


Here is the API documentation:
These tools make heavy use of [http://commons.unkrig.de/ commons.unkrig.de].
 
* [http://zz.unkrig.de/javadoc/zz-diff/ zz-diff API documentation]
* [http://zz.unkrig.de/javadoc/zz-find/ zz-find API documentation]
* [http://zz.unkrig.de/javadoc/zz-grep/ zz-grep API documentation]
* [http://zz.unkrig.de/javadoc/zz-pack/ zz-pack API documentation]
* [http://zz.unkrig.de/javadoc/zz-patch/ zz-patch API documentation]
 
== Resources ==
 
<html>
  <form method="get" action="https://repository.sonatype.org/service/local/artifact/maven/redirect">
    <input type="hidden" name="r" value="central-proxy" />
    <input type="hidden" name="g" value="de.unkrig.zz" />
    <input type="hidden" name="v" value="LATEST" />
    <input type="hidden" name="c" value="sources" />
 
    Source code is available on <a href="https://github.com/aunkrig/zz">GITHUB</a>,
    and also through MAVEN:
    <select name="a">
      <option>zz-diff</option>
      <option>zz-find</option>
      <option>zz-grep</option>
      <option>zz-pack</option>
      <option>zz-patch</option>
    </select>
    <input type="submit" value="DOWNLOAD" />
  </form>
</html>
 
The ZZ tools make heavy use of [http://commons.unkrig.de/ commons.unkrig.de].


== License ==
== License ==
Line 173: Line 53:
== Change Log ==
== Change Log ==


; Changes in version 1.3.11-SNAPSHOT (not yet released):
; Changes in version 1.3.0, 2016-10-30
:* -
 
; Changes in version 1.3.10, 2022-12-29:
:* Changed handling of "-" to ResourceProcessings.STDIN_URL.
:* ZZDIFF can now handle "-" (stdin) as one of its two inputs.
:* ZZPATCH: --substitute: Removed the concept of the "replacement mode", because the extended replacement syntax just implements the "literal" and "expression" replacement modes.
:* ZZPACK: Added the "--rename" feature.
:* ZZPATCH: Substitution: Replacement mode "REPLACEMENT_STRING" now supports "ext syntax", i.e. "${...}" embedded expressions.
:* ZZPATCH: ExitException message is now "Printers.info()"ed instead of "Printers.verbose()"ed.
:* ZZFIND: Greatly simplified the computation of the expression variables.
:* ZZFIND: Fixed an exception when finding in STDIN: STDIN does not have the properties "readable", "writable" and "executable".
:* ZZFIND: Class file version can now be accessed by "cf.javaVersion".
:* ZZFIND: MAINDOC: Documented the "archiveEntry" variable.
:* ZZGREP: Moved "Grep.lineCounter()" to "ConsumerUtil".
:* ZZGREP: Eliminated the 65536-characters-per-line limit -- finds and counts matches now also in very long lines.
:* ZZPATCH: Added the "--assert-count" condition for updates/substitution replacements/patch hunks/removals/renamings/additions.
:* ZZFIND: Learned that the various ZIP archive libraries return random values for "ZipEntry.getMethod()" and "ZipEntry.getCrc()", thus made the test cases tolerant against these.
:* ZZFIND: Don't print a stack trace on predicate parse errors; only print the error message.
:* ZZPATCH: Added command line options for archive decryption: --7z-input-file-password --zip-input-file-password --password
:* ZZPATCH: Added command line options for archive compression and encryption: --zip-output-entry-compression-level --zip-output-file-password --zip-output-file-encryption-method
:* ZZFIND: Added short command line option for archive decryption: --password
:* ZZFIND: Added the "-version" command line option.
:* ZZGREP: Added command line options "--input-encoding" and "--output-encoding". (Previously, the output encoding was not configurable.)
:* ZZGREP: Fixed the printing of "--" separator lines between context-grep chunks.
:* ZZFIND: MAINDOC: Documented priority of operators.
:* ZZFIND: CatAction: Entries that have no input stream (e.g. directories or directory archive entries) are silently ignored, because that is practical: Otherwise, you'd always have to put "-type normal*" right before the "-cat" action.
:* ZZFIND: -copy action: Now ignore entries that have no input stream (e.g. directories or directory archive entries), because that is practical: Otherwise, you'd always have to put "-type normal*" right before the "-copy" action.
:* ZZFIND: -copy action: Attempt to restore each file's "last modification date", too.
:* ZZPATCH: Unified DIFF format: Some DIFF tools (namely GNU diffutils 3.5) put a TAB character (instead of a SPACE) between the file name and the date.
:* ZZFIND: Added "--toFile" option to "-disassemble".
:* ZZFIND: Added new variable "archiveEntry".
:* ZZFIND: Added action "-java-class-file".
:* ZZFIND: Added expression variable "compressionMethod" (for archive entries).
 
; Changes in version 1.3.9, 2020-11-06:
:* Updated jdisasm to 1.0.6.
:* Updated de.unkrig.commons to 1.2.15.
:* Removed the generation of the "...-antlib.jar" file, because "...-jar-with-dependencies.jar" can be used as an ANTLIB as well.
:* Fixed the file type in the output of -ls.
:* Added expression variables "readable", "writable" and "executable".
:* Adapted to an incompatible API change in "commons-file" (all content processing was augmented with an optional "lastModifiedDate" parameter).
:* Fixed an NPE that occurred with 7Z archive entries that have NO modification date set.
:* ZZFIND now compiles with JDK 1.8 (before it was 1.6).
:* Major refactoring: Replaced "Mappings properties" with "Map<String, Function<Object, Object>> properties.
:* Implemented the new expression variables "_map", "_keys" and "_values".
:* Context diff: The "hunk separator line" ("--") was missing.
:* Actions that read the contents of a document (-cat, -copy, -disassemble, -digest, -checksum) didn't for "normal-file" documents.
:* "--nowarn", "--quiet", "--verbose" and "--debug" now not only configure the "Printers", but also "SimpleLogging".
:* Added the "--replacementMode" option which allows for more complex replacements than the java.util.regex.Matcher can offer
 
; Changes in version 1.3.8, 2019-10-09:
:* zzgrep: Implemented "-e".
:* zzgrep: Implemented "--byte-offset", "--with-path", "--no-path", "--label", "--line-number", "--after-context", "--before-context" and "--context".
:* <zzpatch> Ant task: "<substitution><regex>..." and "...<replacement>...": Property "replacement" was missing for "addText()".
:* Major refactoring of "zz.Find" - removed tons of copied code.
:* zzfind: Improved handling of corrupt archives and compressed contents.
 
; Changes in version 1.3.7, 2019-08-05:
:* In addition to "...-jar-with-dependencies.jar", generate a "...-antlib.jar" file, where the ANT classes are NOT included.
:* The "-copy" action now supports a "--append" (alias "-a") modifier.
:* Now using "ExpressionEvaluator.parseExt()".
:* Added "--printf" command line action.
:* Fixed the "line equivalence" and the "ignore" feature; both were accidentially broken with revision 6980 (affects only release 1.3.5).
:* The "zz-diff" command line tool now also accepts URLs on its command line.
:* "--verbose" had no effect; now it prints the names of files and archive entries that are searched.
 
; Changes in Version 1.3.6, 2018-07-24:
:* Added a test case for "zzpatch --substitute --iff".
:* Substitution conditions now support a new variable, "occurrence".
:* Added a "<condition>" subelement on the "<substitution>" element. This is useful, e.g., to replace only the FIRST match.
:* For conformance with GREP, exit with status 2 (not 1) on errors.
:* <zzfind>: Added the "<prune />" and "<delete />" subelements.
:* zzfind: Renamed option "--depth" to "--descendants-first" (and left the original as an alias).
:* <zzfind>: Renamed the depth="..." attribute to descendantsFirst="...".
:* Added the "-prune" and "-delete" actions.
:* Added "&&" and "-and" as aliases for "-a".
:* Added "||" and "-or" as aliases for "-o".
:* Added options "da-verbose", "da-source-directory" and "da-symbolic-labels".
:* Continue with next archive entry on IOException.
:* ZZGREP: When run with a list file-or-dirs, only every second file-or-dir was searched.
 
; Changes in version 1.3.4, 2017-02-03:
:* Added a workaround for: MS WINDOWS 7: Read-protected directory produces: isDirectory() => true canRead()    => true list()        => null listFiles()  => null (Caused NPEs.)
:* ZZDIFF: Bug fixed: Document DIFF was always UNIFIED, regardless of the document diff mode setting.
:* Change version of de.unkrig.commons from "1.2.6-SNAPSHOT" to "1.2.7-SNAPSHOT" (because THAT is the correct post-1.2.6 version).
:* Renamed "namePredicate" to "pathPredicate".
:* Replaced the "name=..." attribute with "path=...", and marked the old attribute as @deprecated.
:* The "pathPredicate" was missing from content processors.
:* Generate ANTDOC only for the "zz-all" module, not for "zz-(diff|find|grep|pack|patch)" individually. Saves on build time, and reduces redundant documentation.
 
; Changes in version 1.3.3, 2016-11-28:
:* Removed unnecessary dependency on "jdisasm".
 
:* Fixed the classpath for zz-all antdoc.
:* Added the "--no-recurse-subdirctories" command line option.
:* Extracted the "DOcumentDiff" class from the "Diff" class.
:* Added task attribute "recurseSubdirectories=false".
:* Added the "Diff.diff(path1, path2, stream1, stream2)" method.
 
; Changes in version 1.3.2, 2016-11-25:
:* Added test cases for ZZDIFF.
:* Added "Diff.execute(String path1, String path2, ...)" to allow for custom "path1" and "path2" strings when reporting differences.
:* Improved many "DiffException"s' messages.
:* Slightly clarified the wording of the license: Replaced "author" with "copyright holder and its contributors".
:* Include project name and version in APIDOC's "-header" and "-footer".
 
; Changes in version 1.3.1, 2016-11-07:
:* The JVM (sometimes) did not terminate when it is shut down orderly (i.e. "main()" returns or "System.exit()" is invoked).
:* Added the "launch4j" maven plugin that creates MS WINDOWS executables from the runnable JAR files.
:* Made the scope of the "ant" dependency "provided", so that the classes of "ant.jar" don't get into the "jar-with-dependencies".
:* Added JAVADOC "overview.html" files for the five zz tools.
:* ZZFIND: Made many methods and nested types PUBLIC, so they can be used via the Java API.
:* Moved ANTDOC generation from "zz-parent/build.ant" to "zz-parent/pom.xml".
:* Added "zz-all", which is an aggregation of the five ZZ tools.
 
; Changes in version 1.3.0, 2016-10-30:
:* ZZFIND, <zzfind>: Line separator was missing from the "LS" action.
:* ZZFIND, <zzfind>: Line separator was missing from the "LS" action.
:* ZZFIND, <zzfind>: Added the "-digest" and "-checksum" actions.
:* ZZFIND, <zzfind>: Added the "-digest" and "-checksum" actions.
Line 302: Line 66:
:* Switched from the old ANT build to MAVEN.
:* Switched from the old ANT build to MAVEN.


; Changes in version 1.2.5, 2016-02-12:
; Changes in version 1.2.5, 2016-02-12
:* ZZFIND, <zzfind>: Added the "depth" property.
:* ZZFIND, <zzfind>: Added the "depth" property.
:* ZZFIND, <zzfind>: Added the "comma operator", "-mtime", "-depth", "-minDepth" and "-maxDepth".
:* ZZFIND, <zzfind>: Added the "comma operator", "-mtime", "-depth", "-minDepth" and "-maxDepth".


; Changes in version 1.2.4, 2016-02-10:
; Changes in version 1.2.4, 2016-02-10
:* <zzpatch>: "condition=..." is now an attribute of the <patch> subelement, not the task.
:* <zzpatch>: "condition=..." is now an attribute of the <patch> subelement, not the task.
:* zzdiff: Added command line option "--normal".
:* zzdiff: Added command line option "--normal".
Line 314: Line 78:
:* ZZGREP: The "-quiet" command line option did not have any effect.
:* ZZGREP: The "-quiet" command line option did not have any effect.


; Changes in version 1.2.3, 2015-09-27:
; Changes in version 1.2.3, 2015-09-27
:* ZZFIND command line tool: Option "--look-into": Glob was compiled WITHOUT the WILDCARD|INCLUDES_EXCLUDES flag.
:* ZZFIND command line tool: Option "--look-into": Glob was compiled WITHOUT the WILDCARD|INCLUDES_EXCLUDES flag.


; Changes in version 1.2.2, 2015-09-27:
; Changes in version 1.2.2, 2015-09-27
:* ZZPATCH ant task: Removed attribute "memberName=..." from subelement "<add>", because the ant task does not traverse directories (opposed to the command line version), and thus adding members to directories is not possible.
:* ZZPATCH ant task: Removed attribute "memberName=..." from subelement "<add>", because the ant task does not traverse directories (opposed to the command line version), and thus adding members to directories is not possible.
:* ZZDIFF: Fixed some NPEs that occurred when files / entries are EXCLUDED.
:* ZZDIFF: Fixed some NPEs that occurred when files / entries are EXCLUDED.
Line 323: Line 87:
:* Generate and publish HTML documentation for ANT tasks with ANTDOC.
:* Generate and publish HTML documentation for ANT tasks with ANTDOC.


; Changes in version 1.2.1, 2015-05-24:
; Changes in version 1.2.1, 2015-05-24
:* FIND: Command line tool and ANT task now continue with next directory member on IOExceptions.
:* FIND: Command line tool and ANT task now continue with next directory member on IOExceptions.
:* DIFF: Added the "tokenization" configuration parameter, which allows for Java token-based DIFFing.
:* DIFF: Added the "tokenization" configuration parameter, which allows for Java token-based DIFFing.
Line 331: Line 95:
:* ZZFIND: Added the "<echo message=...>" and "<property name=... value=...>" actions.
:* ZZFIND: Added the "<echo message=...>" and "<property name=... value=...>" actions.


; Changes in version 1.2.0, 2015-04-30:
; Changes in version 1.2.0, 2015-04-30
:* "ArchiveFormatFactory" and "CompressionFormatFactory" now register "URLStreamHandler"s for all archive and compression formats, so these can be used as "protocols" of "java.net.URL", e.g. "zip:file:foo.zip!file.txt".
:* "ArchiveFormatFactory" and "CompressionFormatFactory" now register "URLStreamHandler"s for all archive and compression formats, so these can be used as "protocols" of "java.net.URL", e.g. "zip:file:foo.zip!file.txt".
:* Major refactoring of 'de.unkrig.commons.file.fileprocessing' and 'de.unkrig.commons.file.contentsprocessing'. Effectively, ZZGREP can now use these classes, because 'process()' now returns 'T'.  
:* Major refactoring of 'de.unkrig.commons.file.fileprocessing' and 'de.unkrig.commons.file.contentsprocessing'. Effectively, ZZGREP can now use these classes, because 'process()' now returns 'T'.  
Line 345: Line 109:
:* <zzdiff>: Replaced the "<exclude>" subelements with the "path=..." attribute, eliminating the unusual "negative" logic.  
:* <zzdiff>: Replaced the "<exclude>" subelements with the "path=..." attribute, eliminating the unusual "negative" logic.  


; Changes in version 1.1.0, 2014-10-25:
; Changes in version 1.1.0, 2014-10-25
:* zzpatch: No file arguments mean 'transform STDIN to STDOUT'.
:* zzpatch: No file arguments mean 'transform STDIN to STDOUT'.
:* zzpatch: Added 'conditions' for the 'substitute', 'replace', 'patch', 'remove', 'rename' and 'add' features.
:* zzpatch: Added 'conditions' for the 'substitute', 'replace', 'patch', 'remove', 'rename' and 'add' features.
Line 354: Line 118:
:* <zzgrep>: Removed the "dir=..." attribute.
:* <zzgrep>: Removed the "dir=..." attribute.


; Changes in version 1.0.11, 2014-04-12:
; Changes in version 1.0.11, 2014-04-12
:* ZZDIFF: Added option '-unchanged-files' resp. ANT task attribute 'reportUnchangedFiles="true"': Also report unchanged files.
:* ZZDIFF: Added option '-unchanged-files' resp. ANT task attribute 'reportUnchangedFiles="true"': Also report unchanged files.
:* ZZDIFF: Added '-zip' and '-nested-zip' command line options - aliases for '-z' and '-zz'.
:* ZZDIFF: Added '-zip' and '-nested-zip' command line options - aliases for '-z' and '-zz'.
Line 369: Line 133:
:* <zzgrep>: Runtime optimization: Now only the files to which at least one search applies are processed.
:* <zzgrep>: Runtime optimization: Now only the files to which at least one search applies are processed.


; Changes in version 1.0.10, 2014-03-22:
; Changes in version 1.0.10, 2014-03-22
:* ZZDIFF: Added option '-keep-going' resp. ANT task attribute 'keepGoing="true"': Report errors and continue with next file.
:* ZZDIFF: Added option '-keep-going' resp. ANT task attribute 'keepGoing="true"': Report errors and continue with next file.
    
    
; Changes in version 1.0.9, 2014-03-20:
; Changes in version 1.0.9, 2014-03-20
:* COMMONS.UTIL: Added the SIMPLELOGGING task that was missing from 'antlib.xml'.
:* COMMONS.UTIL: Added the SIMPLELOGGING task that was missing from 'antlib.xml'.
:* COMMONS.FILE: Inserted lots of logging.
:* COMMONS.FILE: Inserted lots of logging.
Line 381: Line 145:
:* ZZDIFF: Added diff mode 'EXIST', which is like diff mode 'QUIET' but ignores CONTENT differences.  
:* ZZDIFF: Added diff mode 'EXIST', which is like diff mode 'QUIET' but ignores CONTENT differences.  


; Changes in version 1.0.8, 2013-11-29:
; Changes in version 1.0.8, 2013-11-29
:* ZZDIFF: Absent file modes COMPARE_*_WITH_EMPTY: Added and deleted directories were counted as difference, although they shouldn't.
:* ZZDIFF: Absent file modes COMPARE_*_WITH_EMPTY: Added and deleted directories were counted as difference, although they shouldn't.


; Changes in version 1.0.7, 2013-11-26:
; Changes in version 1.0.7, 2013-11-26
:* The ZZ tools now live in ONE jar file; there is a new 'Main' class that forks into the various tools
:* The ZZ tools now live in ONE jar file; there is a new 'Main' class that forks into the various tools
:* Renamed the tasks from 'de.unkrig.zz.diff' to 'zzdiff'.
:* Renamed the tasks from 'de.unkrig.zz.diff' to 'zzdiff'.
Line 390: Line 154:
:* ZZDIFF: Added ANT task property 'property'.
:* ZZDIFF: Added ANT task property 'property'.


; Changes in version 1.0.6, 2013-10-02:
; Changes in version 1.0.6, 2013-10-02
:* ZZPATCH: '-patch' now preserves line separators (instead of silently replacing them with the default line separator).
:* ZZPATCH: '-patch' now preserves line separators (instead of silently replacing them with the default line separator).


; Changes in version 1.0.5, 2013-10-01:
; Changes in version 1.0.5, 2013-10-01
:* ZZDIFF: Added the 'encoding' attribute to the ant task.
:* ZZDIFF: Added the 'encoding' attribute to the ant task.
:* ZZFIND: Added the missing '<cat>' and '<ls>' actions to the ant task.
:* ZZFIND: Added the missing '<cat>' and '<ls>' actions to the ant task.
Line 403: Line 167:
:* ZZPATCH: '-substitute' now preserves line separators (instead of silently replacing them with the default line separator).
:* ZZPATCH: '-substitute' now preserves line separators (instead of silently replacing them with the default line separator).


; Changes in version 1.0.4, 2013-09-22:
; Changes in version 1.0.4, 2013-09-22
:* ZZFIND: The 'readable', 'writable', 'size' and 'modificationTime' tests were missing from the ANT task
:* ZZFIND: The 'readable', 'writable', 'size' and 'modificationTime' tests were missing from the ANT task


; Changes in version 1.0.3, 2013-09-22:
; Changes in version 1.0.3, 2013-09-22
:* ZZDIFF: Added the 'absentFileMode' option (a.k.a. as '-new-file' and '-unidirectional-new-file').
:* ZZDIFF: Added the 'absentFileMode' option (a.k.a. as '-new-file' and '-unidirectional-new-file').
:* SimpleLogging: VERBOSE messages were not printed because the OUT_HANDLER was misconfigured.
:* SimpleLogging: VERBOSE messages were not printed because the OUT_HANDLER was misconfigured.


; Changes in version 1.0.2, 2013-07-05:
; Changes in version 1.0.2, 2013-07-05
:* Fixed a major bug: 'SelectiveContentsTransfomer' executed BOTH delegates when the predicate evaluates to FALSE. This didn't hurt in many cases, but for 'zzpatch -update' it did.
:* Fixed a major bug: 'SelectiveContentsTransfomer' executed BOTH delegates when the predicate evaluates to FALSE. This didn't hurt in many cases, but for 'zzpatch -update' it did.


; Changes in version 1.0.1, 2013-06-14:
; Changes in version 1.0.1, 2013-06-14
:* Major refactoring of 'de.unkrig.commons'.
:* Major refactoring of 'de.unkrig.commons'.


; Version 1.0.0, 2012-10-03:
; Version 1.0.0, 2012-10-03
Initial release.
Initial release.
Please note that all contributions to unkrig.de may be edited, altered, or removed by other contributors. If you do not want your writing to be edited mercilessly, then do not submit it here.
You are also promising us that you wrote this yourself, or copied it from a public domain or similar free resource (see Unkrig.de:Copyrights for details). Do not submit copyrighted work without permission!
Cancel Editing help (opens in new window)