public
Description: A Groovy-based DSL for Liquibase (with a Perl driver)
Homepage:
Clone URL: git://github.com/RobertFischer/liquibase-dsl.git
Click here to lend your support to: liquibase-dsl and make a donation at www.pledgie.com !
name age message
file .gitignore Mon Mar 23 13:55:34 -0700 2009 Fixing broken includeAll() due to malformed URL... [mbjarland]
file BUILD.txt Sat Feb 21 08:10:29 -0800 2009 cosmetic changes (compile-target is internal no... [Argelbargel]
file COPYING Fri Aug 15 17:38:05 -0700 2008 LGPL stuff. Going with the LGPL because that i... [RobertFischer]
file COPYING.LESSER Fri Aug 15 17:38:05 -0700 2008 LGPL stuff. Going with the LGPL because that i... [RobertFischer]
file GROOVY.README Sun Aug 24 12:23:52 -0700 2008 Added one word to GROOVY.README to make it more... [RobertFischer]
file LICENSE.HEADER Sat Aug 16 05:57:07 -0700 2008 Fixed a spelling error in a file, updated lbdsl... [RobertFischer]
file README Sat Feb 21 08:09:01 -0800 2009 fixed formatting of README Signed-off-by: Robe... [Argelbargel]
file TODO Fri Oct 24 14:01:51 -0700 2008 Crap. Need to remove a bunch of println statem... [RobertFischer]
file build.xml Sat Feb 21 08:10:29 -0800 2009 cosmetic changes (compile-target is internal no... [Argelbargel]
file classpath Tue Aug 19 21:52:12 -0700 2008 Executing XML migrations is working just fine. ... [RobertFischer]
file dependencies.xml Fri Apr 10 16:56:01 -0700 2009 Working on enabling preconditions for the datab... [mbjarland]
directory eg/ Sun Aug 17 10:14:03 -0700 2008 Changed SampleChangeLog to reflect the XML chan... [RobertFischer]
file lbdsl Sat Aug 16 07:54:26 -0700 2008 Updated the README to be more useful, reduced t... [RobertFischer]
directory lib/ Sun Oct 05 09:21:54 -0700 2008 Now uses the system user name as the default name. [RobertFischer]
file maker Sat Feb 21 08:09:16 -0800 2009 Build finally works. Changed maker and tester s... [Argelbargel]
file runner Tue Aug 19 21:52:12 -0700 2008 Executing XML migrations is working just fine. ... [RobertFischer]
directory src/ Fri Apr 10 16:56:22 -0700 2009 1) Failed preconditions on the DatabaseChangeLo... [mbjarland]
directory test/ Wed Oct 22 13:49:52 -0700 2008 The codebase works. Now we just need a bit mor... [RobertFischer]
file tester Sat Feb 21 08:09:16 -0800 2009 Build finally works. Changed maker and tester s... [Argelbargel]
README
+------------------------+
| Intention of this fork |
+------------------------+

As I kept struggling with the provided maker.sh i decided to try to add an ant-based-way to build the Liquibase-DSL jar. 

To keep it compatible to maker.sh it re-uses an existing Groovy-Installation (and the libraries provided in the 
lib-directory below the root).
If you don't have groovy installed and don't want to download all the other dependencies yourself, the build tries to 
resolve them (including the groovy-compiler) with ivy, so that all you need is java (jdk) and ant. Should even work on 
windows :-)


+--------------------------+
| What is Liquibase        |
+--------------------------+

Liquibase is a database migration tool which allows non-linear development changesets, easy migration, and advanced 
business logic.  It is, in short, an awesome solution for the problem of database management.  Don't believe me?  See 
the presentation at http://www.liquibase.org/swf/overview_long/LiquiBase%20TechTalk.html to be convinced.  

There's just two problems with Liquibase -- there's simply too much XML as it stands, and it's nontrivial to extend.

This project seeks to remedy that.  It provides the architecture for pluggable database change log formats, and comes 
packaged with a Groovy builder-based approach (what some might call a "DSL").  For details on the Groovy builder, see 
GROOVY.README.  It also provides easy extension points for new commands, new predicates, and new database refactorings.


It is liscensed under the LGPL, because that is what Liquibase is liscened under.  For details, see COPYING.LESSER.

For more information or to hire the developer, contact Robert Fischer at robert dot fischer _at_ smokejumperit dot com.  
You can read more about him at his blog (http://enfranchisedmind.com/blog) or at his Twitter stream 
(http://twitter.com/RobertFischer).  His motivation for developing these things is so that he can implement an 
"autoliquibase" Grails plugin that transparently manages database changes and makes creating new migrations exceedingly 
easy.

+-------+
| USAGE |
+-------+

The file "lbdsl" is the driver for this project.  Its jobs is to basically make sure your environment is set up right, 
and then to execute the appropate command.  

+----------+
| ENV VARS |
+----------+

  * LBDSL_HOME: The home directory where the JAR will be assumed to live (by default) and the root of the properties 
  files structure (see "CUSTOMIZATION").  The directory will be created if it does not already exist.  Defaults to 
  "~/.lbdsl".
  * LBDSL_JAR: The location of the Liquibase-DSL jar file.  Defaults to $LBDSL_HOME/lbdsl.jar
  * LBDSL_CLASSPATH: The classpath to use when executing Liquibase-DSL.  The Liquibase-DSL jar file need not be 
  specified in this classpath.
  * JAVA_CMD: The command to use for Java.  Defaults to "java".
  * JAVA_OPTS: The options to specify to the Java command.  Defaults to "-Xmx1024m -Xms256m".
  * CLASSPATH: If set, appended after LBDSL_CLASSPATH to for the application classpath.

+----------+
| COMMANDS |
+----------+

  * hello-world: Simplest command to demonstrate that the driver is working.
  * migrate: Apples a change log.

+---------------+
| CUSTOMIZATION |
+---------------+
One of the things "lbdsl" does is create a directory specified by the LBDSL_HOME environment variable: that directory is 
where configuration properties can be dropped.  Any file in that directory (or in a subdirectory of that directory) 
which ends in ".groovy" will be eval'ed and it will expect to get a map back.  Any file in that directory (or in a 
subdirectory of that directory) that ends in ".properties" will be expected to be a "properties" file, as defined by 
java.util.Properties#load(InputStream).  Any file in that directory (or in a subdirectory of that directory) that ends 
in ".xml" will be expected to be a properties XML file, as defined by java.util.Properties#loadFromXML(InputStream).  
All of those properties, taken together, constitute the properties for lbdsl, which provide extension points, so you can 
write your own command, provide custom changesets, and the like.

+------------+
| PROPERTIES |
+------------+

  * lbdsl.home: The directory corresponding to LBDSL_HOME.
  * lbdsl.packages.cmd: Comma-delimited packages to search when looking up commands in order of priority.  The package 
  "liquibase.dsl.command" will always be searched first.
      e.g. lbdsl.packages.cmd=com.my.project.commands.package1,com.my.projects.commands.package2
  * lbdsl.parser.suffix.*: Specifies that the suffix (given after "lbdsl.parser.suffix.") should map to the given parser 
  class.
      e.g. lbdsl.parser.suffix.foo=com.my.project.parser.AwesomeChangeLogParser
  * lbdsl.db.driverClass: The driver class to use for database work
  * lbdsl.db.username: The username to log into the database with
  * lbdsl.db.password: The password to log into the database with
  * lbdsl.db.url: The connection string for the database