Craig Swing
Craig Swing

Reputation: 8162

Remove a directory when unzipping

I am unpacking a zip file into a directory. The zip file has an extra top level directory that I don't want in the unzipped destination.

task unpackDojoSource(type: Copy) {
    new File("build/dojo/src").mkdirs()
    from(zipTree(dojoSource)) {
        eachFile { details -> details.path = 
           details.path.substring(details.relativePath.segments[0].length()) } 
    } into "build/dojo/src"
}

The task produces the following output

/dijit
/dojo
/dojo-release-1.7.2
   /dijit
   /dojo
   /dojox
   /util
/dojox
/util

Is there a way I can prevent the dojo-release directory from being created?

Ref: http://gradle.markmail.org/thread/x6gmbrhhen63rybe#query:+page:1+mid:lws7nlqcncjumnvs+state:results

Upvotes: 2

Views: 2359

Answers (2)

xMort
xMort

Reputation: 1735

I just stumble upon the same problem. Only thing you need to do is to add includeEmptyDirs = false into your copy spec like this:

task unpackDojoSource(type: Copy) {
    new File("build/dojo/src").mkdirs()
    from(zipTree(dojoSource)) {
        eachFile { details -> details.path = 
           details.path.substring(details.relativePath.segments[0].length()) } 
    } into "build/dojo/src"
    includeEmptyDirs = false
}

The resulting structure will not contain the empty directories left by flattening.

Upvotes: 3

Glen
Glen

Reputation: 682

I've just ran across this myself. I worked around it by doing a delete afterwards. Less than ideal but still effective.

    delete "dojo-release-1.7.2"

Upvotes: 2

Related Questions