<?xml version="1.0" encoding="UTF-8"?>
<!--
    Licensed to the Apache Software Foundation (ASF) under one
    or more contributor license agreements.  See the NOTICE file
    distributed with this work for additional information
    regarding copyright ownership.  The ASF licenses this file
    to you under the Apache License, Version 2.0 (the
    "License"); you may not use this file except in compliance
    with the License.  You may obtain a copy of the License at
    
     http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing,
    software distributed under the License is distributed on an
    "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
    KIND, either express or implied.  See the License for the
    specific language governing permissions and limitations
    under the License.
-->

<!-- $Rev$ $Date$ -->

<assembly>
    <id>bin</id>
    
    <formats>
        <format>tar.gz</format>
        <format>zip</format>
    </formats>
    
    <fileSets>
        <fileSet>
            <directory>src/main/underlay</directory>
            <outputDirectory>/</outputDirectory>
            <includes>
                <include>*.txt</include>
            </includes>
        </fileSet>
        
        <fileSet>
            <directory>src/main/underlay/bin</directory>
            <outputDirectory>bin</outputDirectory>
            <includes>
                <include>gsh.bat</include>
            </includes>
            <lineEnding>dos</lineEnding>
        </fileSet>
        
        <fileSet>
            <directory>src/main/underlay/bin</directory>
            <outputDirectory>bin</outputDirectory>
            <includes>
                <include>gsh</include>
            </includes>
            <lineEnding>unix</lineEnding>
            <fileMode>0755</fileMode>
        </fileSet>
        
        <fileSet>
            <directory>src/main/underlay/etc</directory>
            <outputDirectory>etc</outputDirectory>
        </fileSet>
    </fileSets>
    
    <dependencySets>
        <dependencySet>
            <outputDirectory>lib</outputDirectory>
            <useStrictFiltering>true</useStrictFiltering>
            <excludes>
                <exclude>org.apache.geronimo.gshell:gshell-bootstrap</exclude>
            </excludes>
        </dependencySet>
        
        <dependencySet>
            <outputDirectory>lib/boot</outputDirectory>
            <outputFileNameMapping>gshell-bootstrap.jar</outputFileNameMapping>
            <useStrictFiltering>true</useStrictFiltering>
            <includes>
                <include>org.apache.geronimo.gshell:gshell-bootstrap</include>
            </includes>
        </dependencySet>
    </dependencySets>
</assembly>
