<?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.
-->
<component>
    <fileSets>
      <!-- Cherry-pick files from the expanded Karaf distribution -->
      <fileSet>
          <directory>target/dependencies/win/apache-karaf-${karaf.version}</directory>
          <outputDirectory>/</outputDirectory>
          <excludes>
             <exclude>**/demos/**</exclude>
             <exclude>etc/system.properties</exclude>
             <exclude>etc/org.apache.karaf.features.cfg</exclude>
             <exclude>etc/org.apache.karaf.features.obr.cfg</exclude>
             <exclude>etc/org.ops4j.pax.logging.cfg</exclude>
             <exclude>etc/org.ops4j.pax.url.mvn.cfg</exclude>
             <exclude>etc/users.properties</exclude>
             <exclude>etc/custom.properties</exclude>
             <exclude>etc/jre.properties</exclude>
             <exclude>etc/jre.properties.cxf</exclude>
             <exclude>system/**</exclude>
             <exclude>LICENSE</exclude>
             <exclude>NOTICE</exclude>
             <exclude>README</exclude>
             <exclude>RELEASE-NOTES</exclude>
             <exclude>karaf-manual*</exclude>
          </excludes>
      </fileSet>

      <!-- Copy license and other files from root -->
      <fileSet>
          <directory>${basedir}/../..</directory>
          <outputDirectory>/</outputDirectory>
          <includes>
              <include>README</include>
              <include>RELEASE*</include>
          </includes>
          <lineEnding>dos</lineEnding>
          <fileMode>0644</fileMode>
      </fileSet>

      <!-- Copy over everything that needs to get dos line endings -->
      <fileSet>
          <directory>target/shared/etc</directory>
          <outputDirectory>/etc/</outputDirectory>
          <lineEnding>dos</lineEnding>
          <fileMode>0644</fileMode>
      </fileSet>

      <fileSet>
          <directory>target/shared/licenses</directory>
          <outputDirectory>/licenses/</outputDirectory>
          <lineEnding>dos</lineEnding>
          <fileMode>0644</fileMode>
      </fileSet>

      <fileSet>
          <directory>target/classes/etc</directory>
          <outputDirectory>/etc/</outputDirectory>
          <includes>
              <include>*.*</include>
          </includes>
          <lineEnding>dos</lineEnding>
          <fileMode>0644</fileMode>
      </fileSet>
    </fileSets>

    <files>
        <file>
            <source>${basedir}/target/dependencies/win/apache-karaf-${karaf.version}/bin/karaf.bat</source>
            <outputDirectory>/bin/</outputDirectory>
            <destName>servicemix.bat</destName>
            <fileMode>0755</fileMode>
            <lineEnding>dos</lineEnding>
        </file>
        <file>
            <source>${basedir}/target/maven-shared-archive-resources/META-INF/LICENSE</source>
            <outputDirectory>/</outputDirectory>
            <destName>LICENSE</destName>
            <fileMode>0644</fileMode>
            <lineEnding>dos</lineEnding>
        </file>
        <file>
            <source>${basedir}/target/maven-shared-archive-resources/META-INF/NOTICE</source>
            <outputDirectory>/</outputDirectory>
            <destName>NOTICE</destName>
            <fileMode>0644</fileMode>
            <lineEnding>dos</lineEnding>
        </file>
    </files>

</component>
