<?xml version="1.0">
<!--
  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.
-->
<ivysettings>
  <properties file="${ivy.settings.dir}/build.properties"/>
  <caches defaultCacheDir="${cache.dir}" />

  <settings defaultResolver="local" circularDependencyStrategy="error" />

  <classpath file="${sigil-ivy-plugin.jar}" />
  <typedef name="sigil-parser" classname="org.apache.felix.sigil.ivy.SigilParser" />
  <typedef name="sigil" classname="org.apache.felix.sigil.ivy.SigilResolver" />

  <parsers>
    <sigil-parser config="${ivy.settings.dir}/sigil-repos.properties"
    		quiet="true"/>
  </parsers>

  <resolvers>
    <sigil name="sigil"
	   config="${ivy.settings.dir}/sigil-repos.properties"
	   extractBCP="true"/>

    <filesystem name="local">
      <ivy pattern="${repository.dir}/local/[module]-[revision].xml" />
      <artifact pattern="${repository.dir}/local/[artifact]-[revision].[ext]" />
    </filesystem>

    <filesystem name="shared">
      <ivy pattern="${repository.dir}/shared/[module]-[revision].xml" />
      <artifact pattern="${repository.dir}/shared/[module]/[artifact]-[revision].[ext]" />
    </filesystem>
  </resolvers>

  <modules>
    <module organisation="sigil" resolver="sigil"/>
  </modules>
</ivysettings>
