Learn how easy it is to sync an existing GitHub or Google Code repo to a SourceForge project! See Demo

Close

#726 zip task should create a folder

closed-fixed
Charles Chan
Tasks (408)
5
2010-04-10
2010-04-03
fmhome
No

The current zip task in Nant v0.90

In the following example;
zipfile should create a folder structure ( ${root.dir}/${which.platform} ) with the zip file in that folder.
Currently, one has to use the mkdir task first to create the folder structure ${root.dir}/${which.platform}

<zip zipfile="${root.dir}/${archive}/test.zip">
<fileset basedir="${stage.dir}">
<include name="**/**"/>
</fileset>
</zip>

Discussion

  • Dominik Guder
    Dominik Guder
    2010-04-03

    I know that this would be helpfull, but IMHO when you are zipping a folder (in windows) with winzip when you won't get this main directory added to zip.
    But you might take a look into docu:
    http://nant.sourceforge.net/release/latest/help/types/zipfileset.html
    use
    <fileset basedir="${stage.dir}" prefix="${which.platform}"> to create your toplevel directory
    hth Dominik

     
  • fmhome
    fmhome
    2010-04-05

    Sorry for the confusion here...
    Let me clarify this issue.

    The issue is with zipfile attribute of zip task.
    <zip zipfile="${root.dir}/${archive}/test.zip">

    When the task is excuted, the task doesn't create the ${root.dir}/${archive} folder structure and fail, unless the structure is already there.
    Sometime, users want to put the final zip file in a different folder. Otherwise one has to use mkdir to create the dir structure first then call the zip task.

    IMO... This is an un-necesary additional step.

     
  • Dominik Guder
    Dominik Guder
    2010-04-05

    Hi,

    I see your point, but I don't see that zip task is responsible to create any parent directories if they not exists. Maybe someone will see this different, but zip task should deal with zip files not with dir layout.

    So I don't see any needs to change this. (This will also duplicate code.)

     
  • fmhome
    fmhome
    2010-04-09

    I understand what you are trying to say but, I think the code should be consistent across the board. If you look at the "Copy Task"

    It does the same and create the folder structure, if it doesn't exist already. Eventhough, you are copying 1 file.

    Also, to make my case stronger. The same zip task in ant creates the folder structure as well. Take a look at the ant examples here...

    http://ant.apache.org/manual/CoreTasks/zip.html

    Also, the NAnt zip task do not have a proper error message when it fails if the directory structure is not created in advance.

    I would and I am sure quite a few more people would appreciate if this can be modified.

    Thanks.

     
  • Charles Chan
    Charles Chan
    2010-04-09

    • assigned_to: nobody --> cchan_qa
     
  • Dominik Guder
    Dominik Guder
    2010-04-10

    Hi,

    that's ok.
    In addition you also might check "CompilerBase.cs".
    Currently output dir must be created in advance. If not, a simple <csc> task will fail

     
  • Charles Chan
    Charles Chan
    2010-04-10

    Fixed in CVS:
    src/NAnt.Compression/Tasks/ZipTask.cs: 1.42
    tests/NAnt.Compression/Tasks/ZipTaskTest.cs: 1.14

    Please try in the next NAnt release.

    Dominik: I will create a separate issue for CompileBase.cs

     
  • Charles Chan
    Charles Chan
    2010-04-10

    • status: open --> closed-fixed
     
  • fmhome
    fmhome
    2010-04-10

    Thanks to everyone who were involved and for considering to fix this as an improvement.