<?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>pkg</id>
  <formats>
    <format>tar</format>
  </formats>
  <fileSets>
    <fileSet>
      <directory>assemble</directory>
      <outputDirectory>/</outputDirectory>
      <lineEnding>unix</lineEnding>
      <includes>
        <include>bin/**</include>
        <include>package.json</include>
      </includes>
      <fileMode>0644</fileMode>
      <directoryMode>0755</directoryMode>
    </fileSet>
    <fileSet>
      <directory>dist</directory>
      <outputDirectory>dist</outputDirectory>
      <lineEnding>unix</lineEnding>
      <directoryMode>0755</directoryMode>
    </fileSet>
   <fileSet>
      <directory>node</directory>
      <outputDirectory>node</outputDirectory>
      <directoryMode>0755</directoryMode>
    </fileSet>
    <fileSet>
      <directory>${project.basedir}</directory>
      <outputDirectory>/</outputDirectory>
      <includes>
        <include>LICENSE</include>
        <include>NOTICE</include>
        <include>DISCLAIMER</include>
      </includes>
      <fileMode>0644</fileMode>
    </fileSet>
  </fileSets>
</assembly>
