tlberglund / groovy-liquibase

Yet Another Groovy DSL for Liquibase
Other
85 stars 66 forks source link

IncludeAll tag #4

Closed ErwinvanBrandwijk closed 13 years ago

ErwinvanBrandwijk commented 13 years ago

Liquibase has an includeAll tag, it isn't possible in groovy-liquibase.

It could be make as his own method or add it to include.

IncludeAll should only read the groovy files in a directory, NOT a subdirectory.

includeAll(path: "/path/") OR include(path: "/path/")

ErwinvanBrandwijk commented 13 years ago

Possible solution in my fork.

void include(Map params = [:]) {
  def files = []

  if(params.path){
      // pass a directory
      def includedChangeLogPath = params.path

      // get all files ending with .groovy
      new File(includedChangeLogPath).eachFileMatch(~/.*.groovy/) { file->
          files << file.getPath()
      }

      // order the files, alphabetic
      files.sort()

  }else if (params.file){
      // pass a file
      files << params.file
  }
  files.each {
      def parser = ChangeLogParserFactory.getInstance().getParser(it, resourceAccessor)
      def includedChangeLog = parser.parse(it, null, resourceAccessor)
      includedChangeLog?.changeSets.each { changeSet ->
          databaseChangeLog.addChangeSet(changeSet)
      }
      includedChangeLog?.preconditionContainer?.nestedPreconditions.each { precondition ->
          databaseChangeLog.preconditionContainer.addNestedPrecondition(precondition)
      }
  }
}
ErwinvanBrandwijk commented 13 years ago

Accepted in master and working