<?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>release</id>
  <formats>
    <format>tar.gz</format>
  </formats>
  <includeBaseDirectory>false</includeBaseDirectory>

  <files> 
    <file> 
      <source>target/usergrid-tools-${artifact.version}.jar</source>
      <destName>${artifact.artifactId}.jar</destName>
      <outputDirectory>usergrid-tools-${artifact.version}</outputDirectory>
    </file> 
    <file> 
      <source>README.md</source>
      <outputDirectory>usergrid-tools-${artifact.version}</outputDirectory>
    </file> 
  </files>

  <fileSets> 
    <fileSet>
      <directory>src/main/dist</directory> 
      <outputDirectory>usergrid-tools-${artifact.version}</outputDirectory>
    </fileSet>
  </fileSets>

</assembly>
