<?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}/ivysettings.properties"/>
    <settings defaultResolver="projects"/>
    <caches defaultCacheDir="${ivy.settings.dir}/ivy-cache" />

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

    <parsers>
	<sigil-parser/>
    </parsers>

    <resolvers>
	<sigil-resolver name="sigil" config="${ivy.settings.dir}/sigil-repos.properties" />
        <filesystem name="projects">
            <artifact pattern="${repository.dir}/[artifact]-[revision].[ext]" />
            <ivy pattern="${repository.dir}/[module]-[revision].xml" />
        </filesystem>
        <!--
        <ibiblio name="libraries" m2compatible="true" usepoms="false" />
        -->
    </resolvers>
    <modules>
        <module organisation="sigil" name="*" resolver="sigil"/>
    </modules>
</ivysettings>
