<?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.

-->
<assembly>
    <id>all-bin</id>
    <formats>
        <format>dir</format>
        <format>zip</format>
    </formats>
    <baseDirectory>apache-iotdb-${project.version}-all-bin</baseDirectory>
    <dependencySets>
        <dependencySet>
            <includes>
                <include>*:iotdb-server:zip:*</include>
                <include>*:iotdb-cli:zip:*</include>
                <include>*:iotdb-confignode:zip:*</include>
            </includes>
            <outputDirectory>${file.separator}</outputDirectory>
            <outputFileNameMapping>${artifact.artifactId}.${artifact.extension}</outputFileNameMapping>
            <unpack>true</unpack>
            <unpackOptions>
                <excludes>
                    <exclude>tools/**</exclude>
                    <exclude>conf/**</exclude>
                    <exclude>sbin/**</exclude>
                </excludes>
            </unpackOptions>
        </dependencySet>
    </dependencySets>
    <fileSets>
        <fileSet>
            <outputDirectory>conf</outputDirectory>
            <directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf</directory>
        </fileSet>
        <fileSet>
            <outputDirectory>conf</outputDirectory>
            <directory>${maven.multiModuleProjectDirectory}/confignode/src/assembly/resources/conf</directory>
        </fileSet>
        <fileSet>
            <outputDirectory>conf</outputDirectory>
            <directory>${maven.multiModuleProjectDirectory}/node-commons/src/assembly/resources/conf</directory>
        </fileSet>
        <fileSet>
            <outputDirectory>sbin</outputDirectory>
            <directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/sbin</directory>
            <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
            <outputDirectory>sbin</outputDirectory>
            <directory>${maven.multiModuleProjectDirectory}/confignode/src/assembly/resources/sbin</directory>
            <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
            <outputDirectory>sbin</outputDirectory>
            <directory>${maven.multiModuleProjectDirectory}/node-commons/src/assembly/resources/sbin</directory>
            <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
            <outputDirectory>tools</outputDirectory>
            <directory>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/tools</directory>
            <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
            <outputDirectory>sbin</outputDirectory>
            <directory>${maven.multiModuleProjectDirectory}/cli/src/assembly/resources/sbin</directory>
            <fileMode>0755</fileMode>
        </fileSet>
        <fileSet>
            <outputDirectory>tools</outputDirectory>
            <directory>${maven.multiModuleProjectDirectory}/cli/src/assembly/resources/tools</directory>
            <fileMode>0755</fileMode>
        </fileSet>
        <!--        <fileSet>-->
        <!--            <outputDirectory>datanode</outputDirectory>-->
        <!--            <directory>${maven.multiModuleProjectDirectory}/distribution/target/apache-iotdb-${project.version}-all-bin/apache-iotdb-${project.version}-all-bin/datanode</directory>-->
        <!--        </fileSet>-->
        <!--        <fileSet>-->
        <!--            <outputDirectory>confignode</outputDirectory>-->
        <!--            <directory>${maven.multiModuleProjectDirectory}/distribution/target/apache-iotdb-${project.version}-all-bin/apache-iotdb-${project.version}-all-bin/confignode</directory>-->
        <!--        </fileSet>-->
    </fileSets>
    <!--    <files>-->
    <!--        <file>-->
    <!--            <source>${maven.multiModuleProjectDirectory}/server/src/assembly/resources/conf/datanode-env.sh</source>-->
    <!--            <destName>datanode/conf/datanode-env.sh</destName>-->
    <!--            <fileMode>0755</fileMode>-->
    <!--        </file>-->
    <!--    </files>-->
    <componentDescriptors>
        <componentDescriptor>common-files.xml</componentDescriptor>
    </componentDescriptors>
</assembly>
